From ca88bfa3df1b67d36f847e5a133a1909e1564241 Mon Sep 17 00:00:00 2001 From: Diego Paradeda Date: Fri, 16 Aug 2024 13:39:14 -0300 Subject: [PATCH] [IMP] cancel invoice on fiscal document denial --- l10n_br_account/models/fiscal_document.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/l10n_br_account/models/fiscal_document.py b/l10n_br_account/models/fiscal_document.py index 598065eadac7..da1877091722 100644 --- a/l10n_br_account/models/fiscal_document.py +++ b/l10n_br_account/models/fiscal_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, ) @@ -180,3 +183,21 @@ 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) + + 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)