From 62d152cd2c6e927ea0abced113d278b273a517be Mon Sep 17 00:00:00 2001 From: Felipe Zago Date: Mon, 26 Jun 2023 18:42:19 -0300 Subject: [PATCH] [ADD] res partner match or create --- l10n_br_nfe/models/res_partner.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/l10n_br_nfe/models/res_partner.py b/l10n_br_nfe/models/res_partner.py index a8ec0fe3cd72..454ba0739672 100644 --- a/l10n_br_nfe/models/res_partner.py +++ b/l10n_br_nfe/models/res_partner.py @@ -5,6 +5,7 @@ from odoo import api, fields +from odoo.addons.l10n_br_fiscal.tools.misc import format_cnpj_cpf from odoo.addons.spec_driven_model.models import spec_models _logger = logging.getLogger(__name__) @@ -257,3 +258,20 @@ def _export_field(self, xsd_field, class_obj, member_spec, export_value=None): return self.vat or self.cnpj_cpf or self.rg or "EXTERIOR" return super()._export_field(xsd_field, class_obj, member_spec, export_value) + + @api.model + def match_or_create_m2o(self, rec_dict, parent_dict, model=None): + domain_cnpj = [] + if parent_dict.get("nfe40_CNPJ"): + rec_dict["cnpj_cpf"] = parent_dict["nfe40_CNPJ"] + domain_cnpj = [ + "|", + ("cnpj_cpf", "=", rec_dict["cnpj_cpf"]), + ("cnpj_cpf", "=", format_cnpj_cpf(rec_dict["cnpj_cpf"])), + ] + + match = self.search(domain_cnpj, limit=1) + if match: + return match.id + + return self.with_context(parent_dict=parent_dict).create(rec_dict).id