diff --git a/l10n_do_accounting/__manifest__.py b/l10n_do_accounting/__manifest__.py index a682e3685..f5b571492 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": "16.0.1.5.8", + "version": "16.0.1.5.9", # 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 b8a2523b5..ce7328650 100644 --- a/l10n_do_accounting/models/account_move.py +++ b/l10n_do_accounting/models/account_move.py @@ -871,3 +871,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): + if ( + self.l10n_latam_use_documents + and self.company_id.country_id.code == "DO" + and self.posted_before + 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 6191eda4b..4604a537f 100644 --- a/l10n_do_accounting/tests/test_account_move.py +++ b/l10n_do_accounting/tests/test_account_move.py @@ -703,6 +703,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"})