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.
Files changed (86) hide show
  1. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/CHANGELOG +10 -0
  2. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/PKG-INFO +1 -1
  3. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/edocument.py +6 -4
  4. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/template/2/CreditNote.xml +11 -11
  5. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/template/2/Invoice.xml +11 -11
  6. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tox.ini +1 -1
  7. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tryton.cfg +1 -1
  8. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/PKG-INFO +1 -1
  9. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/COPYRIGHT +0 -0
  10. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/LICENSE +0 -0
  11. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/MANIFEST.in +0 -0
  12. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/README.rst +0 -0
  13. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/__init__.py +0 -0
  14. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/account.py +0 -0
  15. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/account.xml +0 -0
  16. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/conf.py +0 -0
  17. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/design.rst +0 -0
  18. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/index.rst +0 -0
  19. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/releases.rst +0 -0
  20. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/doc/requirements-doc.txt +0 -0
  21. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/document.py +0 -0
  22. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/exceptions.py +0 -0
  23. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/icons/LICENSE +0 -0
  24. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/bg.po +0 -0
  25. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/ca.po +0 -0
  26. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/cs.po +0 -0
  27. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/de.po +0 -0
  28. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/es.po +0 -0
  29. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/es_419.po +0 -0
  30. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/et.po +0 -0
  31. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/fa.po +0 -0
  32. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/fi.po +0 -0
  33. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/fr.po +0 -0
  34. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/hu.po +0 -0
  35. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/id.po +0 -0
  36. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/it.po +0 -0
  37. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/lo.po +0 -0
  38. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/lt.po +0 -0
  39. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/nl.po +0 -0
  40. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/pl.po +0 -0
  41. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/pt.po +0 -0
  42. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/ro.po +0 -0
  43. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/ru.po +0 -0
  44. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/sl.po +0 -0
  45. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/tr.po +0 -0
  46. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/uk.po +0 -0
  47. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/locale/zh_CN.po +0 -0
  48. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/message.xml +0 -0
  49. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/party.py +0 -0
  50. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/setup.cfg +0 -0
  51. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/setup.py +0 -0
  52. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/template/2/base.xml +0 -0
  53. {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
  54. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/BDNDR-UnqualifiedDataTypes-1.1.xsd +0 -0
  55. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-CommonAggregateComponents-2.4.xsd +0 -0
  56. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-CommonBasicComponents-2.4.xsd +0 -0
  57. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-CommonExtensionComponents-2.4.xsd +0 -0
  58. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-CommonSignatureComponents-2.4.xsd +0 -0
  59. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-ExtensionContentDataType-2.4.xsd +0 -0
  60. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-QualifiedDataTypes-2.4.xsd +0 -0
  61. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-SignatureAggregateComponents-2.4.xsd +0 -0
  62. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-SignatureBasicComponents-2.4.xsd +0 -0
  63. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-XAdES01903v132-201601-2.4.xsd +0 -0
  64. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-XAdES01903v141-201601-2.4.xsd +0 -0
  65. {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
  66. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-xmldsig1-schema-2.4.xsd +0 -0
  67. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/common/UBL-xmldsig11-schema-2.4.xsd +0 -0
  68. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/maindoc/UBL-CreditNote-2.4.xsd +0 -0
  69. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/2.4/maindoc/UBL-Invoice-2.4.xsd +0 -0
  70. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/UBL-CreditNote-2.1-Example.xml +0 -0
  71. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/UBL-Invoice-2.1-Example-Trivial.xml +0 -0
  72. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/UBL-Invoice-2.1-Example.xml +0 -0
  73. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/__init__.py +0 -0
  74. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_credit_note_parse.json +0 -0
  75. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_credit_note_parse.rst +0 -0
  76. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_invoice_parse.json +0 -0
  77. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_invoice_parse.rst +0 -0
  78. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/scenario_ubl_2_invoice_parse_trivial.rst +0 -0
  79. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/test_module.py +0 -0
  80. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/tests/test_scenario.py +0 -0
  81. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/SOURCES.txt +0 -0
  82. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/dependency_links.txt +0 -0
  83. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/entry_points.txt +0 -0
  84. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/not-zip-safe +0 -0
  85. {trytond_edocument_ubl-7.8.6 → trytond_edocument_ubl-7.8.8}/trytond_edocument_ubl.egg-info/requires.txt +0 -0
  86. {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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trytond_edocument_ubl
3
- Version: 7.8.6
3
+ Version: 7.8.8
4
4
  Summary: Tryton module for electronic document UBL
5
5
  Home-page: http://www.tryton.org/
6
6
  Download-URL: http://downloads.tryton.org/7.8/
@@ -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(s.reference for s in self.invoice.sales)
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(s.number for s in self.invoice.sales)
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>
@@ -12,7 +12,7 @@ commands_post =
12
12
  deps =
13
13
  coverage
14
14
  unittest-xml-reporting
15
- postgresql: psycopg2 >= 2.7.0
15
+ postgresql: psycopg2-binary >= 2.7.0
16
16
  passenv = *
17
17
  setenv =
18
18
  sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
@@ -1,5 +1,5 @@
1
1
  [tryton]
2
- version=7.8.6
2
+ version=7.8.8
3
3
  depends:
4
4
  edocument_unece
5
5
  ir
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trytond_edocument_ubl
3
- Version: 7.8.6
3
+ Version: 7.8.8
4
4
  Summary: Tryton module for electronic document UBL
5
5
  Home-page: http://www.tryton.org/
6
6
  Download-URL: http://downloads.tryton.org/7.8/