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",