diff --git a/addons/account_edi_ubl_cii/i18n/account_edi_ubl_cii.pot b/addons/account_edi_ubl_cii/i18n/account_edi_ubl_cii.pot
index 2873c152f99..6d9c1565513 100644
--- a/addons/account_edi_ubl_cii/i18n/account_edi_ubl_cii.pot
+++ b/addons/account_edi_ubl_cii/i18n/account_edi_ubl_cii.pot
@@ -686,7 +686,8 @@ msgstr ""
#. odoo-python
#: code:addons/account_edi_ubl_cii/models/account_edi_common.py:0
#, python-format
-msgid "No gross price nor net price found for line in xml"
+msgid ""
+"No gross price, net price nor line subtotal amount found for line in xml"
msgstr ""
#. module: account_edi_ubl_cii
diff --git a/addons/account_edi_ubl_cii/models/account_edi_common.py b/addons/account_edi_ubl_cii/models/account_edi_common.py
index f096a6ae63e..34601565af8 100644
--- a/addons/account_edi_ubl_cii/models/account_edi_common.py
+++ b/addons/account_edi_ubl_cii/models/account_edi_common.py
@@ -621,8 +621,10 @@ class AccountEdiCommon(models.AbstractModel):
price_unit = gross_price_unit / basis_qty
elif net_price_unit is not None:
price_unit = (net_price_unit + rebate) / basis_qty
+ elif price_subtotal is not None:
+ price_unit = (price_subtotal + allow_charge_amount) / billed_qty
else:
- raise UserError(_("No gross price nor net price found for line in xml"))
+ raise UserError(_("No gross price, net price nor line subtotal amount found for line in xml"))
# discount
discount = 0
diff --git a/addons/l10n_account_edi_ubl_cii_tests/tests/test_files/from_odoo/bis3_out_invoice_no_prices.xml b/addons/l10n_account_edi_ubl_cii_tests/tests/test_files/from_odoo/bis3_out_invoice_no_prices.xml
new file mode 100644
index 00000000000..6936362d26e
--- /dev/null
+++ b/addons/l10n_account_edi_ubl_cii_tests/tests/test_files/from_odoo/bis3_out_invoice_no_prices.xml
@@ -0,0 +1,168 @@
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ INV/2017/01/0002
+ 2017-01-01
+ 2017-02-28
+ 380
+ test narration
+ USD
+ ref_partner_2
+
+ ref_move
+
+
+
+ BE0202239951
+
+ partner_1
+
+
+ Chaussée de Namur 40
+ Ramillies
+ 1367
+
+ BE
+
+
+
+ BE0202239951
+
+ VAT
+
+
+
+ partner_1
+ BE0202239951
+
+
+ partner_1
+
+
+
+
+
+ BE0477472701
+
+ partner_2
+
+
+ Rue des Bourlottes 9
+ Ramillies
+ 1367
+
+ BE
+
+
+
+ BE0477472701
+
+ VAT
+
+
+
+ partner_2
+ BE0477472701
+
+
+ partner_2
+
+
+
+
+ 30
+ +++000/0000/26268+++
+
+ BE15001559627230
+
+
+
+ 30% Advance End of Following Month
+
+
+ 482.22
+
+ 1782.00
+ 374.22
+
+ S
+ 21.0
+
+ VAT
+
+
+
+
+ 900.00
+ 108.00
+
+ S
+ 12.0
+
+ VAT
+
+
+
+
+
+ 2682.00
+ 2682.00
+ 3164.22
+ 0.00
+ 3164.22
+
+
+ 901
+ 2.0
+ 1782.00
+
+ false
+ 95
+ 198.00
+
+
+ product_a
+ product_a
+
+ S
+ 21.0
+
+ VAT
+
+
+
+
+
+ 902
+ 10.0
+ 1000.00
+
+ product_b
+ product_b
+
+ S
+ 12.0
+
+ VAT
+
+
+
+
+
+ 903
+ -1.0
+ -100.00
+
+ product_b
+ product_b
+
+ S
+ 12.0
+
+ VAT
+
+
+
+
+
diff --git a/addons/l10n_account_edi_ubl_cii_tests/tests/test_xml_ubl_be.py b/addons/l10n_account_edi_ubl_cii_tests/tests/test_xml_ubl_be.py
index c47643e6598..798b41dfccc 100644
--- a/addons/l10n_account_edi_ubl_cii_tests/tests/test_xml_ubl_be.py
+++ b/addons/l10n_account_edi_ubl_cii_tests/tests/test_xml_ubl_be.py
@@ -442,8 +442,18 @@ class TestUBLBE(TestUBLCommon, TestAccountMoveSendCommon):
self.assertTrue(created_bill)
def test_import_invoice_xml(self):
- self._assert_imported_invoice_from_file(subfolder='tests/test_files/from_odoo', filename='bis3_out_invoice.xml',
- amount_total=3164.22, amount_tax=482.22, list_line_subtotals=[1782, 1000, -100], currency_id=self.currency_data['currency'].id)
+ kwargs = {
+ 'subfolder': 'tests/test_files/from_odoo',
+ 'amount_total': 3164.22,
+ 'amount_tax': 482.22,
+ 'list_line_subtotals': [1782, 1000, -100],
+ 'list_line_price_unit': [990, 100, 100],
+ 'list_line_discount': [10, 0, 0],
+ 'currency_id': self.currency_data['currency'].id,
+ }
+ self._assert_imported_invoice_from_file(filename='bis3_out_invoice.xml', **kwargs)
+ # same as the file above, but the are missing in the invoice lines
+ self._assert_imported_invoice_from_file(filename='bis3_out_invoice_no_prices.xml', **kwargs)
def test_import_invoice_xml_open_peppol_examples(self):
# Source: https://github.com/OpenPEPPOL/peppol-bis-invoice-3/tree/master/rules/examples