trytond-edocument-ubl 7.8.6__tar.gz → 7.8.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/CHANGELOG +10 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/PKG-INFO +1 -1
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/edocument.py +6 -4
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/template/2/CreditNote.xml +11 -11
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/template/2/Invoice.xml +11 -11
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tox.ini +1 -1
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tryton.cfg +1 -1
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/PKG-INFO +1 -1
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/COPYRIGHT +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/LICENSE +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/MANIFEST.in +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/README.rst +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/__init__.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/account.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/account.xml +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/conf.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/design.rst +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/index.rst +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/releases.rst +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/requirements-doc.txt +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/document.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/exceptions.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/icons/LICENSE +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/bg.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/ca.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/cs.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/de.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/es.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/es_419.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/et.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/fa.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/fi.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/fr.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/hu.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/id.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/it.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/lo.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/lt.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/nl.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/pl.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/pt.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/ro.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/ru.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/sl.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/tr.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/uk.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/zh_CN.po +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/message.xml +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/party.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/setup.cfg +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/setup.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/template/2/base.xml +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/BDNDR-CCTS_CCT_SchemaModule-1.1.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/BDNDR-UnqualifiedDataTypes-1.1.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-CommonAggregateComponents-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-CommonBasicComponents-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-CommonExtensionComponents-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-CommonSignatureComponents-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-ExtensionContentDataType-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-QualifiedDataTypes-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-SignatureAggregateComponents-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-SignatureBasicComponents-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-XAdES01903v132-201601-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-XAdES01903v141-201601-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-xmldsig-core-schema-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-xmldsig1-schema-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-xmldsig11-schema-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/maindoc/UBL-CreditNote-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/maindoc/UBL-Invoice-2.4.xsd +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/UBL-CreditNote-2.1-Example.xml +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/UBL-Invoice-2.1-Example-Trivial.xml +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/UBL-Invoice-2.1-Example.xml +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/__init__.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_credit_note_parse.json +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_credit_note_parse.rst +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_invoice_parse.json +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_invoice_parse.rst +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_invoice_parse_trivial.rst +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/test_module.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/test_scenario.py +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/SOURCES.txt +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/dependency_links.txt +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/entry_points.txt +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/not-zip-safe +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/requires.txt +0 -0
- {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/top_level.txt +0 -0
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
|
|
2
|
+
Version 7.8.8 - 2026-08-04
|
|
3
|
+
--------------------------
|
|
4
|
+
* Bug fixes (see mercurial logs for details)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Version 7.8.7 - 2026-03-18
|
|
8
|
+
--------------------------
|
|
9
|
+
* Bug fixes (see mercurial logs for details)
|
|
10
|
+
|
|
11
|
+
|
|
2
12
|
Version 7.8.6 - 2026-03-02
|
|
3
13
|
--------------------------
|
|
4
14
|
* Bug fixes (see mercurial logs for details)
|
|
@@ -176,12 +176,14 @@ class Invoice(Model):
|
|
|
176
176
|
@cached_property
|
|
177
177
|
def sale_reference(self):
|
|
178
178
|
if hasattr(self.invoice, 'sales'):
|
|
179
|
-
return ','.join(
|
|
179
|
+
return ','.join(
|
|
180
|
+
filter(None, (s.reference for s in self.invoice.sales)))
|
|
180
181
|
|
|
181
182
|
@cached_property
|
|
182
183
|
def sale_number(self):
|
|
183
184
|
if hasattr(self.invoice, 'sales'):
|
|
184
|
-
return ','.join(
|
|
185
|
+
return ','.join(
|
|
186
|
+
filter(None, (s.number for s in self.invoice.sales)))
|
|
185
187
|
|
|
186
188
|
@property
|
|
187
189
|
def taxes(self):
|
|
@@ -436,7 +438,7 @@ class Invoice(Model):
|
|
|
436
438
|
|
|
437
439
|
line.unit_price = round_price(
|
|
438
440
|
Decimal(invoice_line.findtext('./{*}LineExtensionAmount'))
|
|
439
|
-
/ Decimal(str(line.quantity)))
|
|
441
|
+
/ Decimal(str(line.quantity or 1)))
|
|
440
442
|
|
|
441
443
|
if invoice_line.find('./{*}Item/{*}ClassifiedTaxCategory') is not None:
|
|
442
444
|
tax_categories = invoice_line.iterfind(
|
|
@@ -667,7 +669,7 @@ class Invoice(Model):
|
|
|
667
669
|
|
|
668
670
|
line.unit_price = round_price(
|
|
669
671
|
-Decimal(credit_note_line.findtext('./{*}LineExtensionAmount'))
|
|
670
|
-
/ Decimal(str(line.quantity)))
|
|
672
|
+
/ Decimal(str(line.quantity or -1)))
|
|
671
673
|
|
|
672
674
|
if (credit_note_line.find('./{*}Item/{*}ClassifiedTaxCategory')
|
|
673
675
|
is not None):
|
|
@@ -60,16 +60,16 @@ this repository contains the full copyright notices and license terms. -->
|
|
|
60
60
|
<py:otherwise>
|
|
61
61
|
<cac:PaymentTerms py:for="line in this.invoice.lines_to_pay">
|
|
62
62
|
<cbc:Note py:if="this.invoice.payment_term and this.invoice.payment_term.description">${this.invoice.payment_term.description}</cbc:Note>
|
|
63
|
-
<cbc:Amount py:attrs="{'currencyID': this.invoice.currency.code}">${line.amount}</cbc:Amount>
|
|
63
|
+
<cbc:Amount py:attrs="{'currencyID': this.invoice.currency.code}">${format(line.amount.normalize(), 'f')}</cbc:Amount>
|
|
64
64
|
<cbc:PaymentDueDate>${line.maturity_date}</cbc:PaymentDueDate>
|
|
65
65
|
</cac:PaymentTerms>
|
|
66
66
|
</py:otherwise>
|
|
67
67
|
</py:choose>
|
|
68
68
|
<cac:TaxTotal py:for="group, lines, amount in this.taxes">
|
|
69
|
-
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-amount}</cbc:TaxAmount>
|
|
69
|
+
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((-amount).normalize(), 'f')}</cbc:TaxAmount>
|
|
70
70
|
<cac:TaxSubtotal py:for="line in lines">
|
|
71
|
-
<cbc:TaxableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-line.base}</cbc:TaxableAmount>
|
|
72
|
-
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-line.amount}</cbc:TaxAmount>
|
|
71
|
+
<cbc:TaxableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((-line.base).normalize(), 'f')}</cbc:TaxableAmount>
|
|
72
|
+
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((-line.amount).normalize(), 'f')}</cbc:TaxAmount>
|
|
73
73
|
<cbc:Percent py:if="line.tax.type == 'percentage' and not (specification or '').startswith('peppol')">${format((line.tax.rate * 100).normalize(), 'f')}</cbc:Percent>
|
|
74
74
|
<cac:TaxCategory>
|
|
75
75
|
<cbc:ID py:if="line.tax.unece_category_code">${line.tax.unece_category_code}</cbc:ID>
|
|
@@ -82,18 +82,18 @@ this repository contains the full copyright notices and license terms. -->
|
|
|
82
82
|
</cac:TaxSubtotal>
|
|
83
83
|
</cac:TaxTotal>
|
|
84
84
|
<cac:LegalMonetaryTotal>
|
|
85
|
-
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-this.invoice.untaxed_amount}</cbc:LineExtensionAmount>
|
|
86
|
-
<cbc:TaxExclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-this.invoice.untaxed_amount}</cbc:TaxExclusiveAmount>
|
|
87
|
-
<cbc:TaxInclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-(this.invoice.untaxed_amount + this.invoice.tax_amount)}</cbc:TaxInclusiveAmount>
|
|
85
|
+
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((-this.invoice.untaxed_amount).normalize(), 'f')}</cbc:LineExtensionAmount>
|
|
86
|
+
<cbc:TaxExclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((-this.invoice.untaxed_amount).normalize(), 'f')}</cbc:TaxExclusiveAmount>
|
|
87
|
+
<cbc:TaxInclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((-(this.invoice.untaxed_amount + this.invoice.tax_amount)).normalize(), 'f')}</cbc:TaxInclusiveAmount>
|
|
88
88
|
<py:if test="this.invoice.total_amount != (this.invoice.untaxed_amount + this.invoice.tax_amount)">
|
|
89
|
-
<cbc:PayableRoundingAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-(this.invoice.total_amount - this.invoice.untaxed_amount - this.invoice.tax_amount)}</cbc:PayableRoundingAmount>
|
|
89
|
+
<cbc:PayableRoundingAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((-(this.invoice.total_amount - this.invoice.untaxed_amount - this.invoice.tax_amount)).normalize(), 'f')}</cbc:PayableRoundingAmount>
|
|
90
90
|
</py:if>
|
|
91
|
-
<cbc:PayableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-this.invoice.total_amount}</cbc:PayableAmount>
|
|
91
|
+
<cbc:PayableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((-this.invoice.total_amount).normalize(), 'f')}</cbc:PayableAmount>
|
|
92
92
|
</cac:LegalMonetaryTotal>
|
|
93
93
|
<cac:CreditNoteLine py:for="line_id, line in enumerate(this.lines, 1)">
|
|
94
94
|
<cbc:ID>${line_id}</cbc:ID>
|
|
95
95
|
<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>
|
|
96
|
-
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${-line.amount}</cbc:LineExtensionAmount>
|
|
96
|
+
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((-line.amount).normalize(), 'f')}</cbc:LineExtensionAmount>
|
|
97
97
|
<cac:Item>
|
|
98
98
|
<cbc:Description py:if="line.description">${line.description}</cbc:Description>
|
|
99
99
|
<cbc:Name>${line.product_name or line.summary}</cbc:Name>
|
|
@@ -117,7 +117,7 @@ this repository contains the full copyright notices and license terms. -->
|
|
|
117
117
|
</cac:ClassifiedTaxCategory>
|
|
118
118
|
</cac:Item>
|
|
119
119
|
<cac:Price>
|
|
120
|
-
<cbc:PriceAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.unit_price}</cbc:PriceAmount>
|
|
120
|
+
<cbc:PriceAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format(line.unit_price.normalize(), 'f')}</cbc:PriceAmount>
|
|
121
121
|
</cac:Price>
|
|
122
122
|
</cac:CreditNoteLine>
|
|
123
123
|
</CreditNote>
|
|
@@ -60,16 +60,16 @@ this repository contains the full copyright notices and license terms. -->
|
|
|
60
60
|
<py:otherwise>
|
|
61
61
|
<cac:PaymentTerms py:for="line in this.invoice.lines_to_pay">
|
|
62
62
|
<cbc:Note py:if="this.invoice.payment_term and this.invoice.payment_term.description">${this.invoice.payment_term.description}</cbc:Note>
|
|
63
|
-
<cbc:Amount py:attrs="{'currencyID': this.invoice.currency.code}">${line.amount}</cbc:Amount>
|
|
63
|
+
<cbc:Amount py:attrs="{'currencyID': this.invoice.currency.code}">${format(line.amount.normalize(), 'f')}</cbc:Amount>
|
|
64
64
|
<cbc:PaymentDueDate>${line.maturity_date}</cbc:PaymentDueDate>
|
|
65
65
|
</cac:PaymentTerms>
|
|
66
66
|
</py:otherwise>
|
|
67
67
|
</py:choose>
|
|
68
68
|
<cac:TaxTotal py:for="group, lines, amount in this.taxes">
|
|
69
|
-
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${amount}</cbc:TaxAmount>
|
|
69
|
+
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format(amount.normalize(), 'f')}</cbc:TaxAmount>
|
|
70
70
|
<cac:TaxSubtotal py:for="line in lines">
|
|
71
|
-
<cbc:TaxableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.base}</cbc:TaxableAmount>
|
|
72
|
-
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.amount}</cbc:TaxAmount>
|
|
71
|
+
<cbc:TaxableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format(line.base.normalize(), 'f')}</cbc:TaxableAmount>
|
|
72
|
+
<cbc:TaxAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format(line.amount.normalize(), 'f')}</cbc:TaxAmount>
|
|
73
73
|
<cbc:Percent py:if="line.tax.type == 'percentage' and not (specification or '').startswith('peppol')">${format((line.tax.rate * 100).normalize(), 'f')}</cbc:Percent>
|
|
74
74
|
<cac:TaxCategory>
|
|
75
75
|
<cbc:ID py:if="line.tax.unece_category_code">${line.tax.unece_category_code}</cbc:ID>
|
|
@@ -82,18 +82,18 @@ this repository contains the full copyright notices and license terms. -->
|
|
|
82
82
|
</cac:TaxSubtotal>
|
|
83
83
|
</cac:TaxTotal>
|
|
84
84
|
<cac:LegalMonetaryTotal>
|
|
85
|
-
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.untaxed_amount}</cbc:LineExtensionAmount>
|
|
86
|
-
<cbc:TaxExclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.untaxed_amount}</cbc:TaxExclusiveAmount>
|
|
87
|
-
<cbc:TaxInclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.untaxed_amount + this.invoice.tax_amount}</cbc:TaxInclusiveAmount>
|
|
85
|
+
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format(this.invoice.untaxed_amount.normalize(), 'f')}</cbc:LineExtensionAmount>
|
|
86
|
+
<cbc:TaxExclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format(this.invoice.untaxed_amount.normalize(), 'f')}</cbc:TaxExclusiveAmount>
|
|
87
|
+
<cbc:TaxInclusiveAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((this.invoice.untaxed_amount + this.invoice.tax_amount).normalize(), 'f')}</cbc:TaxInclusiveAmount>
|
|
88
88
|
<py:if test="this.invoice.total_amount != (this.invoice.untaxed_amount + this.invoice.tax_amount)">
|
|
89
|
-
<cbc:PayableRoundingAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.total_amount - this.invoice.untaxed_amount - this.invoice.tax_amount}</cbc:PayableRoundingAmount>
|
|
89
|
+
<cbc:PayableRoundingAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((this.invoice.total_amount - this.invoice.untaxed_amount - this.invoice.tax_amount).normalize(), 'f')}</cbc:PayableRoundingAmount>
|
|
90
90
|
</py:if>
|
|
91
|
-
<cbc:PayableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${this.invoice.total_amount}</cbc:PayableAmount>
|
|
91
|
+
<cbc:PayableAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format((this.invoice.total_amount).normalize(), 'f')}</cbc:PayableAmount>
|
|
92
92
|
</cac:LegalMonetaryTotal>
|
|
93
93
|
<cac:InvoiceLine py:for="line_id, line in enumerate(this.lines, 1)">
|
|
94
94
|
<cbc:ID>${line_id}</cbc:ID>
|
|
95
95
|
<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>
|
|
96
|
-
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.amount}</cbc:LineExtensionAmount>
|
|
96
|
+
<cbc:LineExtensionAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format(line.amount.normalize(), 'f')}</cbc:LineExtensionAmount>
|
|
97
97
|
<cac:Item>
|
|
98
98
|
<cbc:Description py:if="line.description">${line.description}</cbc:Description>
|
|
99
99
|
<cbc:Name>${line.product_name or line.summary}</cbc:Name>
|
|
@@ -117,7 +117,7 @@ this repository contains the full copyright notices and license terms. -->
|
|
|
117
117
|
</cac:ClassifiedTaxCategory>
|
|
118
118
|
</cac:Item>
|
|
119
119
|
<cac:Price>
|
|
120
|
-
<cbc:PriceAmount py:attrs="{'currencyID': this.invoice.currency.code}">${line.unit_price}</cbc:PriceAmount>
|
|
120
|
+
<cbc:PriceAmount py:attrs="{'currencyID': this.invoice.currency.code}">${format(line.unit_price.normalize(), 'f')}</cbc:PriceAmount>
|
|
121
121
|
</cac:Price>
|
|
122
122
|
</cac:InvoiceLine>
|
|
123
123
|
</Invoice>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/maindoc/UBL-CreditNote-2.4.xsd
RENAMED
|
File without changes
|
{trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/maindoc/UBL-Invoice-2.4.xsd
RENAMED
|
File without changes
|
{trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/UBL-CreditNote-2.1-Example.xml
RENAMED
|
File without changes
|
|
File without changes
|
{trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/UBL-Invoice-2.1-Example.xml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_invoice_parse.json
RENAMED
|
File without changes
|
{trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_invoice_parse.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|