From e55741f1c5349ce52636163d48e331437f8f2cb2 Mon Sep 17 00:00:00 2001 From: Simone Rubino Date: Wed, 26 Jul 2023 10:19:48 +0200 Subject: [PATCH 1/2] [FIX] l10n_it_reverse_charge: Description lines management Otherwise bills having description lines raise an error when confirmed --- l10n_it_reverse_charge/models/account_move.py | 12 +++---- l10n_it_reverse_charge/tests/test_rc.py | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/l10n_it_reverse_charge/models/account_move.py b/l10n_it_reverse_charge/models/account_move.py index d00d80597694..8b211025cab4 100644 --- a/l10n_it_reverse_charge/models/account_move.py +++ b/l10n_it_reverse_charge/models/account_move.py @@ -24,11 +24,7 @@ def _compute_rc_flag(self): for line in self: move = line.move_id # see invoice_line_ids field definition - is_invoice_line = line.display_type in ( - "product", - "line_section", - "line_note", - ) + is_invoice_line = line.display_type == "product" is_rc = ( move.is_purchase_document() and move.fiscal_position_id.rc_type_id @@ -427,7 +423,8 @@ def generate_self_invoice(self): ) if line_tax_ids and mapped_taxes: rc_invoice_line["tax_ids"] = [(6, False, mapped_taxes.ids)] - rc_invoice_line["account_id"] = rc_type.transitory_account_id.id + if line.account_id: + rc_invoice_line["account_id"] = rc_type.transitory_account_id.id rc_invoice_lines.append([0, False, rc_invoice_line]) if rc_invoice_lines: inv_vals = self.rc_inv_vals( @@ -497,7 +494,8 @@ def generate_supplier_self_invoice(self): line_vals["tax_ids"] = [ (6, False, mapped_taxes.ids), ] - line_vals["account_id"] = rc_type.transitory_account_id.id + if inv_line.account_id: + line_vals["account_id"] = rc_type.transitory_account_id.id invoice_line_vals.append((0, 0, line_vals)) supplier_invoice.write({"invoice_line_ids": invoice_line_vals}) self.rc_self_purchase_invoice_id = supplier_invoice.id diff --git a/l10n_it_reverse_charge/tests/test_rc.py b/l10n_it_reverse_charge/tests/test_rc.py index 6e96ceeada76..e6bc70ee9ece 100644 --- a/l10n_it_reverse_charge/tests/test_rc.py +++ b/l10n_it_reverse_charge/tests/test_rc.py @@ -236,3 +236,38 @@ def test_extra_EU_draft_and_reconfirm(self): # Assert self.assertEqual(invoice.state, "posted") + + def test_description_lines(self): + """A Reverse Charge Bill can be confirmed + when contains notes and sections.""" + # Arrange: Create a Reverse Charge Bill with notes and sections + bill = self.create_invoice( + self.supplier_extraEU, + amounts=[100], + taxes=self.tax_0_pur, + post=False, + ) + bill.invoice_line_ids = [ + ( + 0, + 0, + { + "display_type": "line_note", + "name": "Test note", + }, + ), + ( + 0, + 0, + { + "display_type": "line_section", + "name": "Test section", + }, + ), + ] + + # Act + bill.action_post() + + # Assert + self.assertEqual(bill.state, "posted") From 60d93cead3eb66f07a03564a14217f07325d7e64 Mon Sep 17 00:00:00 2001 From: Simone Rubino Date: Wed, 26 Jul 2023 11:28:39 +0200 Subject: [PATCH 2/2] [IMP] l10n_it_reverse_charge: Test Negative lines management --- l10n_it_reverse_charge/tests/test_rc.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/l10n_it_reverse_charge/tests/test_rc.py b/l10n_it_reverse_charge/tests/test_rc.py index e6bc70ee9ece..61c9cd223e14 100644 --- a/l10n_it_reverse_charge/tests/test_rc.py +++ b/l10n_it_reverse_charge/tests/test_rc.py @@ -271,3 +271,16 @@ def test_description_lines(self): # Assert self.assertEqual(bill.state, "posted") + + def test_negative_lines(self): + """A Reverse Charge Bill can be confirmed + when contains negative lines.""" + # Arrange: Create a Reverse Charge Bill with negative lines + bill = self.create_invoice( + self.supplier_extraEU, + amounts=[100, -10], + taxes=self.tax_0_pur, + ) + + # Assert + self.assertEqual(bill.state, "posted")