diff --git a/account_invoice_import_invoice2data/demo/demo_data.xml b/account_invoice_import_invoice2data/demo/demo_data.xml index d32cd646ed5..a1926b055e6 100644 --- a/account_invoice_import_invoice2data/demo/demo_data.xml +++ b/account_invoice_import_invoice2data/demo/demo_data.xml @@ -30,5 +30,46 @@ + + Beeswax XL + Acme beeswax + 17589684 + 42 + consu + + + + + + Olive Oil + + + + consu + + + 987123 + + + + + Luxury Truffles + + + + consu + + + LUX_TRF + + + + Azure Interior Multiline Auto Product + + nline_auto_product + diff --git a/account_invoice_import_invoice2data/tests/pdf/AzureInterior.pdf b/account_invoice_import_invoice2data/tests/pdf/AzureInterior.pdf new file mode 100644 index 00000000000..b342e2b02bd Binary files /dev/null and b/account_invoice_import_invoice2data/tests/pdf/AzureInterior.pdf differ diff --git a/account_invoice_import_invoice2data/tests/test_invoice_import.py b/account_invoice_import_invoice2data/tests/test_invoice_import.py index 8c5c30ee4d5..39ddb950e56 100644 --- a/account_invoice_import_invoice2data/tests/test_invoice_import.py +++ b/account_invoice_import_invoice2data/tests/test_invoice_import.py @@ -100,3 +100,98 @@ def test_import_free_invoice(self): self.assertEqual(len(invoices), 1) inv = invoices[0] self.assertEqual(fields.Date.to_string(inv.invoice_date), "2015-07-02") + + def test_import_azure_interior_invoice(self): + """Function for testing almost all supported fields""" + filename = "AzureInterior.pdf" + invoice_file = file_open( + "account_invoice_import_invoice2data/tests/pdf/" + filename, "rb" + ) + pdf_file = invoice_file.read() + pdf_file_b64 = base64.b64encode(pdf_file) + wiz = self.env["account.invoice.import"].create( + { + "invoice_file": pdf_file_b64, + "invoice_filename": filename, + } + ) + invoice_file.close() + wiz.import_invoice() + # create_invoice_action_button + wiz.create_invoice_action(origin="BOSD Import Vendor Bill wizard") + # Check result of invoice creation + invoices = self.env["account.move"].search( + [ + ("state", "=", "draft"), + # ("move_type", "=", "in_invoice"), + # ("ref", "=", "INV/2023/03/0008"), + ("ref", "ilike", "INV"), + ] + ) + self.assertEqual(len(invoices), 1) + inv = invoices[0] + self.assertEqual(inv.move_type, "in_invoice") + self.assertEqual(fields.Date.to_string(inv.invoice_date), "2023-03-20") + self.assertEqual(inv.partner_id, self.env.ref("base.res_partner_12")) + self.assertEqual(inv.journal_id.type, "purchase") + self.assertEqual(float_compare(inv.amount_total, 279.84, precision_digits=2), 0) + self.assertEqual( + float_compare(inv.amount_untaxed, 262.9, precision_digits=2), 0 + ) + + self.assertEqual( + inv.narration, + "Due to global inflation our payment term has changed to 15 days.", + ) + + # Following tests are disabled. Not yet implemented in account_invoice_import + # self.assertEqual(inv.journal_id.payment_reference, "202309097001") + # self.assertEqual(inv.journal_id.incoterm_id, self.env.ref("account.incoterm_DPU") + + self.assertEqual(len(inv.invoice_line_ids), 8) + iline = inv.invoice_line_ids[0] + self.assertEqual(iline.name, "--- Non Food ---") + self.assertEqual(iline.display_type, "line_section") + iline = inv.invoice_line_ids[1] + self.assertEqual(iline.name, "Beeswax XL\nAcme beeswax") + self.assertEqual( + iline.product_id, + self.env.ref("account_invoice_import_invoice2data.product_beeswax_xl"), + ) + self.assertEqual(float_compare(iline.quantity, 1.0, precision_digits=0), 0) + self.assertEqual(float_compare(iline.price_unit, 42.00, precision_digits=2), 0) + + iline = inv.invoice_line_ids[2] + self.assertEqual(iline.name, "Office Chair") + self.assertEqual( + iline.product_id, + self.env.ref("product.product_delivery_01"), + ) + self.assertEqual(float_compare(iline.quantity, 1.0, precision_digits=0), 0) + self.assertEqual(float_compare(iline.price_unit, 70.00, precision_digits=2), 0) + + iline = inv.invoice_line_ids[3] + self.assertEqual(iline.name, "--- Food Products ---") + self.assertEqual(iline.display_type, "line_section") + iline = inv.invoice_line_ids[4] + self.assertEqual(iline.name, "Olive Oil") + self.assertEqual( + iline.product_id, + self.env.ref("account_invoice_import_invoice2data.olive_oil"), + ) + # todo test discount, not yet implemented in account_invoice_import + self.assertEqual(float_compare(iline.quantity, 1.0, precision_digits=0), 0) + self.assertEqual(float_compare(iline.price_unit, 1.00, precision_digits=2), 0) + iline = inv.invoice_line_ids[5] + self.assertEqual( + iline.name, "Our Olive Oil is delivered in a re-usable glass container" + ) + self.assertEqual(iline.display_type, "line_note") + iline = inv.invoice_line_ids[6] + self.assertEqual(iline.name, "Luxury Truffles") + self.assertEqual( + iline.product_id, + self.env.ref("account_invoice_import_invoice2data.luxury_truffles"), + ) + self.assertEqual(float_compare(iline.quantity, 15.0, precision_digits=0), 0) + self.assertEqual(float_compare(iline.price_unit, 10.00, precision_digits=2), 0)