odoo18/addons/l10n_es/models/res_partner.py

38 lines
1.3 KiB
Python

from odoo import models
class ResPartner(models.Model):
_inherit = 'res.partner'
def _l10n_es_is_foreign(self):
self.ensure_one()
return self.country_id.code not in ('ES', False) or (self.vat or '').startswith("ESN")
def _l10n_es_edi_get_partner_info(self):
""" Used in SII and Veri*factu"""
self.ensure_one()
eu_country_codes = set(self.env.ref('base.europe').country_ids.mapped('code'))
partner_info = {}
IDOtro_ID = self.vat or 'NO_DISPONIBLE'
if (not self.country_id or self.country_id.code == 'ES') and self.vat:
# ES partner with VAT.
partner_info['NIF'] = self.vat.removeprefix('ES')
if self.env.context.get('error_1117'):
partner_info['IDOtro'] = {'IDType': '07', 'ID': IDOtro_ID}
elif self.country_id.code in eu_country_codes and self.vat:
# European partner.
partner_info['IDOtro'] = {'IDType': '02', 'ID': IDOtro_ID}
else:
partner_info['IDOtro'] = {'ID': IDOtro_ID}
if self.vat:
partner_info['IDOtro']['IDType'] = '04'
else:
partner_info['IDOtro']['IDType'] = '06'
if self.country_id:
partner_info['IDOtro']['CodigoPais'] = self.country_id.code
return partner_info