mirror of
https://github.com/bringout/oca-ocb-l10n_americas.git
synced 2026-04-26 18:11:59 +02:00
46 lines
2.1 KiB
Python
46 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
from odoo.exceptions import ValidationError
|
|
from odoo import api, fields, models, _
|
|
|
|
|
|
class ResPartner(models.Model):
|
|
_inherit = 'res.partner'
|
|
|
|
l10n_cl_sii_taxpayer_type = fields.Selection(
|
|
[
|
|
('1', 'VAT Affected (1st Category)'),
|
|
('2', 'Fees Receipt Issuer (2nd category)'),
|
|
('3', 'End Consumer'),
|
|
('4', 'Foreigner'),
|
|
],
|
|
string='Taxpayer Type',
|
|
index='btree_not_null',
|
|
help='1 - VAT Affected (1st Category) (Most of the cases)\n'
|
|
'2 - Fees Receipt Issuer (Applies to suppliers who issue fees receipt)\n'
|
|
'3 - End consumer (only receipts)\n'
|
|
'4 - Foreigner')
|
|
l10n_cl_activity_description = fields.Char(string='Activity Description', help="Chile: Economic activity.")
|
|
|
|
@api.model
|
|
def _commercial_fields(self):
|
|
return super()._commercial_fields() + ['l10n_cl_sii_taxpayer_type']
|
|
|
|
def _run_check_identification(self, validation='error'):
|
|
""" We format the RUN thing (actually, it could just use the parent method)"""
|
|
l10n_cl_partners = self.filtered(lambda p: p.vat and len(p.vat) > 2 and p.country_code == 'CL')
|
|
if l10n_cl_partners:
|
|
identification_types = [self.env.ref('l10n_cl.it_RUN').id]
|
|
for partner in l10n_cl_partners.filtered(lambda p: p.l10n_latam_identification_type_id.id in identification_types):
|
|
partner.vat = partner.format_vat_cl(partner.vat)
|
|
|
|
if validation == 'error':
|
|
if not partner._check_vat_number('CL', partner.vat):
|
|
raise ValidationError(_('The format of your RUN is not valid. It should be like 76086428-5.'))
|
|
|
|
return super(ResPartner, self - l10n_cl_partners)._run_check_identification(validation=validation)
|
|
|
|
def _format_dotted_vat_cl(self, vat):
|
|
vat_l = vat.split('-')
|
|
n_vat, n_dv = vat_l[0], vat_l[1]
|
|
return '%s-%s' % (format(int(n_vat), ',d').replace(',', '.'), n_dv)
|