From 2f0ad71a7d6de6d4b6c7cad9157dd16cdee032a2 Mon Sep 17 00:00:00 2001 From: Jorge Conce Date: Wed, 8 May 2024 16:04:45 -0400 Subject: [PATCH] [FIX] l10n_do_accounting: fix seq with same prefix in diferent year --- l10n_do_accounting/__manifest__.py | 2 +- l10n_do_accounting/models/account_move.py | 17 +++++++++++++++++ l10n_do_accounting/tests/test_account_move.py | 11 +++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/l10n_do_accounting/__manifest__.py b/l10n_do_accounting/__manifest__.py index 48713ce06..3768341dc 100644 --- a/l10n_do_accounting/__manifest__.py +++ b/l10n_do_accounting/__manifest__.py @@ -8,7 +8,7 @@ "category": "Localization", "license": "LGPL-3", "website": "https://github.com/odoo-dominicana", - "version": "14.0.2.19.2`", + "version": "14.0.2.19.3`", # any module necessary for this one to work correctly "depends": ["l10n_latam_invoice_document", "l10n_do"], # always loaded diff --git a/l10n_do_accounting/models/account_move.py b/l10n_do_accounting/models/account_move.py index 532adb761..5b32ed4f1 100644 --- a/l10n_do_accounting/models/account_move.py +++ b/l10n_do_accounting/models/account_move.py @@ -1013,3 +1013,20 @@ def unlink(self): _("You cannot delete fiscal invoice which have been posted before") ) return super(AccountMove, self).unlink() + + # Extension of the _deduce_sequence_number_reset function to compute the `name` field according to the invoice + # date and prevent the `l10n_latam_document_number` field from being reset + @api.model + def _deduce_sequence_number_reset(self, name): + name_values = ['/', False, '', '1'] + + if (self.l10n_latam_use_documents + and self.company_id.country_id.code == "DO" + and name not in name_values + and not self._context.get("is_l10n_do_seq", False)): + return 'year' + elif self._context.get("is_l10n_do_seq", False): + return 'never' + else: + 'never' + return super(AccountMove, self)._deduce_sequence_number_reset(name) diff --git a/l10n_do_accounting/tests/test_account_move.py b/l10n_do_accounting/tests/test_account_move.py index 57eea7742..eeccd63fb 100644 --- a/l10n_do_accounting/tests/test_account_move.py +++ b/l10n_do_accounting/tests/test_account_move.py @@ -696,6 +696,17 @@ def test_009_invoice_sequence(self): self.assertEqual(invoice_2.name, "INV/%s/0002" % invoice_2.date.year) self.assertEqual(invoice_2.l10n_do_fiscal_number, "B0100000002") + # Unit test to verify if the invoice number or document number is repeated + invoice_3 = self._create_l10n_do_invoice( + data={ + "invoice_date": "2023-05-08", + } + ) + invoice_3._post() + self.assertEqual(invoice_3.name, "INV/%s/0001" % invoice_3.date.year) + self.assertNotEqual(invoice_3.l10n_do_fiscal_number, "B0100000001") + self.assertEqual(invoice_3.l10n_do_fiscal_number, "B0100000003") + def test_010_ncf_format(self): with self.assertRaises(ValidationError): self._create_l10n_do_invoice(data={"document_number": "E0100000001"})