diff --git a/l10n_it_account_stamp/models/account_move.py b/l10n_it_account_stamp/models/account_move.py index f301e02b9b4..03beed74dae 100644 --- a/l10n_it_account_stamp/models/account_move.py +++ b/l10n_it_account_stamp/models/account_move.py @@ -14,9 +14,9 @@ class AccountMove(models.Model): compute="_compute_tax_stamp", store=True, ) - tax_stamp_line_present = fields.Boolean( + tax_stamp_invoice_line_present = fields.Boolean( string="Stamp line is present in invoice", - compute="_compute_tax_stamp_line_present", + compute="_compute_tax_stamp_invoice_line_present", ) auto_compute_stamp = fields.Boolean( related="company_id.tax_stamp_product_id.auto_compute" @@ -60,7 +60,7 @@ def _compute_tax_stamp(self): if invoice.manually_apply_tax_stamp: invoice.tax_stamp = True - def add_tax_stamp_line(self): + def add_tax_stamp_invoice_line(self): for inv in self: if not inv.tax_stamp: raise UserError(_("Tax stamp is not applicable")) @@ -84,7 +84,6 @@ def add_tax_stamp_line(self): invoice_line_vals = { "move_id": inv.id, "product_id": stamp_product_id.id, - "is_stamp_line": True, "name": stamp_product_id.description_sale, "sequence": 99999, "account_id": stamp_account.id, @@ -108,9 +107,11 @@ def is_tax_stamp_line_present(self): "invoice_line_ids.product_id", "invoice_line_ids.product_id.is_stamp", ) - def _compute_tax_stamp_line_present(self): + def _compute_tax_stamp_invoice_line_present(self): for invoice in self: - invoice.tax_stamp_line_present = invoice.is_tax_stamp_product_present() + invoice.tax_stamp_invoice_line_present = ( + invoice.is_tax_stamp_product_present() + ) def is_tax_stamp_product_present(self): product_stamp = self.invoice_line_ids.filtered( diff --git a/l10n_it_account_stamp/tests/test_account_stamp_invoicing.py b/l10n_it_account_stamp/tests/test_account_stamp_invoicing.py index 3dceb6e8973..6dd911d262a 100644 --- a/l10n_it_account_stamp/tests/test_account_stamp_invoicing.py +++ b/l10n_it_account_stamp/tests/test_account_stamp_invoicing.py @@ -84,7 +84,7 @@ def test_keep_lines_description(self): invoice.action_post() # Add stamp and check that edited description is kept - invoice.add_tax_stamp_line() + invoice.add_tax_stamp_invoice_line() self.assertEqual(invoice.invoice_line_ids[0].name, edited_descr) def test_amount_total_changing_currency(self): @@ -102,27 +102,25 @@ def test_amount_total_changing_currency(self): invoice.action_post() self.assertEqual(total, invoice.amount_total) - def test_tax_stamp_line_button(self): - """Stamp fields show when stamp is added with the button to the invoice.""" - # Arrange: Create an invoice eligible for tax stamp but without it - stamp_tax = self.tax_id - invoice = self.init_invoice( - "out_invoice", - taxes=stamp_tax, - amounts=[ - 100, - ], + def test_reset_invoice_to_draft(self): + """Reset an invoice to draft and check that relative tax stamp accounting lines + has been deleted.""" + invoice = first( + self.invoices.filtered(lambda inv: inv.move_type == "out_invoice") ) - # pre-condition - self.assertTrue(invoice.tax_stamp) - self.assertFalse(invoice.tax_stamp_line_present) - # Act - invoice.add_tax_stamp_line() + self.assertEqual(len(invoice), 1) + self.assertEqual(len(invoice.invoice_line_ids), 2) + + invoice.invoice_line_ids[0].write({"tax_ids": [(6, 0, [self.tax_id.id])]}) + invoice.action_post() - # Assert - self.assertTrue(invoice.tax_stamp_line_present) + self.assertEqual( + len(invoice.line_ids.filtered(lambda line: line.is_stamp_line)), 2 + ) - # Resetting to draft removes the stamp invoice.button_draft() - self.assertFalse(invoice.tax_stamp_line_present) + + self.assertEqual( + len(invoice.line_ids.filtered(lambda line: line.is_stamp_line)), 0 + ) diff --git a/l10n_it_account_stamp/views/account_move_view.xml b/l10n_it_account_stamp/views/account_move_view.xml index a6de558a64c..e1b08769eaa 100644 --- a/l10n_it_account_stamp/views/account_move_view.xml +++ b/l10n_it_account_stamp/views/account_move_view.xml @@ -27,7 +27,7 @@ name="manually_apply_tax_stamp" attrs="{'invisible': [('auto_compute_stamp', '=', True)]}" /> - +