first commit
This commit is contained in:
2
modules/edocument_ubl/__init__.py
Normal file
2
modules/edocument_ubl/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
BIN
modules/edocument_ubl/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
modules/edocument_ubl/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/edocument_ubl/__pycache__/account.cpython-311.pyc
Normal file
BIN
modules/edocument_ubl/__pycache__/account.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/edocument_ubl/__pycache__/document.cpython-311.pyc
Normal file
BIN
modules/edocument_ubl/__pycache__/document.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/edocument_ubl/__pycache__/edocument.cpython-311.pyc
Normal file
BIN
modules/edocument_ubl/__pycache__/edocument.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/edocument_ubl/__pycache__/exceptions.cpython-311.pyc
Normal file
BIN
modules/edocument_ubl/__pycache__/exceptions.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/edocument_ubl/__pycache__/party.cpython-311.pyc
Normal file
BIN
modules/edocument_ubl/__pycache__/party.cpython-311.pyc
Normal file
Binary file not shown.
22
modules/edocument_ubl/account.py
Normal file
22
modules/edocument_ubl/account.py
Normal file
@@ -0,0 +1,22 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.model import fields
|
||||
from trytond.pool import PoolMeta
|
||||
|
||||
|
||||
class InvoiceEdocumentStart(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice.edocument.start'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.format.selection.append(
|
||||
('edocument.ubl.invoice', "UBL"))
|
||||
|
||||
@fields.depends('format')
|
||||
def get_templates(self):
|
||||
templates = super().get_templates()
|
||||
if self.format == 'edocument.ubl.invoice':
|
||||
templates.append(('2', '2'))
|
||||
return templates
|
||||
10
modules/edocument_ubl/account.xml
Normal file
10
modules/edocument_ubl/account.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data depends="account_invoice">
|
||||
<record model="ir.action.wizard" id="account_invoice.edocument">
|
||||
<field name="active" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
19
modules/edocument_ubl/document.py
Normal file
19
modules/edocument_ubl/document.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
|
||||
|
||||
class Incoming(metaclass=PoolMeta):
|
||||
__name__ = 'document.incoming'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.type.selection.append(
|
||||
('ubl_invoice', "UBL Invoice/Credit Note"))
|
||||
|
||||
def _process_ubl_invoice(self):
|
||||
pool = Pool()
|
||||
Invoice = pool.get('edocument.ubl.invoice')
|
||||
return Invoice.parse(self.data)
|
||||
1234
modules/edocument_ubl/edocument.py
Normal file
1234
modules/edocument_ubl/edocument.py
Normal file
File diff suppressed because it is too large
Load Diff
8
modules/edocument_ubl/exceptions.py
Normal file
8
modules/edocument_ubl/exceptions.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.exceptions import UserError
|
||||
|
||||
|
||||
class InvoiceError(UserError):
|
||||
pass
|
||||
63
modules/edocument_ubl/locale/bg.po
Normal file
63
modules/edocument_ubl/locale/bg.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
72
modules/edocument_ubl/locale/ca.po
Normal file
72
modules/edocument_ubl/locale/ca.po
Normal file
@@ -0,0 +1,72 @@
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr "Edocument Factura UBL"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
"No s'ha pogut trobar l'empresa per:\n"
|
||||
"%(company)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr "Tipus de codi d'abonament no soportat: \"%(type_code)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr "No s'ha pogut trobar una moneda amb codi \"%(code)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
"L'import de l'impost %(tax_amount)s de la factura \"%(invoice)s\" és "
|
||||
"diferent del total d'impostos %(tax_total)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
"L'import total %(total_amount)s de la factura \"%(invoice)s\" és diferent de"
|
||||
" l'import %(amount)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr "Tipus de codi de factura no suportat: \"%(type_code)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
"No s'ha trobat un imopst per:\n"
|
||||
"%(tax_category)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr "No s'ha pogut trobar una unitat amb codi UNECE \"%(code)s."
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr "UBL"
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr "Factura/Abonament UBL"
|
||||
63
modules/edocument_ubl/locale/cs.po
Normal file
63
modules/edocument_ubl/locale/cs.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
71
modules/edocument_ubl/locale/de.po
Normal file
71
modules/edocument_ubl/locale/de.po
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr "E-Dokument UBL-Rechnung"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
"Das Unternehmen konnte nicht gefunden werden:\n"
|
||||
"%(company)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr "Nicht unterstützter Storno-Rechnungstyp \"%(type_code)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr "Es konnte keine Währung mit dem Code \"%(code)s\" gefunden werden."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
"Der Steuerbetrag %(tax_amount)s der Rechnung \"%(invoice)s\" weicht vom "
|
||||
"Steuergesamtbetrag %(tax_total)s ab."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
"Der Gesamtbetrag %(total_amount)s der Rechnung \"%(invoice)s\" weicht vom "
|
||||
"Betrag %(amount)s ab."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr "Nicht unterstützter Rechnungstyp \"%(type_code)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
"Keine Steuer gefunden für:\n"
|
||||
"%(tax_category)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr "Es konnte keine Einheit mit dem UNECE-Code \"%(code)s\" gefunden werden."
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr "UBL"
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr "UBL-Rechnung/Storno-Rechnung"
|
||||
72
modules/edocument_ubl/locale/es.po
Normal file
72
modules/edocument_ubl/locale/es.po
Normal file
@@ -0,0 +1,72 @@
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr "Edocumento Factura UBL"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
"No se ha podido encontrar la empresa para:\n"
|
||||
"%(company)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr "Tipo de código de abono no soportado: \"%(type_code)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr "No se ha podido encontrar una moneda con código \"%(code)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
"El importe del impuesto %(tax_amount)s de la factura \"%(invoice)s\" es "
|
||||
"distinto del total de impuestos %(tax_total)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
"El importe total %(total_amount)s de la factura \"%(invoice)s\" es distinto "
|
||||
"del importe %(amount)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr "Tipo de código de factura no soportado: \"%(type_code)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
"No se ha podido encontrar un impuesto para:\n"
|
||||
"%(tax_category)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr "No se ha podido encontrar una unidad con código UNECE \"%(code)s\"."
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr "UBL"
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr "Factura/Abono UBL"
|
||||
63
modules/edocument_ubl/locale/es_419.po
Normal file
63
modules/edocument_ubl/locale/es_419.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/et.po
Normal file
63
modules/edocument_ubl/locale/et.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/fa.po
Normal file
63
modules/edocument_ubl/locale/fa.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/fi.po
Normal file
63
modules/edocument_ubl/locale/fi.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
72
modules/edocument_ubl/locale/fr.po
Normal file
72
modules/edocument_ubl/locale/fr.po
Normal file
@@ -0,0 +1,72 @@
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr "Facture électronique UBL"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
"Impossible de trouver la société pour :\n"
|
||||
"%(company)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr "Code de type de note de crédit non pris en charge « %(type_code)s »."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr "Impossible de trouver une devise avec le code « %(code)s »."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
"Le montant de la taxe %(tax_amount)s de la facture « %(invoice)s » est "
|
||||
"différent du total de la taxe %(tax_total)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
"Le montant total %(total_amount)s de la facture « %(invoice)s » est "
|
||||
"différent du montant %(amount)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr "Code de type de facture non pris en charge « %(type_code)s »."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
"Impossible de trouver la taxe pour :\n"
|
||||
"%(tax_category)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr "Impossible de trouver une unité avec le code UNECE « %(code)s »."
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr "UBL"
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr "Facture/Note de crédit UBL"
|
||||
63
modules/edocument_ubl/locale/hu.po
Normal file
63
modules/edocument_ubl/locale/hu.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/id.po
Normal file
63
modules/edocument_ubl/locale/id.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/it.po
Normal file
63
modules/edocument_ubl/locale/it.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/lo.po
Normal file
63
modules/edocument_ubl/locale/lo.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/lt.po
Normal file
63
modules/edocument_ubl/locale/lt.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
72
modules/edocument_ubl/locale/nl.po
Normal file
72
modules/edocument_ubl/locale/nl.po
Normal file
@@ -0,0 +1,72 @@
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr "E-document UBL Factuur"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
"Kan het bedrijf niet vinden voor:\n"
|
||||
"%(company)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr "Creditnota code \"%(type_code)s\" is niet ondersteund."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr "Er kon geen valuta gevonden worden met code \"%(code)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
"Het belastingbedrag %(tax_amount)s van de factuur \"%(invoice)s\" verschilt "
|
||||
"van het totale belastingbedrag %(tax_total)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
"Het totaalbedrag %(total_amount)s van de factuur \"%(invoice)s\" verschilt "
|
||||
"van het bedrag %(amount)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr "Factuur code \"%(type_code)s\" is niet ondersteund."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
"Geen belasting gevonden voor:\n"
|
||||
"%(tax_category)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr "Er kon geen eenheid met UNECE-code \"%(code)s\" worden gevonden."
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr "UBL"
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr "UBL-factuur/creditnota"
|
||||
63
modules/edocument_ubl/locale/pl.po
Normal file
63
modules/edocument_ubl/locale/pl.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/pt.po
Normal file
63
modules/edocument_ubl/locale/pt.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/ro.po
Normal file
63
modules/edocument_ubl/locale/ro.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/ru.po
Normal file
63
modules/edocument_ubl/locale/ru.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/sl.po
Normal file
63
modules/edocument_ubl/locale/sl.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/tr.po
Normal file
63
modules/edocument_ubl/locale/tr.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/uk.po
Normal file
63
modules/edocument_ubl/locale/uk.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
63
modules/edocument_ubl/locale/zh_CN.po
Normal file
63
modules/edocument_ubl/locale/zh_CN.po
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "model:edocument.ubl.invoice,string:"
|
||||
msgid "Edocument Ubl Invoice"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_company_not_found"
|
||||
msgid ""
|
||||
"Could not find the company for:\n"
|
||||
"%(company)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_credit_note_type_code_unsupported"
|
||||
msgid "Unsupported credit note type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_currency_not_found"
|
||||
msgid "Could not find a currency with code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_tax_amount_different"
|
||||
msgid ""
|
||||
"The tax amount %(tax_amount)s of the invoice \"%(invoice)s\" is different "
|
||||
"from the tax total %(tax_total)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_total_amount_different"
|
||||
msgid ""
|
||||
"The total amount %(total_amount)s of the invoice \"%(invoice)s\" is "
|
||||
"different from the amount %(amount)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_invoice_type_code_unsupported"
|
||||
msgid "Unsupported invoice type code \"%(type_code)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_tax_not_found"
|
||||
msgid ""
|
||||
"Could not find tax for:\n"
|
||||
"%(tax_category)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_unit_not_found"
|
||||
msgid "Could not find a unit with UNECE code \"%(code)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:account.invoice.edocument.start,format:"
|
||||
msgid "UBL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:document.incoming,type:"
|
||||
msgid "UBL Invoice/Credit Note"
|
||||
msgstr ""
|
||||
33
modules/edocument_ubl/message.xml
Normal file
33
modules/edocument_ubl/message.xml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data grouped="1">
|
||||
<record model="ir.message" id="msg_invoice_type_code_unsupported">
|
||||
<field name="text">Unsupported invoice type code "%(type_code)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_credit_note_type_code_unsupported">
|
||||
<field name="text">Unsupported credit note type code "%(type_code)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_company_not_found">
|
||||
<field name="text">Could not find the company for:
|
||||
%(company)s</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_currency_not_found">
|
||||
<field name="text">Could not find a currency with code "%(code)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_unit_not_found">
|
||||
<field name="text">Could not find a unit with UNECE code "%(code)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_tax_not_found">
|
||||
<field name="text">Could not find tax for:
|
||||
%(tax_category)s</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_invoice_total_amount_different">
|
||||
<field name="text">The total amount %(total_amount)s of the invoice "%(invoice)s" is different from the amount %(amount)s.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_invoice_tax_amount_different">
|
||||
<field name="text">The tax amount %(tax_amount)s of the invoice "%(invoice)s" is different from the tax total %(tax_total)s.</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
133
modules/edocument_ubl/party.py
Normal file
133
modules/edocument_ubl/party.py
Normal file
@@ -0,0 +1,133 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
import re
|
||||
|
||||
from trytond.pool import PoolMeta
|
||||
|
||||
ISO6523_TYPES = {
|
||||
'fr_siren': '0002',
|
||||
'se_orgnr': '0007',
|
||||
'fr_siret': '0009',
|
||||
'fi_ytunnus': '0037',
|
||||
'ch_uid': '0183',
|
||||
'ee_registrikood': '0191',
|
||||
'is_kennitala': '0196',
|
||||
'lt_pvm': '0200',
|
||||
'be_businessid': '0208',
|
||||
'fi_associationid': '0212',
|
||||
'fi_vat': '0213',
|
||||
'lv_vat': '0218',
|
||||
'eu_vat': '0223',
|
||||
}
|
||||
|
||||
EAS_TYPES = {
|
||||
'fr_siren': '0002',
|
||||
'se_orgnr': '0007',
|
||||
'fr_siret': '0009',
|
||||
'fi_ytunnus': '0037',
|
||||
'ch_uid': '0183',
|
||||
'ee_registrikood': '0191',
|
||||
'is_kennitala': '0196',
|
||||
'lt_pvm': '0200',
|
||||
'be_businessid': '0208',
|
||||
'it_codicefiscale': '210',
|
||||
'fi_associationid': '0212',
|
||||
'fi_vat': '0213',
|
||||
'lv_vat': '0218',
|
||||
'hu_vat': '9910',
|
||||
'ad_vat': '9922',
|
||||
'al_vat': '9923',
|
||||
'be_vat': '9925',
|
||||
'bg_vat': '9926',
|
||||
'ch_vat': '9927',
|
||||
'cy_vat': '9928',
|
||||
'cz_vat': '9929',
|
||||
'de_vat': '9930',
|
||||
'ee_vat': '9931',
|
||||
'gb_vat': '9932',
|
||||
'gr_vat': '9933',
|
||||
'hr_vat': '9934',
|
||||
'ie_vat': '9935',
|
||||
'li_vat': '9936',
|
||||
'lt_vat': '9937',
|
||||
'lu_vat': '9938',
|
||||
'mc_vat': '9940',
|
||||
'me_vat': '9941',
|
||||
'mk_vat': '9942',
|
||||
'mt_vat': '9943',
|
||||
'nl_vat': '9944',
|
||||
'pl_vat': '9945',
|
||||
'pt_vat': '9946',
|
||||
'ro_vat': '9947',
|
||||
'rs_vat': '9948',
|
||||
'si_vat': '9949',
|
||||
'sk_vat': '9950',
|
||||
'sm_vat': '9951',
|
||||
'tr_vat': '9952',
|
||||
'va_vat': '9953',
|
||||
'fr_vat': '9957',
|
||||
'us_ein': '9959',
|
||||
}
|
||||
|
||||
|
||||
class Party(metaclass=PoolMeta):
|
||||
__name__ = 'party.party'
|
||||
|
||||
@property
|
||||
def identifier_iso6523(self):
|
||||
for identifier in self.identifiers:
|
||||
if identifier.iso_6523:
|
||||
return identifier
|
||||
|
||||
@property
|
||||
def identifier_eas(self):
|
||||
for identifier in self.identifiers:
|
||||
if identifier.eas:
|
||||
return identifier
|
||||
|
||||
|
||||
class Identifier(metaclass=PoolMeta):
|
||||
__name__ = 'party.identifier'
|
||||
|
||||
@property
|
||||
def iso_6523(self):
|
||||
return ISO6523_TYPES.get(self.type, '')
|
||||
|
||||
@property
|
||||
def _eas_type(self):
|
||||
if self.type == 'eu_vat':
|
||||
code = self.code[:2].lower()
|
||||
code = (code
|
||||
.replace('xi', 'gb')
|
||||
.replace('el', 'gr'))
|
||||
return f'{code}_vat'
|
||||
else:
|
||||
return self.type
|
||||
|
||||
@property
|
||||
def eas_code(self):
|
||||
return EAS_TYPES.get(self._eas_type, '')
|
||||
|
||||
@property
|
||||
def eas(self):
|
||||
if self.eas_code:
|
||||
if re.match(r'[a-z]{2}_vat', self._eas_type):
|
||||
country = self._eas_type[:2].replace('gr', 'el')
|
||||
if self.type == 'eu_vat':
|
||||
code = self.code[2:]
|
||||
else:
|
||||
code = self.code
|
||||
return f'{country}{code}'.lower()
|
||||
else:
|
||||
return self.code
|
||||
|
||||
@property
|
||||
def vatin(self):
|
||||
if re.match(r'[a-z]{2}_vat', self._eas_type):
|
||||
country = self._eas_type[:2].replace('gr', 'el')
|
||||
if self.type == 'eu_vat':
|
||||
code = self.code[2:]
|
||||
else:
|
||||
code = self.code
|
||||
return f'{country}{code}'.upper()
|
||||
123
modules/edocument_ubl/template/2/CreditNote.xml
Normal file
123
modules/edocument_ubl/template/2/CreditNote.xml
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<CreditNote
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:py="http://genshi.edgewall.org/"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<xi:include href="base.xml"/>
|
||||
<cbc:UBLVersionID py:if="not (specification or '').startswith('peppol')">2.4</cbc:UBLVersionID>
|
||||
<py:if test="specification == 'peppol-bis-3'">
|
||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
||||
</py:if>
|
||||
<cbc:ID>${this.invoice.number}</cbc:ID>
|
||||
<cbc:IssueDate>${this.invoice.invoice_date}</cbc:IssueDate>
|
||||
<cbc:DueDate>${max(l.maturity_date for l in this.invoice.lines_to_pay if l.maturity_date)}</cbc:DueDate>
|
||||
<cbc:CreditNoteTypeCode>${this.type_code}</cbc:CreditNoteTypeCode>
|
||||
<cbc:DocumentCurrencyCode>${this.invoice.currency.code}</cbc:DocumentCurrencyCode>
|
||||
<cbc:BuyerReference py:if="this.invoice.reference">${this.invoice.reference}</cbc:BuyerReference>
|
||||
<cac:OrderReference>
|
||||
<cbc:ID>${this.sale_reference or 'NA'}</cbc:ID>
|
||||
<cbc:SalesOrderID py:if="this.sale_number">${this.sale_number}</cbc:SalesOrderID>
|
||||
</cac:OrderReference>
|
||||
<cac:AdditionalDocumentReference py:for="document in this.additional_documents">
|
||||
<cbc:ID>${document['id']}</cbc:ID>
|
||||
<cbc:DocumentTypeCode py:if="document.get('code')">${document['code']}</cbc:DocumentTypeCode>
|
||||
<cbc:DocumentDescription py:if="document.get('description')">${document['description']}</cbc:DocumentDescription>
|
||||
<cac:Attachment py:if="document.get('code') != '130'">
|
||||
<py:choose test="document['type']">
|
||||
<py:when test="'binary'">
|
||||
<cbc:EmbeddedDocumentBinaryObject py:attrs="{'mimeCode': document['mimetype'], 'filename': document.get('filename')}">${document['binary']}</cbc:EmbeddedDocumentBinaryObject>
|
||||
</py:when>
|
||||
<py:when test="'text'">
|
||||
<cbc:EmbeddedDocument>${document['text']}</cbc:EmbeddedDocument>
|
||||
</py:when>
|
||||
<py:when test="'reference'">
|
||||
<cac:ExternalReference>
|
||||
<cbc:URI>${document['reference']}</cbc:URI>
|
||||
<cbc:FileName py:if="document.get('filename')">${document['filename']}</cbc:FileName>
|
||||
</cac:ExternalReference>
|
||||
</py:when>
|
||||
</py:choose>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
<cac:AccountingSupplierParty>
|
||||
${Party(this.accounting_supplier_party, this.accounting_supplier_address, this.accounting_supplier_tax_identifier, specification=specification)}
|
||||
</cac:AccountingSupplierParty>
|
||||
<cac:AccountingCustomerParty>
|
||||
${Party(this.accounting_customer_party, this.accounting_customer_address, this.accounting_customer_tax_identifier, identifications=[this.accounting_customer_party.identifier_iso6523] if (specification or '').startswith('peppol') else None, specification=specification)}
|
||||
</cac:AccountingCustomerParty>
|
||||
<py:choose test="(specification or '').startswith('peppol')">
|
||||
<py:when test="True">
|
||||
<cac:PaymentTerms py:if="this.invoice.payment_term and this.invoice.payment_term.description">
|
||||
<cbc:Note>${this.invoice.payment_term.description}</cbc:Note>
|
||||
</cac:PaymentTerms>
|
||||
</py:when>
|
||||
<py:otherwise>
|
||||
<cac:PaymentTerms py:for="line in this.invoice.lines_to_pay">
|
||||
<cbc:Note py:if="this.invoice.payment_term and this.invoice.payment_term.description">${this.invoice.payment_term.description}</cbc:Note>
|
||||
<cbc:Amount py:attrs="{'currencyID': this.invoice.currency.code}">${line.amount}</cbc:Amount>
|
||||
<cbc:PaymentDueDate>${line.maturity_date}</cbc:PaymentDueDate>
|
||||
</cac:PaymentTerms>
|
||||
</py:otherwise>
|
||||
</py:choose>
|
||||
<cac:TaxTotal py:for="group, lines, amount in this.taxes">
|
||||
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-amount}</cbc:TaxAmount>
|
||||
<cac:TaxSubtotal py:for="line in lines">
|
||||
<cbc:TaxableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-line.base}</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-line.amount}</cbc:TaxAmount>
|
||||
<cbc:Percent py:if="line.tax.type == 'percentage' and not (specification or '').startswith('peppol')">${format((line.tax.rate * 100).normalize(), 'f')}</cbc:Percent>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID py:if="line.tax.unece_category_code">${line.tax.unece_category_code}</cbc:ID>
|
||||
<cbc:Percent py:if="line.tax.type == 'percentage'">${format((line.tax.rate * 100).normalize(), 'f')}</cbc:Percent>
|
||||
<cbc:TaxExemptionReason py:if="line.tax.legal_notice">${line.tax.legal_notice}</cbc:TaxExemptionReason>
|
||||
<cac:TaxScheme py:if="line.tax.unece_code">
|
||||
<cbc:ID>${line.tax.unece_code}</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
</cac:TaxTotal>
|
||||
<cac:LegalMonetaryTotal>
|
||||
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-this.invoice.untaxed_amount}</cbc:LineExtensionAmount>
|
||||
<cbc:TaxExclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-this.invoice.untaxed_amount}</cbc:TaxExclusiveAmount>
|
||||
<cbc:TaxInclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-(this.invoice.untaxed_amount + this.invoice.tax_amount)}</cbc:TaxInclusiveAmount>
|
||||
<py:if test="this.invoice.total_amount != (this.invoice.untaxed_amount + this.invoice.tax_amount)">
|
||||
<cbc:PayableRoundingAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-(this.invoice.total_amount - this.invoice.untaxed_amount - this.invoice.tax_amount)}</cbc:PayableRoundingAmount>
|
||||
</py:if>
|
||||
<cbc:PayableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-this.invoice.total_amount}</cbc:PayableAmount>
|
||||
</cac:LegalMonetaryTotal>
|
||||
<cac:CreditNoteLine py:for="line_id, line in enumerate(this.lines, 1)">
|
||||
<cbc:ID>${line_id}</cbc:ID>
|
||||
<cbc:CreditedQuantity py:attrs="{'unitCode': line.unit.unece_code if line.unit and line.unit.unece_code else 'ZZ'}">${format(-Decimal(str(line.quantity)), 'f')}</cbc:CreditedQuantity>
|
||||
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-line.amount}</cbc:LineExtensionAmount>
|
||||
<cac:Item>
|
||||
<cbc:Description py:if="line.description">${line.description}</cbc:Description>
|
||||
<cbc:Name>${line.product_name or line.summary}</cbc:Name>
|
||||
<py:if test="line.product">
|
||||
<cac:SellersItemIdentification py:if="line.product.code">
|
||||
<cbc:ID>${line.product.code}</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<py:with vars="gtin=line.product.identifier_get(['ean', 'isbn', 'ismn'])">
|
||||
<cac:StandardItemIdentification py:if="gtin">
|
||||
<cbc:ID schemeID="0160">${gtin}</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
</py:with>
|
||||
</py:if>
|
||||
<cac:ClassifiedTaxCategory py:for="tax_line in line.invoice_taxes">
|
||||
<cbc:ID py:if="tax_line.tax.unece_category_code">${tax_line.tax.unece_category_code}</cbc:ID>
|
||||
<cbc:Percent py:if="tax_line.tax.type == 'percentage'">${format((tax_line.tax.rate * 100).normalize(), 'f')}</cbc:Percent>
|
||||
<cbc:TaxExemptionReason py:if="tax_line.tax.legal_notice">${tax_line.tax.legal_notice}</cbc:TaxExemptionReason>
|
||||
<cac:TaxScheme py:if="tax_line.tax.unece_code">
|
||||
<cbc:ID>${tax_line.tax.unece_code}</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.unit_price}</cbc:PriceAmount>
|
||||
</cac:Price>
|
||||
</cac:CreditNoteLine>
|
||||
</CreditNote>
|
||||
123
modules/edocument_ubl/template/2/Invoice.xml
Normal file
123
modules/edocument_ubl/template/2/Invoice.xml
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<Invoice
|
||||
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:py="http://genshi.edgewall.org/"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<xi:include href="base.xml"/>
|
||||
<cbc:UBLVersionID py:if="not (specification or '').startswith('peppol')">2.4</cbc:UBLVersionID>
|
||||
<py:if test="specification == 'peppol-bis-3'">
|
||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
||||
</py:if>
|
||||
<cbc:ID>${this.invoice.number}</cbc:ID>
|
||||
<cbc:IssueDate>${this.invoice.invoice_date}</cbc:IssueDate>
|
||||
<cbc:DueDate>${min(l.maturity_date for l in this.invoice.lines_to_pay if l.maturity_date)}</cbc:DueDate>
|
||||
<cbc:InvoiceTypeCode>${this.type_code}</cbc:InvoiceTypeCode>
|
||||
<cbc:DocumentCurrencyCode>${this.invoice.currency.code}</cbc:DocumentCurrencyCode>
|
||||
<cbc:BuyerReference py:if="this.invoice.reference">${this.invoice.reference}</cbc:BuyerReference>
|
||||
<cac:OrderReference>
|
||||
<cbc:ID>${this.sale_reference or 'NA'}</cbc:ID>
|
||||
<cbc:SalesOrderID py:if="this.sale_number">${this.sale_number}</cbc:SalesOrderID>
|
||||
</cac:OrderReference>
|
||||
<cac:AdditionalDocumentReference py:for="document in this.additional_documents">
|
||||
<cbc:ID>${document['id']}</cbc:ID>
|
||||
<cbc:DocumentTypeCode py:if="document.get('code')">${document['code']}</cbc:DocumentTypeCode>
|
||||
<cbc:DocumentDescription py:if="document.get('description')">${document['description']}</cbc:DocumentDescription>
|
||||
<cac:Attachment py:if="document.get('code') != '130'">
|
||||
<py:choose test="document['type']">
|
||||
<py:when test="'binary'">
|
||||
<cbc:EmbeddedDocumentBinaryObject py:attrs="{'mimeCode': document['mimetype'], 'filename': document.get('filename')}">${document['binary']}</cbc:EmbeddedDocumentBinaryObject>
|
||||
</py:when>
|
||||
<py:when test="'text'">
|
||||
<cbc:EmbeddedDocument>${document['text']}</cbc:EmbeddedDocument>
|
||||
</py:when>
|
||||
<py:when test="'reference'">
|
||||
<cac:ExternalReference>
|
||||
<cbc:URI>${document['reference']}</cbc:URI>
|
||||
<cbc:FileName py:if="document.get('filename')">${document['filename']}</cbc:FileName>
|
||||
</cac:ExternalReference>
|
||||
</py:when>
|
||||
</py:choose>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
<cac:AccountingSupplierParty>
|
||||
${Party(this.accounting_supplier_party, this.accounting_supplier_address, this.accounting_supplier_tax_identifier, specification=specification)}
|
||||
</cac:AccountingSupplierParty>
|
||||
<cac:AccountingCustomerParty>
|
||||
${Party(this.accounting_customer_party, this.accounting_customer_address, this.accounting_customer_tax_identifier, identifications=[this.accounting_customer_party.identifier_iso6523] if (specification or '').startswith('peppol') else None, specification=specification)}
|
||||
</cac:AccountingCustomerParty>
|
||||
<py:choose test="(specification or '').startswith('peppol')">
|
||||
<py:when test="True">
|
||||
<cac:PaymentTerms py:if="this.invoice.payment_term and this.invoice.payment_term.description">
|
||||
<cbc:Note>${this.invoice.payment_term.description}</cbc:Note>
|
||||
</cac:PaymentTerms>
|
||||
</py:when>
|
||||
<py:otherwise>
|
||||
<cac:PaymentTerms py:for="line in this.invoice.lines_to_pay">
|
||||
<cbc:Note py:if="this.invoice.payment_term and this.invoice.payment_term.description">${this.invoice.payment_term.description}</cbc:Note>
|
||||
<cbc:Amount py:attrs="{'currencyID': this.invoice.currency.code}">${line.amount}</cbc:Amount>
|
||||
<cbc:PaymentDueDate>${line.maturity_date}</cbc:PaymentDueDate>
|
||||
</cac:PaymentTerms>
|
||||
</py:otherwise>
|
||||
</py:choose>
|
||||
<cac:TaxTotal py:for="group, lines, amount in this.taxes">
|
||||
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${amount}</cbc:TaxAmount>
|
||||
<cac:TaxSubtotal py:for="line in lines">
|
||||
<cbc:TaxableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.base}</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.amount}</cbc:TaxAmount>
|
||||
<cbc:Percent py:if="line.tax.type == 'percentage' and not (specification or '').startswith('peppol')">${format((line.tax.rate * 100).normalize(), 'f')}</cbc:Percent>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID py:if="line.tax.unece_category_code">${line.tax.unece_category_code}</cbc:ID>
|
||||
<cbc:Percent py:if="line.tax.type == 'percentage'">${format((line.tax.rate * 100).normalize(), 'f')}</cbc:Percent>
|
||||
<cbc:TaxExemptionReason py:if="line.tax.legal_notice">${line.tax.legal_notice}</cbc:TaxExemptionReason>
|
||||
<cac:TaxScheme py:if="line.tax.unece_code">
|
||||
<cbc:ID>${line.tax.unece_code}</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
</cac:TaxTotal>
|
||||
<cac:LegalMonetaryTotal>
|
||||
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.untaxed_amount}</cbc:LineExtensionAmount>
|
||||
<cbc:TaxExclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.untaxed_amount}</cbc:TaxExclusiveAmount>
|
||||
<cbc:TaxInclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.untaxed_amount + this.invoice.tax_amount}</cbc:TaxInclusiveAmount>
|
||||
<py:if test="this.invoice.total_amount != (this.invoice.untaxed_amount + this.invoice.tax_amount)">
|
||||
<cbc:PayableRoundingAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.total_amount - this.invoice.untaxed_amount - this.invoice.tax_amount}</cbc:PayableRoundingAmount>
|
||||
</py:if>
|
||||
<cbc:PayableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.total_amount}</cbc:PayableAmount>
|
||||
</cac:LegalMonetaryTotal>
|
||||
<cac:InvoiceLine py:for="line_id, line in enumerate(this.lines, 1)">
|
||||
<cbc:ID>${line_id}</cbc:ID>
|
||||
<cbc:InvoicedQuantity py:attrs="{'unitCode': line.unit.unece_code if line.unit and line.unit.unece_code else 'ZZ'}">${format(Decimal(str(line.quantity)), 'f')}</cbc:InvoicedQuantity>
|
||||
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.amount}</cbc:LineExtensionAmount>
|
||||
<cac:Item>
|
||||
<cbc:Description py:if="line.description">${line.description}</cbc:Description>
|
||||
<cbc:Name>${line.product_name or line.summary}</cbc:Name>
|
||||
<py:if test="line.product">
|
||||
<cac:SellersItemIdentification py:if="line.product.code">
|
||||
<cbc:ID>${line.product.code}</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<py:with vars="gtin=line.product.identifier_get(['ean', 'isbn', 'ismn'])">
|
||||
<cac:StandardItemIdentification py:if="gtin">
|
||||
<cbc:ID schemeID="0160">${gtin}</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
</py:with>
|
||||
</py:if>
|
||||
<cac:ClassifiedTaxCategory py:for="tax_line in line.invoice_taxes">
|
||||
<cbc:ID py:if="tax_line.tax.unece_category_code">${tax_line.tax.unece_category_code}</cbc:ID>
|
||||
<cbc:Percent py:if="tax_line.tax.type == 'percentage'">${format((tax_line.tax.rate * 100).normalize(), 'f')}</cbc:Percent>
|
||||
<cbc:TaxExemptionReason py:if="tax_line.tax.legal_notice">${tax_line.tax.legal_notice}</cbc:TaxExemptionReason>
|
||||
<cac:TaxScheme py:if="tax_line.tax.unece_code">
|
||||
<cbc:ID>${tax_line.tax.unece_code}</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.unit_price}</cbc:PriceAmount>
|
||||
</cac:Price>
|
||||
</cac:InvoiceLine>
|
||||
</Invoice>
|
||||
84
modules/edocument_ubl/template/2/base.xml
Normal file
84
modules/edocument_ubl/template/2/base.xml
Normal file
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<py:strip xmlns:py="http://genshi.edgewall.org/"
|
||||
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<py:def function="Party(party, address=None, tax_identifier=None, identifications=None, specification='')">
|
||||
<cac:Party>
|
||||
<py:with vars="identifier = party.identifier_eas">
|
||||
<py:if test="identifier">
|
||||
<cbc:EndpointID py:attrs="{'schemeID': identifier.eas_code}">${identifier.eas}</cbc:EndpointID>
|
||||
</py:if>
|
||||
</py:with>
|
||||
<py:for each="identifier in identifications or party.identifiers">
|
||||
<cac:PartyIdentification py:if="identifier and identifier.iso_6523">
|
||||
<cbc:ID py:attrs="{'schemeID': identifier.iso_6523}">${identifier.code}</cbc:ID>
|
||||
</cac:PartyIdentification>
|
||||
</py:for>
|
||||
<cac:PostalAddress py:if="address">${Address(address, specification=specification)}</cac:PostalAddress>
|
||||
<cac:PartyTaxScheme py:if="tax_identifier and tax_identifier.unece_code">
|
||||
<py:choose>
|
||||
<py:when test="tax_identifier.vatin">
|
||||
<cbc:CompanyID>${tax_identifier.vatin}</cbc:CompanyID>
|
||||
</py:when>
|
||||
<py:otherwise>
|
||||
<cbc:CompanyID py:attrs="{'schemeID': tax_identifier.iso_6523}">${tax_identifier.code}</cbc:CompanyID>
|
||||
</py:otherwise>
|
||||
</py:choose>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID>${tax_identifier.unece_code}</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName>${party.name}</cbc:RegistrationName>
|
||||
<py:with vars="identifier = party.identifier_iso6523">
|
||||
<py:if test="identifier">
|
||||
<cbc:CompanyID py:attrs="{'schemeID': identifier.iso_6523}">${identifier.code}</cbc:CompanyID>
|
||||
</py:if>
|
||||
</py:with>
|
||||
</cac:PartyLegalEntity>
|
||||
</cac:Party>
|
||||
</py:def>
|
||||
<py:def function="Address(address, specification='')">
|
||||
<py:choose>
|
||||
<py:when test="(specification or '').startswith('peppol')">
|
||||
<py:with vars="streets = (address.street or '').splitlines()">
|
||||
<cbc:StreetName py:if="len(streets) >= 1">${streets[0]}</cbc:StreetName>
|
||||
<cbc:AdditionalStreetName py:if="len(streets) >= 2">${streets[1]}</cbc:AdditionalStreetName>
|
||||
<cbc:CityName py:if="address.city">${address.city}</cbc:CityName>
|
||||
<cbc:PostalZone py:if="address.postal_code">${address.postal_code}</cbc:PostalZone>
|
||||
<cbc:CountrySubentity py:if="address.subdivision">${address.subdivision.name}</cbc:CountrySubentity>
|
||||
<cac:AddressLine py:if="len(streets) >= 3">
|
||||
<cbc:Line>
|
||||
${streets[2]}
|
||||
</cbc:Line>
|
||||
</cac:AddressLine>
|
||||
</py:with>
|
||||
</py:when>
|
||||
<py:otherwise>
|
||||
<cbc:Postbox py:if="address.post_box">${address.post_box}</cbc:Postbox>
|
||||
<cbc:Floor py:if="address.floor_number">${address.floor_number}</cbc:Floor>
|
||||
<cbc:Room py:if="address.room_number">${address.room_number}</cbc:Room>
|
||||
<cbc:StreetName py:if="address.street_name">${address.street_name}</cbc:StreetName>
|
||||
<cbc:BuildingName py:if="address.building_name">${address.building_name}</cbc:BuildingName>
|
||||
<cbc:BuildingNumber py:if="address.building_number">${address.building_number}</cbc:BuildingNumber>
|
||||
<cbc:CityName py:if="address.city">${address.city}</cbc:CityName>
|
||||
<cbc:PostalZone py:if="address.postal_code">${address.postal_code}</cbc:PostalZone>
|
||||
<cbc:CountrySubentity py:if="address.subdivision">${address.subdivision.name}</cbc:CountrySubentity>
|
||||
<cbc:CountrySubentityCode py:if="address.subdivision">${address.subdivision.code}</cbc:CountrySubentityCode>
|
||||
<py:if test="address.street_unstructured">
|
||||
<cac:AddressLine py:for="line in address.street_unstructured.splitlines()">
|
||||
<cbc:Line>
|
||||
${line}
|
||||
</cbc:Line>
|
||||
</cac:AddressLine>
|
||||
</py:if>
|
||||
</py:otherwise>
|
||||
</py:choose>
|
||||
<cac:Country py:if="address.country">
|
||||
<cbc:IdentificationCode>${address.country.code}</cbc:IdentificationCode>
|
||||
<cbc:Name py:if="not (specification or '').startswith('peppol')">${address.country.name}</cbc:Name>
|
||||
</cac:Country>
|
||||
</py:def>
|
||||
</py:strip>
|
||||
409
modules/edocument_ubl/tests/UBL-CreditNote-2.1-Example.xml
Normal file
409
modules/edocument_ubl/tests/UBL-CreditNote-2.1-Example.xml
Normal file
@@ -0,0 +1,409 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CreditNote xmlns="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
|
||||
<cbc:ID>TOSL108</cbc:ID>
|
||||
<cbc:IssueDate>2009-12-15</cbc:IssueDate>
|
||||
<cbc:Note languageID="en">Ordered in our booth at the convention.</cbc:Note>
|
||||
<cbc:DocumentCurrencyCode listID="ISO 4217 Alpha" listAgencyID="6">EUR</cbc:DocumentCurrencyCode>
|
||||
<cbc:AccountingCost>Project cost code 123</cbc:AccountingCost>
|
||||
<cac:InvoicePeriod>
|
||||
<cbc:StartDate>2009-11-01</cbc:StartDate>
|
||||
<cbc:EndDate>2009-11-30</cbc:EndDate>
|
||||
</cac:InvoicePeriod>
|
||||
<cac:OrderReference>
|
||||
<cbc:ID>123</cbc:ID>
|
||||
</cac:OrderReference>
|
||||
<cac:ContractDocumentReference>
|
||||
<cbc:ID>Contract321</cbc:ID>
|
||||
<cbc:DocumentType>Framework agreement</cbc:DocumentType>
|
||||
</cac:ContractDocumentReference>
|
||||
<cac:AdditionalDocumentReference>
|
||||
<cbc:ID>Doc1</cbc:ID>
|
||||
<cbc:DocumentType>Timesheet</cbc:DocumentType>
|
||||
<cac:Attachment>
|
||||
<cac:ExternalReference>
|
||||
<cbc:URI>http://www.suppliersite.eu/sheet001.html</cbc:URI>
|
||||
</cac:ExternalReference>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
<cac:AdditionalDocumentReference>
|
||||
<cbc:ID>Doc2</cbc:ID>
|
||||
<cbc:DocumentType>Drawing</cbc:DocumentType>
|
||||
<cac:Attachment>
|
||||
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf">UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</cbc:EmbeddedDocumentBinaryObject>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
<cac:AccountingSupplierParty>
|
||||
<cac:Party>
|
||||
<cbc:EndpointID schemeID="GLN" schemeAgencyID="9">1234567890123</cbc:EndpointID>
|
||||
<cac:PartyIdentification>
|
||||
<cbc:ID schemeID="ZZZ">Supp123</cbc:ID>
|
||||
</cac:PartyIdentification>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>Salescompany ltd.</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PostalAddress>
|
||||
<cbc:ID schemeID="GLN" schemeAgencyID="9">1231412341324</cbc:ID>
|
||||
<cbc:Postbox>5467</cbc:Postbox>
|
||||
<cbc:StreetName>Main street</cbc:StreetName>
|
||||
<cbc:AdditionalStreetName>Suite 123</cbc:AdditionalStreetName>
|
||||
<cbc:BuildingNumber>1</cbc:BuildingNumber>
|
||||
<cbc:Department>Revenue department</cbc:Department>
|
||||
<cbc:CityName>Big city</cbc:CityName>
|
||||
<cbc:PostalZone>54321</cbc:PostalZone>
|
||||
<cbc:CountrySubentityCode>RegionA</cbc:CountrySubentityCode>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode listID="ISO3166-1" listAgencyID="6">DK</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:PostalAddress>
|
||||
<cac:PartyTaxScheme>
|
||||
<cbc:CompanyID schemeID="DKVAT" schemeAgencyID="ZZZ">DK12345</cbc:CompanyID>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName>The Sellercompany Incorporated</cbc:RegistrationName>
|
||||
<cbc:CompanyID schemeID="CVR" schemeAgencyID="ZZZ">5402697509</cbc:CompanyID>
|
||||
<cac:RegistrationAddress>
|
||||
<cbc:CityName>Big city</cbc:CityName>
|
||||
<cbc:CountrySubentity>RegionA</cbc:CountrySubentity>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>DK</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:RegistrationAddress>
|
||||
</cac:PartyLegalEntity>
|
||||
<cac:Contact>
|
||||
<cbc:Telephone>4621230</cbc:Telephone>
|
||||
<cbc:Telefax>4621231</cbc:Telefax>
|
||||
<cbc:ElectronicMail>antonio@salescompany.dk</cbc:ElectronicMail>
|
||||
</cac:Contact>
|
||||
<cac:Person>
|
||||
<cbc:FirstName>Antonio</cbc:FirstName>
|
||||
<cbc:FamilyName>M</cbc:FamilyName>
|
||||
<cbc:MiddleName>Salemacher</cbc:MiddleName>
|
||||
<cbc:JobTitle>Sales manager</cbc:JobTitle>
|
||||
</cac:Person>
|
||||
</cac:Party>
|
||||
</cac:AccountingSupplierParty>
|
||||
<cac:AccountingCustomerParty>
|
||||
<cac:Party>
|
||||
<cbc:EndpointID schemeID="GLN" schemeAgencyID="9">1234567987654</cbc:EndpointID>
|
||||
<cac:PartyIdentification>
|
||||
<cbc:ID schemeID="ZZZ">345KS5324</cbc:ID>
|
||||
</cac:PartyIdentification>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>Buyercompany ltd</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PostalAddress>
|
||||
<cbc:ID schemeID="GLN" schemeAgencyID="9">1238764941386</cbc:ID>
|
||||
<cbc:Postbox>123</cbc:Postbox>
|
||||
<cbc:StreetName>Anystreet</cbc:StreetName>
|
||||
<cbc:AdditionalStreetName>Back door</cbc:AdditionalStreetName>
|
||||
<cbc:BuildingNumber>8</cbc:BuildingNumber>
|
||||
<cbc:Department>Accounting department</cbc:Department>
|
||||
<cbc:CityName>Anytown</cbc:CityName>
|
||||
<cbc:PostalZone>101</cbc:PostalZone>
|
||||
<cbc:CountrySubentity>RegionB</cbc:CountrySubentity>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode listID="ISO3166-1" listAgencyID="6">BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:PostalAddress>
|
||||
<cac:PartyTaxScheme>
|
||||
<cbc:CompanyID schemeID="BEVAT" schemeAgencyID="ZZZ">BE54321</cbc:CompanyID>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName>The buyercompany inc.</cbc:RegistrationName>
|
||||
<cbc:CompanyID schemeAgencyID="ZZZ" schemeID="ZZZ">5645342123</cbc:CompanyID>
|
||||
<cac:RegistrationAddress>
|
||||
<cbc:CityName>Mainplace</cbc:CityName>
|
||||
<cbc:CountrySubentity>RegionB</cbc:CountrySubentity>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:RegistrationAddress>
|
||||
</cac:PartyLegalEntity>
|
||||
<cac:Contact>
|
||||
<cbc:Telephone>5121230</cbc:Telephone>
|
||||
<cbc:Telefax>5121231</cbc:Telefax>
|
||||
<cbc:ElectronicMail>john@buyercompany.eu</cbc:ElectronicMail>
|
||||
</cac:Contact>
|
||||
<cac:Person>
|
||||
<cbc:FirstName>John</cbc:FirstName>
|
||||
<cbc:FamilyName>X</cbc:FamilyName>
|
||||
<cbc:MiddleName>Doe</cbc:MiddleName>
|
||||
<cbc:JobTitle>Purchasing manager</cbc:JobTitle>
|
||||
</cac:Person>
|
||||
</cac:Party>
|
||||
</cac:AccountingCustomerParty>
|
||||
<cac:PayeeParty>
|
||||
<cac:PartyIdentification>
|
||||
<cbc:ID schemeID="GLN" schemeAgencyID="9">098740918237</cbc:ID>
|
||||
</cac:PartyIdentification>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>Ebeneser Scrooge Inc.</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:CompanyID schemeID="UK:CH" schemeAgencyID="ZZZ">6411982340</cbc:CompanyID>
|
||||
</cac:PartyLegalEntity>
|
||||
</cac:PayeeParty>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Packing cost</cbc:AllowanceChargeReason>
|
||||
<cbc:Amount currencyID="EUR">100</cbc:Amount>
|
||||
</cac:AllowanceCharge>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Promotion discount</cbc:AllowanceChargeReason>
|
||||
<cbc:Amount currencyID="EUR">100</cbc:Amount>
|
||||
</cac:AllowanceCharge>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">292.20</cbc:TaxAmount>
|
||||
<cac:TaxSubtotal>
|
||||
<cbc:TaxableAmount currencyID="EUR">1460.5</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount currencyID="EUR">292.1</cbc:TaxAmount>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
|
||||
<cbc:Percent>20</cbc:Percent>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
<cac:TaxSubtotal>
|
||||
<cbc:TaxableAmount currencyID="EUR">1</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount currencyID="EUR">0.1</cbc:TaxAmount>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">AA</cbc:ID>
|
||||
<cbc:Percent>10</cbc:Percent>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
<cac:TaxSubtotal>
|
||||
<cbc:TaxableAmount currencyID="EUR">-25</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">E</cbc:ID>
|
||||
<cbc:Percent>0</cbc:Percent>
|
||||
<cbc:TaxExemptionReasonCode listID="CWA 15577" listAgencyID="ZZZ">AAM</cbc:TaxExemptionReasonCode>
|
||||
<cbc:TaxExemptionReason>Exempt New Means of Transport</cbc:TaxExemptionReason>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
</cac:TaxTotal>
|
||||
<cac:LegalMonetaryTotal>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">1436.5</cbc:LineExtensionAmount>
|
||||
<cbc:TaxExclusiveAmount currencyID="EUR">1436.5</cbc:TaxExclusiveAmount>
|
||||
<cbc:TaxInclusiveAmount currencyID="EUR">1729</cbc:TaxInclusiveAmount>
|
||||
<cbc:AllowanceTotalAmount currencyID="EUR">100</cbc:AllowanceTotalAmount>
|
||||
<cbc:ChargeTotalAmount currencyID="EUR">100</cbc:ChargeTotalAmount>
|
||||
<cbc:PrepaidAmount currencyID="EUR">1000</cbc:PrepaidAmount>
|
||||
<cbc:PayableRoundingAmount currencyID="EUR">0.30</cbc:PayableRoundingAmount>
|
||||
<cbc:PayableAmount currencyID="EUR">729</cbc:PayableAmount>
|
||||
</cac:LegalMonetaryTotal>
|
||||
<cac:CreditNoteLine>
|
||||
<cbc:ID>1</cbc:ID>
|
||||
<cbc:Note>Scratch on box</cbc:Note>
|
||||
<cbc:CreditedQuantity unitCode="C62">1</cbc:CreditedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">1273</cbc:LineExtensionAmount>
|
||||
<cbc:AccountingCost>BookingCode001</cbc:AccountingCost>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">254.6</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Description languageID="EN">Processor: Intel Core 2 Duo SU9400 LV (1.4GHz). RAM:
|
||||
3MB. Screen 1440x900</cbc:Description>
|
||||
<cbc:Name>Labtop computer</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB007</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890124</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">12344321</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434568</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
|
||||
<cbc:Percent>20</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
<cac:AdditionalItemProperty>
|
||||
<cbc:Name>Color</cbc:Name>
|
||||
<cbc:Value>black</cbc:Value>
|
||||
</cac:AdditionalItemProperty>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">1273</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Contract</cbc:AllowanceChargeReason>
|
||||
<cbc:MultiplierFactorNumeric>0.15</cbc:MultiplierFactorNumeric>
|
||||
<cbc:Amount currencyID="EUR">225</cbc:Amount>
|
||||
<cbc:BaseAmount currencyID="EUR">1500</cbc:BaseAmount>
|
||||
</cac:AllowanceCharge>
|
||||
</cac:Price>
|
||||
</cac:CreditNoteLine>
|
||||
<cac:CreditNoteLine>
|
||||
<cbc:ID>2</cbc:ID>
|
||||
<cbc:Note>Cover is slightly damaged.</cbc:Note>
|
||||
<cbc:CreditedQuantity unitCode="C62">-1</cbc:CreditedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">-3.96</cbc:LineExtensionAmount>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">-0.396</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Name>Returned "Advanced computing" book</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB008</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890125</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">32344324</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434567</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">AA</cbc:ID>
|
||||
<cbc:Percent>10</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">3.96</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
</cac:Price>
|
||||
</cac:CreditNoteLine>
|
||||
<cac:CreditNoteLine>
|
||||
<cbc:ID>3</cbc:ID>
|
||||
<cbc:CreditedQuantity unitCode="C62">2</cbc:CreditedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">4.96</cbc:LineExtensionAmount>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">0.496</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Name>"Computing for dummies" book</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB009</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890126</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">32344324</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434566</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">AA</cbc:ID>
|
||||
<cbc:Percent>10</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">2.48</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Contract</cbc:AllowanceChargeReason>
|
||||
<cbc:MultiplierFactorNumeric>0.1</cbc:MultiplierFactorNumeric>
|
||||
<cbc:Amount currencyID="EUR">0.275</cbc:Amount>
|
||||
<cbc:BaseAmount currencyID="EUR">2.75</cbc:BaseAmount>
|
||||
</cac:AllowanceCharge>
|
||||
</cac:Price>
|
||||
</cac:CreditNoteLine>
|
||||
<cac:CreditNoteLine>
|
||||
<cbc:ID>4</cbc:ID>
|
||||
<cbc:CreditedQuantity unitCode="C62">-1</cbc:CreditedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">-25</cbc:LineExtensionAmount>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Name>Returned IBM 5150 desktop</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB010</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890127</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">12344322</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434565</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">E</cbc:ID>
|
||||
<cbc:Percent>0</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">25</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
</cac:Price>
|
||||
</cac:CreditNoteLine>
|
||||
<cac:CreditNoteLine>
|
||||
<cbc:ID>5</cbc:ID>
|
||||
<cbc:CreditedQuantity unitCode="C62">250</cbc:CreditedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">187.5</cbc:LineExtensionAmount>
|
||||
<cbc:AccountingCost>BookingCode002</cbc:AccountingCost>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">37.5</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Name>Network cable</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB011</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890128</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">12344325</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434564</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
|
||||
<cbc:Percent>20</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
<cac:AdditionalItemProperty>
|
||||
<cbc:Name>Type</cbc:Name>
|
||||
<cbc:Value>Cat5</cbc:Value>
|
||||
</cac:AdditionalItemProperty>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">0.75</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
</cac:Price>
|
||||
</cac:CreditNoteLine>
|
||||
</CreditNote>
|
||||
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
|
||||
<cbc:ID>123</cbc:ID>
|
||||
<cbc:IssueDate>2011-09-22</cbc:IssueDate>
|
||||
|
||||
<cac:InvoicePeriod>
|
||||
<cbc:StartDate>2011-08-01</cbc:StartDate>
|
||||
<cbc:EndDate>2011-08-31</cbc:EndDate>
|
||||
</cac:InvoicePeriod>
|
||||
|
||||
<cac:AccountingSupplierParty>
|
||||
<cac:Party>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>Custom Cotter Pins</cbc:Name>
|
||||
</cac:PartyName>
|
||||
</cac:Party>
|
||||
</cac:AccountingSupplierParty>
|
||||
<cac:AccountingCustomerParty>
|
||||
<cac:Party>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>North American Veeblefetzer</cbc:Name>
|
||||
</cac:PartyName>
|
||||
</cac:Party>
|
||||
</cac:AccountingCustomerParty>
|
||||
|
||||
<cac:LegalMonetaryTotal>
|
||||
<cbc:PayableAmount currencyID="CAD">100.00</cbc:PayableAmount>
|
||||
</cac:LegalMonetaryTotal>
|
||||
|
||||
<cac:InvoiceLine>
|
||||
<cbc:ID>1</cbc:ID>
|
||||
<cbc:LineExtensionAmount currencyID="CAD">100.00</cbc:LineExtensionAmount>
|
||||
<cac:Item>
|
||||
<cbc:Description>Cotter pin, MIL-SPEC</cbc:Description>
|
||||
</cac:Item>
|
||||
</cac:InvoiceLine>
|
||||
|
||||
</Invoice>
|
||||
470
modules/edocument_ubl/tests/UBL-Invoice-2.1-Example.xml
Normal file
470
modules/edocument_ubl/tests/UBL-Invoice-2.1-Example.xml
Normal file
@@ -0,0 +1,470 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
|
||||
<cbc:ID>TOSL108</cbc:ID>
|
||||
<cbc:IssueDate>2009-12-15</cbc:IssueDate>
|
||||
<cbc:InvoiceTypeCode listID="UN/ECE 1001 Subset" listAgencyID="6">380</cbc:InvoiceTypeCode>
|
||||
<cbc:Note languageID="en">Ordered in our booth at the convention.</cbc:Note>
|
||||
<cbc:TaxPointDate>2009-11-30</cbc:TaxPointDate>
|
||||
<cbc:DocumentCurrencyCode listID="ISO 4217 Alpha" listAgencyID="6">EUR</cbc:DocumentCurrencyCode>
|
||||
<cbc:AccountingCost>Project cost code 123</cbc:AccountingCost>
|
||||
<cac:InvoicePeriod>
|
||||
<cbc:StartDate>2009-11-01</cbc:StartDate>
|
||||
<cbc:EndDate>2009-11-30</cbc:EndDate>
|
||||
</cac:InvoicePeriod>
|
||||
<cac:OrderReference>
|
||||
<cbc:ID>123</cbc:ID>
|
||||
</cac:OrderReference>
|
||||
<cac:ContractDocumentReference>
|
||||
<cbc:ID>Contract321</cbc:ID>
|
||||
<cbc:DocumentType>Framework agreement</cbc:DocumentType>
|
||||
</cac:ContractDocumentReference>
|
||||
<cac:AdditionalDocumentReference>
|
||||
<cbc:ID>Doc1</cbc:ID>
|
||||
<cbc:DocumentType>Timesheet</cbc:DocumentType>
|
||||
<cac:Attachment>
|
||||
<cac:ExternalReference>
|
||||
<cbc:URI>http://www.suppliersite.eu/sheet001.html</cbc:URI>
|
||||
</cac:ExternalReference>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
<cac:AdditionalDocumentReference>
|
||||
<cbc:ID>Doc2</cbc:ID>
|
||||
<cbc:DocumentType>Drawing</cbc:DocumentType>
|
||||
<cac:Attachment>
|
||||
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf">UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</cbc:EmbeddedDocumentBinaryObject>
|
||||
</cac:Attachment>
|
||||
</cac:AdditionalDocumentReference>
|
||||
<cac:AccountingSupplierParty>
|
||||
<cac:Party>
|
||||
<cbc:EndpointID schemeID="GLN" schemeAgencyID="9">1234567890123</cbc:EndpointID>
|
||||
<cac:PartyIdentification>
|
||||
<cbc:ID schemeID="ZZZ">Supp123</cbc:ID>
|
||||
</cac:PartyIdentification>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>Salescompany ltd.</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PostalAddress>
|
||||
<cbc:ID schemeID="GLN" schemeAgencyID="9">1231412341324</cbc:ID>
|
||||
<cbc:Postbox>5467</cbc:Postbox>
|
||||
<cbc:StreetName>Main street</cbc:StreetName>
|
||||
<cbc:AdditionalStreetName>Suite 123</cbc:AdditionalStreetName>
|
||||
<cbc:BuildingNumber>1</cbc:BuildingNumber>
|
||||
<cbc:Department>Revenue department</cbc:Department>
|
||||
<cbc:CityName>Big city</cbc:CityName>
|
||||
<cbc:PostalZone>54321</cbc:PostalZone>
|
||||
<cbc:CountrySubentityCode>RegionA</cbc:CountrySubentityCode>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode listID="ISO3166-1" listAgencyID="6">DK</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:PostalAddress>
|
||||
<cac:PartyTaxScheme>
|
||||
<cbc:CompanyID schemeID="DKVAT" schemeAgencyID="ZZZ">DK12345</cbc:CompanyID>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName>The Sellercompany Incorporated</cbc:RegistrationName>
|
||||
<cbc:CompanyID schemeID="CVR" schemeAgencyID="ZZZ">5402697509</cbc:CompanyID>
|
||||
<cac:RegistrationAddress>
|
||||
<cbc:CityName>Big city</cbc:CityName>
|
||||
<cbc:CountrySubentity>RegionA</cbc:CountrySubentity>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>DK</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:RegistrationAddress>
|
||||
</cac:PartyLegalEntity>
|
||||
<cac:Contact>
|
||||
<cbc:Telephone>4621230</cbc:Telephone>
|
||||
<cbc:Telefax>4621231</cbc:Telefax>
|
||||
<cbc:ElectronicMail>antonio@salescompany.dk</cbc:ElectronicMail>
|
||||
</cac:Contact>
|
||||
<cac:Person>
|
||||
<cbc:FirstName>Antonio</cbc:FirstName>
|
||||
<cbc:FamilyName>Salemacher</cbc:FamilyName>
|
||||
<cbc:MiddleName>M</cbc:MiddleName>
|
||||
<cbc:JobTitle>Sales manager</cbc:JobTitle>
|
||||
</cac:Person>
|
||||
</cac:Party>
|
||||
</cac:AccountingSupplierParty>
|
||||
<cac:AccountingCustomerParty>
|
||||
<cac:Party>
|
||||
<cbc:EndpointID schemeID="GLN" schemeAgencyID="9">1234567987654</cbc:EndpointID>
|
||||
<cac:PartyIdentification>
|
||||
<cbc:ID schemeID="ZZZ">345KS5324</cbc:ID>
|
||||
</cac:PartyIdentification>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>Buyercompany ltd</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PostalAddress>
|
||||
<cbc:ID schemeID="GLN" schemeAgencyID="9">1238764941386</cbc:ID>
|
||||
<cbc:Postbox>123</cbc:Postbox>
|
||||
<cbc:StreetName>Anystreet</cbc:StreetName>
|
||||
<cbc:AdditionalStreetName>Back door</cbc:AdditionalStreetName>
|
||||
<cbc:BuildingNumber>8</cbc:BuildingNumber>
|
||||
<cbc:Department>Accounting department</cbc:Department>
|
||||
<cbc:CityName>Anytown</cbc:CityName>
|
||||
<cbc:PostalZone>101</cbc:PostalZone>
|
||||
<cbc:CountrySubentity>RegionB</cbc:CountrySubentity>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode listID="ISO3166-1" listAgencyID="6">BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:PostalAddress>
|
||||
<cac:PartyTaxScheme>
|
||||
<cbc:CompanyID schemeID="BEVAT" schemeAgencyID="ZZZ">BE54321</cbc:CompanyID>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:PartyTaxScheme>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:RegistrationName>The buyercompany inc.</cbc:RegistrationName>
|
||||
<cbc:CompanyID schemeAgencyID="ZZZ" schemeID="ZZZ">5645342123</cbc:CompanyID>
|
||||
<cac:RegistrationAddress>
|
||||
<cbc:CityName>Mainplace</cbc:CityName>
|
||||
<cbc:CountrySubentity>RegionB</cbc:CountrySubentity>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:RegistrationAddress>
|
||||
</cac:PartyLegalEntity>
|
||||
<cac:Contact>
|
||||
<cbc:Telephone>5121230</cbc:Telephone>
|
||||
<cbc:Telefax>5121231</cbc:Telefax>
|
||||
<cbc:ElectronicMail>john@buyercompany.eu</cbc:ElectronicMail>
|
||||
</cac:Contact>
|
||||
<cac:Person>
|
||||
<cbc:FirstName>John</cbc:FirstName>
|
||||
<cbc:FamilyName>Doe</cbc:FamilyName>
|
||||
<cbc:MiddleName>X</cbc:MiddleName>
|
||||
<cbc:JobTitle>Purchasing manager</cbc:JobTitle>
|
||||
</cac:Person>
|
||||
</cac:Party>
|
||||
</cac:AccountingCustomerParty>
|
||||
<cac:PayeeParty>
|
||||
<cac:PartyIdentification>
|
||||
<cbc:ID schemeID="GLN" schemeAgencyID="9">098740918237</cbc:ID>
|
||||
</cac:PartyIdentification>
|
||||
<cac:PartyName>
|
||||
<cbc:Name>Ebeneser Scrooge Inc.</cbc:Name>
|
||||
</cac:PartyName>
|
||||
<cac:PartyLegalEntity>
|
||||
<cbc:CompanyID schemeID="UK:CH" schemeAgencyID="ZZZ">6411982340</cbc:CompanyID>
|
||||
</cac:PartyLegalEntity>
|
||||
</cac:PayeeParty>
|
||||
<cac:Delivery>
|
||||
<cbc:ActualDeliveryDate>2009-12-15</cbc:ActualDeliveryDate>
|
||||
<cac:DeliveryLocation>
|
||||
<cbc:ID schemeID="GLN" schemeAgencyID="9">6754238987648</cbc:ID>
|
||||
<cac:Address>
|
||||
<cbc:StreetName>Deliverystreet</cbc:StreetName>
|
||||
<cbc:AdditionalStreetName>Side door</cbc:AdditionalStreetName>
|
||||
<cbc:BuildingNumber>12</cbc:BuildingNumber>
|
||||
<cbc:CityName>DeliveryCity</cbc:CityName>
|
||||
<cbc:PostalZone>523427</cbc:PostalZone>
|
||||
<cbc:CountrySubentity>RegionC</cbc:CountrySubentity>
|
||||
<cac:Country>
|
||||
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||
</cac:Country>
|
||||
</cac:Address>
|
||||
</cac:DeliveryLocation>
|
||||
</cac:Delivery>
|
||||
<cac:PaymentMeans>
|
||||
<cbc:PaymentMeansCode listID="UN/ECE 4461">31</cbc:PaymentMeansCode>
|
||||
<cbc:PaymentDueDate>2009-12-31</cbc:PaymentDueDate>
|
||||
<cbc:PaymentChannelCode>IBAN</cbc:PaymentChannelCode>
|
||||
<cbc:PaymentID>Payref1</cbc:PaymentID>
|
||||
<cac:PayeeFinancialAccount>
|
||||
<cbc:ID>DK1212341234123412</cbc:ID>
|
||||
<cac:FinancialInstitutionBranch>
|
||||
<cac:FinancialInstitution>
|
||||
<cbc:ID>DKDKABCD</cbc:ID>
|
||||
</cac:FinancialInstitution>
|
||||
</cac:FinancialInstitutionBranch>
|
||||
</cac:PayeeFinancialAccount>
|
||||
</cac:PaymentMeans>
|
||||
<cac:PaymentTerms>
|
||||
<cbc:Note>Penalty percentage 10% from due date</cbc:Note>
|
||||
</cac:PaymentTerms>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Packing cost</cbc:AllowanceChargeReason>
|
||||
<cbc:Amount currencyID="EUR">100</cbc:Amount>
|
||||
</cac:AllowanceCharge>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Promotion discount</cbc:AllowanceChargeReason>
|
||||
<cbc:Amount currencyID="EUR">100</cbc:Amount>
|
||||
</cac:AllowanceCharge>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">292.20</cbc:TaxAmount>
|
||||
<cac:TaxSubtotal>
|
||||
<cbc:TaxableAmount currencyID="EUR">1460.5</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount currencyID="EUR">292.1</cbc:TaxAmount>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
|
||||
<cbc:Percent>20</cbc:Percent>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
<cac:TaxSubtotal>
|
||||
<cbc:TaxableAmount currencyID="EUR">1</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount currencyID="EUR">0.1</cbc:TaxAmount>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">AA</cbc:ID>
|
||||
<cbc:Percent>10</cbc:Percent>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
<cac:TaxSubtotal>
|
||||
<cbc:TaxableAmount currencyID="EUR">-25</cbc:TaxableAmount>
|
||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
||||
<cac:TaxCategory>
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">E</cbc:ID>
|
||||
<cbc:Percent>0</cbc:Percent>
|
||||
<cbc:TaxExemptionReasonCode listID="CWA 15577" listAgencyID="ZZZ">AAM</cbc:TaxExemptionReasonCode>
|
||||
<cbc:TaxExemptionReason>Exempt New Means of Transport</cbc:TaxExemptionReason>
|
||||
<cac:TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</cac:TaxScheme>
|
||||
</cac:TaxCategory>
|
||||
</cac:TaxSubtotal>
|
||||
</cac:TaxTotal>
|
||||
<cac:LegalMonetaryTotal>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">1436.5</cbc:LineExtensionAmount>
|
||||
<cbc:TaxExclusiveAmount currencyID="EUR">1436.5</cbc:TaxExclusiveAmount>
|
||||
<cbc:TaxInclusiveAmount currencyID="EUR">1729</cbc:TaxInclusiveAmount>
|
||||
<cbc:AllowanceTotalAmount currencyID="EUR">100</cbc:AllowanceTotalAmount>
|
||||
<cbc:ChargeTotalAmount currencyID="EUR">100</cbc:ChargeTotalAmount>
|
||||
<cbc:PrepaidAmount currencyID="EUR">1000</cbc:PrepaidAmount>
|
||||
<cbc:PayableRoundingAmount currencyID="EUR">0.30</cbc:PayableRoundingAmount>
|
||||
<cbc:PayableAmount currencyID="EUR">729</cbc:PayableAmount>
|
||||
</cac:LegalMonetaryTotal>
|
||||
<cac:InvoiceLine>
|
||||
<cbc:ID>1</cbc:ID>
|
||||
<cbc:Note>Scratch on box</cbc:Note>
|
||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">1273</cbc:LineExtensionAmount>
|
||||
<cbc:AccountingCost>BookingCode001</cbc:AccountingCost>
|
||||
<cac:OrderLineReference>
|
||||
<cbc:LineID>1</cbc:LineID>
|
||||
</cac:OrderLineReference>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Damage</cbc:AllowanceChargeReason>
|
||||
<cbc:Amount currencyID="EUR">12</cbc:Amount>
|
||||
</cac:AllowanceCharge>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Testing</cbc:AllowanceChargeReason>
|
||||
<cbc:Amount currencyID="EUR">10</cbc:Amount>
|
||||
</cac:AllowanceCharge>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">254.6</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Description languageID="EN">Processor: Intel Core 2 Duo SU9400 LV (1.4GHz). RAM:
|
||||
3MB. Screen 1440x900</cbc:Description>
|
||||
<cbc:Name>Labtop computer</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB007</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890124</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">12344321</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434568</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
|
||||
<cbc:Percent>20</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
<cac:AdditionalItemProperty>
|
||||
<cbc:Name>Color</cbc:Name>
|
||||
<cbc:Value>black</cbc:Value>
|
||||
</cac:AdditionalItemProperty>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">1273</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Contract</cbc:AllowanceChargeReason>
|
||||
<cbc:MultiplierFactorNumeric>0.15</cbc:MultiplierFactorNumeric>
|
||||
<cbc:Amount currencyID="EUR">225</cbc:Amount>
|
||||
<cbc:BaseAmount currencyID="EUR">1500</cbc:BaseAmount>
|
||||
</cac:AllowanceCharge>
|
||||
</cac:Price>
|
||||
</cac:InvoiceLine>
|
||||
<cac:InvoiceLine>
|
||||
<cbc:ID>2</cbc:ID>
|
||||
<cbc:Note>Cover is slightly damaged.</cbc:Note>
|
||||
<cbc:InvoicedQuantity unitCode="C62">-1</cbc:InvoicedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">-3.96</cbc:LineExtensionAmount>
|
||||
<cac:OrderLineReference>
|
||||
<cbc:LineID>5</cbc:LineID>
|
||||
</cac:OrderLineReference>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">-0.396</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Name>Returned "Advanced computing" book</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB008</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890125</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">32344324</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434567</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">AA</cbc:ID>
|
||||
<cbc:Percent>10</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">3.96</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
</cac:Price>
|
||||
</cac:InvoiceLine>
|
||||
<cac:InvoiceLine>
|
||||
<cbc:ID>3</cbc:ID>
|
||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">4.96</cbc:LineExtensionAmount>
|
||||
<cac:OrderLineReference>
|
||||
<cbc:LineID>3</cbc:LineID>
|
||||
</cac:OrderLineReference>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">0.496</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Name>"Computing for dummies" book</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB009</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890126</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">32344324</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434566</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">AA</cbc:ID>
|
||||
<cbc:Percent>10</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">2.48</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
<cac:AllowanceCharge>
|
||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||
<cbc:AllowanceChargeReason>Contract</cbc:AllowanceChargeReason>
|
||||
<cbc:MultiplierFactorNumeric>0.1</cbc:MultiplierFactorNumeric>
|
||||
<cbc:Amount currencyID="EUR">0.275</cbc:Amount>
|
||||
<cbc:BaseAmount currencyID="EUR">2.75</cbc:BaseAmount>
|
||||
</cac:AllowanceCharge>
|
||||
</cac:Price>
|
||||
</cac:InvoiceLine>
|
||||
<cac:InvoiceLine>
|
||||
<cbc:ID>4</cbc:ID>
|
||||
<cbc:InvoicedQuantity unitCode="C62">-1</cbc:InvoicedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">-25</cbc:LineExtensionAmount>
|
||||
<cac:OrderLineReference>
|
||||
<cbc:LineID>2</cbc:LineID>
|
||||
</cac:OrderLineReference>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Name>Returned IBM 5150 desktop</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB010</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890127</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">12344322</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434565</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">E</cbc:ID>
|
||||
<cbc:Percent>0</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">25</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
</cac:Price>
|
||||
</cac:InvoiceLine>
|
||||
<cac:InvoiceLine>
|
||||
<cbc:ID>5</cbc:ID>
|
||||
<cbc:InvoicedQuantity unitCode="C62">250</cbc:InvoicedQuantity>
|
||||
<cbc:LineExtensionAmount currencyID="EUR">187.5</cbc:LineExtensionAmount>
|
||||
<cbc:AccountingCost>BookingCode002</cbc:AccountingCost>
|
||||
<cac:OrderLineReference>
|
||||
<cbc:LineID>4</cbc:LineID>
|
||||
</cac:OrderLineReference>
|
||||
<cac:TaxTotal>
|
||||
<cbc:TaxAmount currencyID="EUR">37.5</cbc:TaxAmount>
|
||||
</cac:TaxTotal>
|
||||
<cac:Item>
|
||||
<cbc:Name>Network cable</cbc:Name>
|
||||
<cac:SellersItemIdentification>
|
||||
<cbc:ID>JB011</cbc:ID>
|
||||
</cac:SellersItemIdentification>
|
||||
<cac:StandardItemIdentification>
|
||||
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890128</cbc:ID>
|
||||
</cac:StandardItemIdentification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC">12344325</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<cac:CommodityClassification>
|
||||
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV">65434564</cbc:ItemClassificationCode>
|
||||
</cac:CommodityClassification>
|
||||
<ClassifiedTaxCategory xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
|
||||
<cbc:Percent>20</cbc:Percent>
|
||||
<TaxScheme>
|
||||
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||
</TaxScheme>
|
||||
</ClassifiedTaxCategory>
|
||||
<cac:AdditionalItemProperty>
|
||||
<cbc:Name>Type</cbc:Name>
|
||||
<cbc:Value>Cat5</cbc:Value>
|
||||
</cac:AdditionalItemProperty>
|
||||
</cac:Item>
|
||||
<cac:Price>
|
||||
<cbc:PriceAmount currencyID="EUR">0.75</cbc:PriceAmount>
|
||||
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||
</cac:Price>
|
||||
</cac:InvoiceLine>
|
||||
</Invoice>
|
||||
2
modules/edocument_ubl/tests/__init__.py
Normal file
2
modules/edocument_ubl/tests/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
BIN
modules/edocument_ubl/tests/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
modules/edocument_ubl/tests/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
[
|
||||
{"cash_rounding": true}
|
||||
,{"cash_rounding": false}
|
||||
]
|
||||
@@ -0,0 +1,90 @@
|
||||
=======================
|
||||
UBL 2 Credit Note Parse
|
||||
=======================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import datetime as dt
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.account.tests.tools import create_chart, create_tax
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.modules.currency.tests.tools import get_currency
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
>>> from trytond.tools import file_open
|
||||
|
||||
>>> cash_rounding = globals().get('cash_rounding', False)
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> modules = ['edocument_ubl', 'account_invoice']
|
||||
>>> if cash_rounding:
|
||||
... modules.append('account_cash_rounding')
|
||||
>>> config = activate_modules(modules, create_company, create_chart)
|
||||
|
||||
>>> Attachment = Model.get('ir.attachment')
|
||||
>>> EInvoice = Model.get('edocument.ubl.invoice')
|
||||
>>> Invoice = Model.get('account.invoice')
|
||||
|
||||
Setup company::
|
||||
|
||||
>>> company = get_company()
|
||||
>>> company.party.name = 'Buyercompany ltd'
|
||||
>>> company.party.save()
|
||||
|
||||
Create currency::
|
||||
|
||||
>>> eur = get_currency('EUR')
|
||||
>>> if cash_rounding:
|
||||
... eur.cash_rounding = Decimal('1')
|
||||
>>> eur.save()
|
||||
|
||||
Create tax::
|
||||
|
||||
>>> tax20 = create_tax(Decimal('.2'))
|
||||
>>> tax20.unece_category_code = 'S'
|
||||
>>> tax20.unece_code = 'VAT'
|
||||
>>> tax20.save()
|
||||
|
||||
>>> tax10 = create_tax(Decimal('.1'))
|
||||
>>> tax10.unece_category_code = 'AA'
|
||||
>>> tax10.unece_code = 'VAT'
|
||||
>>> tax10.save()
|
||||
|
||||
>>> tax0 = create_tax(Decimal('0'))
|
||||
>>> tax0.unece_category_code = 'E'
|
||||
>>> tax0.unece_code = 'VAT'
|
||||
>>> tax0.save()
|
||||
|
||||
Parse the UBL invoice::
|
||||
|
||||
>>> with file_open(
|
||||
... 'edocument_ubl/tests/UBL-CreditNote-2.1-Example.xml',
|
||||
... mode='rb') as fp:
|
||||
... invoice_id = EInvoice.parse(fp.read(), config.context)
|
||||
|
||||
>>> invoice = Invoice(invoice_id)
|
||||
|
||||
>>> invoice.reference
|
||||
'TOSL108'
|
||||
>>> assertEqual(invoice.invoice_date, dt.date(2009, 12, 15))
|
||||
>>> invoice.party.name
|
||||
'The Sellercompany Incorporated'
|
||||
>>> invoice.invoice_address.rec_name
|
||||
'The Sellercompany Incorporated, Main street 1 5467, 54321, Big city'
|
||||
>>> assertEqual(invoice.company, company)
|
||||
>>> assertEqual(
|
||||
... invoice.total_amount,
|
||||
... Decimal('-1729.00') if cash_rounding else Decimal('-1728.70'))
|
||||
>>> invoice.tax_amount
|
||||
Decimal('-292.20')
|
||||
>>> len(invoice.lines)
|
||||
7
|
||||
|
||||
>>> attachments = Attachment.find([])
|
||||
>>> len(attachments)
|
||||
3
|
||||
>>> assertEqual({a.resource for a in attachments}, {invoice})
|
||||
>>> sorted((a.name, a.type) for a in attachments)
|
||||
[('Drawing Doc2.pdf', 'data'), ('Framework agreement Contract321', 'data'), ('Timesheet Doc1', 'link')]
|
||||
@@ -0,0 +1,4 @@
|
||||
[
|
||||
{"cash_rounding": true}
|
||||
,{"cash_rounding": false}
|
||||
]
|
||||
90
modules/edocument_ubl/tests/scenario_ubl_2_invoice_parse.rst
Normal file
90
modules/edocument_ubl/tests/scenario_ubl_2_invoice_parse.rst
Normal file
@@ -0,0 +1,90 @@
|
||||
===================
|
||||
UBL 2 Invoice Parse
|
||||
===================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import datetime as dt
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.account.tests.tools import create_chart, create_tax
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.modules.currency.tests.tools import get_currency
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
>>> from trytond.tools import file_open
|
||||
|
||||
>>> cash_rounding = globals().get('cash_rounding', False)
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> modules = ['edocument_ubl', 'account_invoice', 'purchase']
|
||||
>>> if cash_rounding:
|
||||
... modules.append('account_cash_rounding')
|
||||
>>> config = activate_modules(modules, create_company, create_chart)
|
||||
|
||||
>>> Attachment = Model.get('ir.attachment')
|
||||
>>> EInvoice = Model.get('edocument.ubl.invoice')
|
||||
>>> Invoice = Model.get('account.invoice')
|
||||
|
||||
Setup company::
|
||||
|
||||
>>> company = get_company()
|
||||
>>> company.party.name = 'Buyercompany ltd'
|
||||
>>> company.party.save()
|
||||
|
||||
Create currency::
|
||||
|
||||
>>> eur = get_currency('EUR')
|
||||
>>> if cash_rounding:
|
||||
... eur.cash_rounding = Decimal('1')
|
||||
>>> eur.save()
|
||||
|
||||
Create tax::
|
||||
|
||||
>>> tax20 = create_tax(Decimal('.2'))
|
||||
>>> tax20.unece_category_code = 'S'
|
||||
>>> tax20.unece_code = 'VAT'
|
||||
>>> tax20.save()
|
||||
|
||||
>>> tax10 = create_tax(Decimal('.1'))
|
||||
>>> tax10.unece_category_code = 'AA'
|
||||
>>> tax10.unece_code = 'VAT'
|
||||
>>> tax10.save()
|
||||
|
||||
>>> tax0 = create_tax(Decimal('0'))
|
||||
>>> tax0.unece_category_code = 'E'
|
||||
>>> tax0.unece_code = 'VAT'
|
||||
>>> tax0.save()
|
||||
|
||||
Parse the UBL invoice::
|
||||
|
||||
>>> with file_open(
|
||||
... 'edocument_ubl/tests/UBL-Invoice-2.1-Example.xml',
|
||||
... mode='rb') as fp:
|
||||
... invoice_id = EInvoice.parse(fp.read(), config.context)
|
||||
|
||||
>>> invoice = Invoice(invoice_id)
|
||||
|
||||
>>> invoice.reference
|
||||
'TOSL108'
|
||||
>>> assertEqual(invoice.invoice_date, dt.date(2009, 12, 15))
|
||||
>>> invoice.party.name
|
||||
'The Sellercompany Incorporated'
|
||||
>>> invoice.invoice_address.rec_name
|
||||
'The Sellercompany Incorporated, Main street 1 5467, 54321, Big city'
|
||||
>>> assertEqual(invoice.company, company)
|
||||
>>> assertEqual(
|
||||
... invoice.total_amount,
|
||||
... Decimal('1729.00') if cash_rounding else Decimal('1728.70'))
|
||||
>>> invoice.tax_amount
|
||||
Decimal('292.20')
|
||||
>>> len(invoice.lines)
|
||||
7
|
||||
|
||||
>>> attachments = Attachment.find([])
|
||||
>>> len(attachments)
|
||||
3
|
||||
>>> assertEqual({a.resource for a in attachments}, {invoice})
|
||||
>>> sorted((a.name, a.type) for a in attachments)
|
||||
[('Drawing Doc2.pdf', 'data'), ('Framework agreement Contract321', 'data'), ('Timesheet Doc1', 'link')]
|
||||
@@ -0,0 +1,56 @@
|
||||
===========================
|
||||
UBL 2 Invoice Parse Trivial
|
||||
===========================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import datetime as dt
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.account.tests.tools import create_chart
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.modules.currency.tests.tools import get_currency
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
>>> from trytond.tools import file_open
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules(
|
||||
... ['edocument_ubl', 'account_invoice'], create_company, create_chart)
|
||||
|
||||
>>> EInvoice = Model.get('edocument.ubl.invoice')
|
||||
>>> Invoice = Model.get('account.invoice')
|
||||
|
||||
Setup company::
|
||||
|
||||
>>> company = get_company()
|
||||
>>> company.party.name = 'North American Veeblefetzer'
|
||||
>>> company.party.save()
|
||||
|
||||
Create currency::
|
||||
|
||||
>>> eur = get_currency('CAD')
|
||||
|
||||
Parse the UBL invoice::
|
||||
|
||||
>>> with file_open(
|
||||
... 'edocument_ubl/tests/UBL-Invoice-2.1-Example-Trivial.xml',
|
||||
... mode='rb') as fp:
|
||||
... invoice_id = EInvoice.parse(fp.read(), config.context)
|
||||
|
||||
>>> invoice = Invoice(invoice_id)
|
||||
|
||||
>>> assertEqual(invoice.invoice_date, dt.date(2011, 9, 22))
|
||||
>>> invoice.party.name
|
||||
'Custom Cotter Pins'
|
||||
>>> assertEqual(invoice.company, company)
|
||||
>>> invoice.total_amount
|
||||
Decimal('100.00')
|
||||
>>> line, = invoice.lines
|
||||
>>> line.description
|
||||
'Cotter pin, MIL-SPEC'
|
||||
>>> line.quantity
|
||||
1.0
|
||||
>>> line.unit
|
||||
>>> line.unit_price
|
||||
Decimal('100.0000')
|
||||
269
modules/edocument_ubl/tests/test_module.py
Normal file
269
modules/edocument_ubl/tests/test_module.py
Normal file
@@ -0,0 +1,269 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
import datetime
|
||||
import os
|
||||
from decimal import Decimal
|
||||
from unittest.mock import MagicMock, Mock, patch
|
||||
|
||||
from lxml import etree
|
||||
|
||||
from trytond.pool import Pool
|
||||
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
|
||||
|
||||
|
||||
def get_invoice():
|
||||
pool = Pool()
|
||||
Address = pool.get('party.address')
|
||||
Company = pool.get('company.company')
|
||||
Country = pool.get('country.country')
|
||||
Currency = pool.get('currency.currency')
|
||||
Identifier = pool.get('party.identifier')
|
||||
Invoice = pool.get('account.invoice')
|
||||
InvoiceLine = pool.get('account.invoice.line')
|
||||
InvoiceTax = pool.get('account.invoice.tax')
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Party = pool.get('party.party')
|
||||
PaymentTerm = pool.get('account.invoice.payment_term')
|
||||
Product = pool.get('product.product')
|
||||
Tax = pool.get('account.tax')
|
||||
Uom = pool.get('product.uom')
|
||||
|
||||
address = Mock(spec=Address,
|
||||
street_unstructured="St sample, 15",
|
||||
street="St sample, 15\n2nd floor\nBox 1234\n",
|
||||
city="Scranton",
|
||||
postal_code="1000",
|
||||
subdivision=None,
|
||||
country=Mock(spec=Country,
|
||||
code='US'),
|
||||
)
|
||||
address.building_name = "Building A"
|
||||
address.country.name = "United States"
|
||||
identifier = MagicMock(
|
||||
spec=Identifier,
|
||||
type='be_vat',
|
||||
code='BE123456789')
|
||||
type(identifier).iso_6523 = Identifier.iso_6523
|
||||
type(identifier)._eas_type = Identifier._eas_type
|
||||
type(identifier).eas = Identifier.eas
|
||||
type(identifier).unece_code = Identifier.unece_code
|
||||
party = MagicMock(
|
||||
spec=Party,
|
||||
addresses=[address],
|
||||
identifiers=[identifier],
|
||||
)
|
||||
type(party).identifier_iso6523 = Party.identifier_iso6523
|
||||
type(party).identifier_eas = Party.identifier_eas
|
||||
party.name = "Michael Scott"
|
||||
company = Mock(spec=Company,
|
||||
party=Mock(
|
||||
spec=Party,
|
||||
addresses=[Mock(spec=Address,
|
||||
street_unstructured="Main street, 42",
|
||||
street="Main street, 42",
|
||||
country=Mock(spec=Country,
|
||||
code='US'))],
|
||||
identifiers=[Mock(
|
||||
spec=Identifier,
|
||||
type='us_ein',
|
||||
code='911144442')],
|
||||
))
|
||||
company.party.name = "Dunder Mifflin"
|
||||
company.party.address_get = Mock(return_value=company.party.addresses[0])
|
||||
taxes = [Mock(spec=InvoiceTax,
|
||||
tax=Mock(spec=Tax,
|
||||
legal_notice="Legal Notice",
|
||||
unece_category_code='S',
|
||||
unece_code='VAT',
|
||||
type='percentage',
|
||||
rate=Decimal('.1'),
|
||||
),
|
||||
base=Decimal('100.00'),
|
||||
amount=Decimal('10.00'),
|
||||
legal_notice="Legal Notice",
|
||||
)]
|
||||
product = Mock(spec=Product,
|
||||
code="12345",
|
||||
type='service',
|
||||
)
|
||||
product.name = "Product"
|
||||
product.identifier_get.return_value = '98412345678908'
|
||||
lines = [Mock(spec=InvoiceLine,
|
||||
type='line',
|
||||
product=product,
|
||||
unit=Mock(spec=Uom,
|
||||
),
|
||||
quantity=1,
|
||||
unit_price=Decimal('100.0000'),
|
||||
amount=Decimal('100.00'),
|
||||
description="Description",
|
||||
invoice_taxes=taxes,
|
||||
)]
|
||||
invoice = MagicMock(spec=Invoice,
|
||||
id=-1,
|
||||
__int__=Mock(return_value=-1),
|
||||
type='out',
|
||||
sequence_type='invoice',
|
||||
number="001",
|
||||
party=party,
|
||||
party_lang='fr',
|
||||
party_tax_identifier=identifier,
|
||||
invoice_address=party.addresses[0],
|
||||
company=company,
|
||||
currency=Mock(spec=Currency,
|
||||
code='USD',
|
||||
round=lambda a: a),
|
||||
invoice_date=datetime.date.today(),
|
||||
reference="PO1234",
|
||||
payment_term=Mock(spec=PaymentTerm, description="Direct"),
|
||||
lines=lines,
|
||||
line_lines=lines,
|
||||
taxes=taxes,
|
||||
untaxed_amount=Decimal('100.00'),
|
||||
tax_amount=Decimal('10.00'),
|
||||
total_amount=Decimal('110.00'),
|
||||
amount_to_pay=Decimal('110.00'),
|
||||
lines_to_pay=[Mock(spec=MoveLine,
|
||||
maturity_date=datetime.date.today(),
|
||||
amount=Decimal('110.00'),
|
||||
)],
|
||||
sales=[],
|
||||
state='posted',
|
||||
)
|
||||
return invoice
|
||||
|
||||
|
||||
class EdocumentUblTestCase(ModuleTestCase):
|
||||
"Test Edocument Ubl module"
|
||||
module = 'edocument_ubl'
|
||||
extras = [
|
||||
'account_invoice', 'document_incoming_invoice', 'purchase', 'sale']
|
||||
|
||||
@with_transaction()
|
||||
def test_Invoice_2(self):
|
||||
"Test Invoice-2"
|
||||
pool = Pool()
|
||||
Template = pool.get('edocument.ubl.invoice')
|
||||
InvoiceReport = pool.get('account.invoice', type='report')
|
||||
with patch.object(InvoiceReport, 'execute') as execute:
|
||||
execute.return_value = ['pdf', b'data', False, 'Invoice-1234']
|
||||
invoice = get_invoice()
|
||||
template = Template(invoice)
|
||||
|
||||
invoice_string = template.render('2')
|
||||
invoice_xml = etree.fromstring(invoice_string)
|
||||
schema_file = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
'2.4', 'maindoc', 'UBL-Invoice-2.4.xsd')
|
||||
schema = etree.XMLSchema(etree.parse(schema_file))
|
||||
schema.assertValid(invoice_xml)
|
||||
|
||||
@with_transaction()
|
||||
def test_Invoice_2_Peppol_BIS_3(self):
|
||||
"Test Invoice-2"
|
||||
pool = Pool()
|
||||
Template = pool.get('edocument.ubl.invoice')
|
||||
InvoiceReport = pool.get('account.invoice', type='report')
|
||||
with patch.object(InvoiceReport, 'execute') as execute:
|
||||
execute.return_value = ['pdf', b'data', False, 'Invoice-1234']
|
||||
invoice = get_invoice()
|
||||
template = Template(invoice)
|
||||
|
||||
invoice_string = template.render('2', specification='peppol-bis-3')
|
||||
invoice_xml = etree.fromstring(invoice_string)
|
||||
schema_file = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
'2.4', 'maindoc', 'UBL-Invoice-2.4.xsd')
|
||||
schema = etree.XMLSchema(etree.parse(schema_file))
|
||||
schema.assertValid(invoice_xml)
|
||||
|
||||
@with_transaction()
|
||||
def test_CreditNote_2(self):
|
||||
"Test CreditNote-2"
|
||||
pool = Pool()
|
||||
Template = pool.get('edocument.ubl.invoice')
|
||||
InvoiceReport = pool.get('account.invoice', type='report')
|
||||
with patch.object(InvoiceReport, 'execute') as execute:
|
||||
execute.return_value = ['pdf', b'data', False, 'Invoice-1234']
|
||||
invoice = get_invoice()
|
||||
invoice.sequence_type = 'credit_note'
|
||||
for line in invoice.lines:
|
||||
line.quantity *= -1
|
||||
invoice.untaxed_amount *= -1
|
||||
invoice.tax_amount *= -1
|
||||
invoice.total_amount *= -1
|
||||
invoice.amount_to_pay *= -1
|
||||
for line in invoice.lines_to_pay:
|
||||
line.amount *= -1
|
||||
template = Template(invoice)
|
||||
|
||||
invoice_string = template.render('2')
|
||||
invoice_xml = etree.fromstring(invoice_string)
|
||||
schema_file = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
'2.4', 'maindoc', 'UBL-CreditNote-2.4.xsd')
|
||||
schema = etree.XMLSchema(etree.parse(schema_file))
|
||||
schema.assertValid(invoice_xml)
|
||||
|
||||
@with_transaction()
|
||||
def test_CreditNote_2_Peppol_BIS_3(self):
|
||||
"Test CreditNote-2"
|
||||
pool = Pool()
|
||||
Template = pool.get('edocument.ubl.invoice')
|
||||
InvoiceReport = pool.get('account.invoice', type='report')
|
||||
with patch.object(InvoiceReport, 'execute') as execute:
|
||||
execute.return_value = ['pdf', b'data', False, 'Invoice-1234']
|
||||
invoice = get_invoice()
|
||||
invoice.sequence_type = 'credit_note'
|
||||
for line in invoice.lines:
|
||||
line.quantity *= -1
|
||||
invoice.untaxed_amount *= -1
|
||||
invoice.tax_amount *= -1
|
||||
invoice.total_amount *= -1
|
||||
invoice.amount_to_pay *= -1
|
||||
for line in invoice.lines_to_pay:
|
||||
line.amount *= -1
|
||||
template = Template(invoice)
|
||||
|
||||
invoice_string = template.render('2', specification='peppol-bis-3')
|
||||
invoice_xml = etree.fromstring(invoice_string)
|
||||
schema_file = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
'2.4', 'maindoc', 'UBL-CreditNote-2.4.xsd')
|
||||
schema = etree.XMLSchema(etree.parse(schema_file))
|
||||
schema.assertValid(invoice_xml)
|
||||
|
||||
@with_transaction()
|
||||
def test_identifier_eas(self):
|
||||
"Test EAS identifier"
|
||||
pool = Pool()
|
||||
Identifier = pool.get('party.identifier')
|
||||
|
||||
for type, code, eas_code, eas, vatin in [
|
||||
('gr_vat', '023456783',
|
||||
'9933', 'el023456783', 'EL023456783'),
|
||||
('eu_vat', 'EL023456783',
|
||||
'9933', 'el023456783', 'EL023456783'),
|
||||
('eu_vat', 'GR023456783',
|
||||
'9933', 'el023456783', 'EL023456783'),
|
||||
('be_vat', '0403019261',
|
||||
'9925', 'be0403019261', 'BE0403019261'),
|
||||
('eu_vat', 'BE0403019261',
|
||||
'9925', 'be0403019261', 'BE0403019261'),
|
||||
('gb_vat', '980780684',
|
||||
'9932', 'gb980780684', 'GB980780684'),
|
||||
('eu_vat', 'GB980780684',
|
||||
'9932', 'gb980780684', 'GB980780684'),
|
||||
('eu_vat', 'XI980780684',
|
||||
'9932', 'gb980780684', 'GB980780684'),
|
||||
]:
|
||||
with self.subTest(type=type, code=code):
|
||||
identifier = Identifier(type=type, code=code)
|
||||
|
||||
self.assertEqual(identifier.eas_code, eas_code)
|
||||
self.assertEqual(identifier.eas, eas)
|
||||
self.assertEqual(identifier.vatin, vatin)
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
8
modules/edocument_ubl/tests/test_scenario.py
Normal file
8
modules/edocument_ubl/tests/test_scenario.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.tests.test_tryton import load_doc_tests
|
||||
|
||||
|
||||
def load_tests(*args, **kwargs):
|
||||
return load_doc_tests(__name__, __file__, *args, **kwargs)
|
||||
33
modules/edocument_ubl/tryton.cfg
Normal file
33
modules/edocument_ubl/tryton.cfg
Normal file
@@ -0,0 +1,33 @@
|
||||
[tryton]
|
||||
version=7.8.6
|
||||
depends:
|
||||
edocument_unece
|
||||
ir
|
||||
party
|
||||
extras_depend:
|
||||
account_cash_rounding
|
||||
account_invoice
|
||||
document_incoming_invoice
|
||||
purchase
|
||||
sale
|
||||
xml:
|
||||
account.xml
|
||||
message.xml
|
||||
|
||||
[register]
|
||||
model:
|
||||
party.Party
|
||||
party.Identifier
|
||||
|
||||
[register account_invoice]
|
||||
model:
|
||||
edocument.Invoice
|
||||
account.InvoiceEdocumentStart
|
||||
|
||||
[register account_invoice purchase]
|
||||
model:
|
||||
edocument.Invoice_Purchase
|
||||
|
||||
[register document_incoming_invoice]
|
||||
model:
|
||||
document.Incoming
|
||||
Reference in New Issue
Block a user