diff --git a/l10n_br_base/models/res_partner.py b/l10n_br_base/models/res_partner.py index 32430d2274ba..cc93948823c8 100644 --- a/l10n_br_base/models/res_partner.py +++ b/l10n_br_base/models/res_partner.py @@ -26,6 +26,14 @@ class Partner(models.Model): rntrc_code = fields.Char(string="RNTRC Code", size=12) + is_technical_support = fields.Boolean(string="Is technical support?") + + nfe40_idCSRT = fields.Char(string="ID CSRT") + + CSRT = fields.Char(string="Token CSRT") + + nfe40_hashCSRT = fields.Char(string="Hash CSRT") + cei_code = fields.Char(string="CEI Code", size=12) union_entity_code = fields.Char(string="Union Entity code") diff --git a/l10n_br_base/views/res_partner_view.xml b/l10n_br_base/views/res_partner_view.xml index 8384ede57cc3..b1a00d69b784 100644 --- a/l10n_br_base/views/res_partner_view.xml +++ b/l10n_br_base/views/res_partner_view.xml @@ -151,6 +151,19 @@ domain="[('country_id', '=', %(base.br)d)]" /> + + + + diff --git a/l10n_br_nfe/models/document.py b/l10n_br_nfe/models/document.py index 479cfd1ce530..3c63dd270996 100644 --- a/l10n_br_nfe/models/document.py +++ b/l10n_br_nfe/models/document.py @@ -3,6 +3,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import base64 +import hashlib import logging import re import string @@ -1113,6 +1114,16 @@ def _generate_key(self): ) record.document_key = chave_edoc.chave + # Compute CSRT hash + if record.nfe40_infRespTec and record.nfe40_infRespTec.CSRT: + token_csrt = record.nfe40_infRespTec.CSRT + seed = token_csrt + record.document_key + hashed = hashlib.sha1(seed.encode()).hexdigest() + + # Convert hex to base64 + hashed_b64 = base64.b64encode(bytes.fromhex(hashed)).decode() + record.nfe40_infRespTec.nfe40_hashCSRT = hashed_b64 + def _nfe_consult_receipt(self): self.ensure_one() processor = self._edoc_processor() diff --git a/l10n_br_nfe/models/res_company.py b/l10n_br_nfe/models/res_company.py index 545bd91fa317..9af868f7d8da 100644 --- a/l10n_br_nfe/models/res_company.py +++ b/l10n_br_nfe/models/res_company.py @@ -40,6 +40,9 @@ class ResCompany(spec_models.SpecModel): nfe40_fone = fields.Char(related="partner_id.nfe40_fone") nfe40_CRT = fields.Selection(related="tax_framework") + nfe40_idCSRT = fields.Char(related="partner_id.nfe40_idCSRT") + nfe40_hashCSRT = fields.Char(related="partner_id.nfe40_hashCSRT") + nfe40_enderEmit = fields.Many2one( comodel_name="res.partner", related="partner_id",