From e0a7a28d759282b4f0146898e8e120b1ca23300c Mon Sep 17 00:00:00 2001 From: Diego Paradeda Date: Fri, 13 Sep 2024 16:04:50 -0300 Subject: [PATCH 1/2] [IMP] cancel invoice on fiscal document denial --- l10n_br_account/models/document.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/l10n_br_account/models/document.py b/l10n_br_account/models/document.py index 9b5a376160cf..cb9db39be9b3 100644 --- a/l10n_br_account/models/document.py +++ b/l10n_br_account/models/document.py @@ -9,7 +9,10 @@ from odoo.exceptions import UserError from odoo.addons.l10n_br_fiscal.constants.fiscal import ( + DOCUMENT_ISSUER_COMPANY, DOCUMENT_ISSUER_PARTNER, + MODELO_FISCAL_CTE, + MODELO_FISCAL_NFE, SITUACAO_EDOC_EM_DIGITACAO, ) @@ -169,6 +172,14 @@ def _document_correction(self, justificative): self.message_post(body=msg) return result + def _document_deny(self): + msg = _( + "Canceled due to the denial of document %(document_number)s", + document_number=self.document_number, + ) + self.cancel_move_ids() + self.message_post(body=msg) + def action_document_confirm(self): result = super().action_document_confirm() if not self._context.get("skip_post"): @@ -181,3 +192,13 @@ def action_document_back2draft(self): if self.move_ids: self.move_ids.button_draft() return result + + def exec_after_SITUACAO_EDOC_DENEGADA(self, old_state, new_state): + self.ensure_one() + models_cancel_on_deny = [MODELO_FISCAL_NFE, MODELO_FISCAL_CTE] + if ( + self.document_type_id.code in models_cancel_on_deny + and self.issuer == DOCUMENT_ISSUER_COMPANY + ): + self._document_deny() + return super().exec_after_SITUACAO_EDOC_DENEGADA(old_state, new_state) From 98d5a43f781025eb78eaadee25294585cea1dbfb Mon Sep 17 00:00:00 2001 From: Diego Paradeda Date: Mon, 23 Sep 2024 16:39:27 -0300 Subject: [PATCH 2/2] [IMP] l10n_br_account: document deny tests --- l10n_br_account/tests/test_account_move_lc.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/l10n_br_account/tests/test_account_move_lc.py b/l10n_br_account/tests/test_account_move_lc.py index 17bc3c47d66e..e4710472cb9c 100644 --- a/l10n_br_account/tests/test_account_move_lc.py +++ b/l10n_br_account/tests/test_account_move_lc.py @@ -1785,3 +1785,9 @@ def test_change_states(self): document_id.action_document_back2draft() self.assertEqual(self.move_out_venda.state, "draft") self.assertEqual(document_id.state, "em_digitacao") + + def test_document_deny(self): + document_id = self.move_out_venda.fiscal_document_id + self.assertEqual(self.move_out_venda.state, "draft") + document_id.exec_after_SITUACAO_EDOC_DENEGADA("em_digitacao", "denegada") + self.assertEqual(self.move_out_venda.state, "cancel")