Skip to content

Commit

Permalink
[ADD] res partner match or create
Browse files Browse the repository at this point in the history
  • Loading branch information
felipezago committed Jun 26, 2023
1 parent d9658e6 commit 36732f5
Showing 1 changed file with 65 additions and 0 deletions.
65 changes: 65 additions & 0 deletions l10n_br_nfe/models/res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__)
Expand Down Expand Up @@ -257,3 +258,67 @@ 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)

##########################
# NF-e tag: enderXXX
# Compute Methods
##########################

@api.depends(
"street_name",
"street_number",
"street2",
"district",
"city_id",
"state_id",
"country_id",
)
def _compute_nfe40_ender(self):
for rec in self:
rec.nfe40_xLgr = rec.street_name
rec.nfe40_nro = rec.street_number
rec.nfe40_xCpl = rec.street2
rec.nfe40_xBairro = rec.district
rec.nfe40_cMun = rec.city_id.ibge_code
rec.nfe40_xMun = rec.city_id.name
rec.nfe40_UF = rec.state_id.code
rec.nfe40_cPais = rec.country_id.bc_code
rec.nfe40_xPais = rec.country_id.name

def _inverse_nfe40_ender(self):
for rec in self:
if rec.nfe40_cMun and rec.nfe40_cPais and rec.nfe40_UF:
city_id = self.env["res.city"].search(
[("ibge_code", "=", rec.nfe40_cMun)]
)
country_id = self.env["res.country"].search(
[("bc_code", "=", rec.nfe40_cPais)]
)
state_id = self.env["res.country.state"].search(
[("code", "=", rec.nfe40_UF), ("country_id", "=", country_id.id)]
)

rec.street_name = rec.nfe40_xLgr
rec.street_number = rec.nfe40_nro
rec.street2 = rec.nfe40_xCpl
rec.district = rec.nfe40_xBairro
rec.city_id = city_id
rec.country_id = country_id
rec.state_id = state_id

@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

0 comments on commit 36732f5

Please sign in to comment.