61 lines
2.7 KiB
Python
61 lines
2.7 KiB
Python
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo import models, api, _
|
||
|
from odoo.addons.account.models.chart_template import template
|
||
|
|
||
|
|
||
|
class AccountChartTemplate(models.AbstractModel):
|
||
|
_inherit = 'account.chart.template'
|
||
|
|
||
|
@api.model
|
||
|
def _get_ar_responsibility_match(self, chart_template):
|
||
|
""" return responsibility type that match with the given chart_template code
|
||
|
"""
|
||
|
match = {
|
||
|
'ar_base': self.env.ref('l10n_ar.res_RM'),
|
||
|
'ar_ex': self.env.ref('l10n_ar.res_IVAE'),
|
||
|
'ar_ri': self.env.ref('l10n_ar.res_IVARI'),
|
||
|
}
|
||
|
return match.get(chart_template)
|
||
|
|
||
|
def _load(self, template_code, company, install_demo):
|
||
|
""" Set companies AFIP Responsibility and Country if AR CoA is installed, also set tax calculation rounding
|
||
|
method required in order to properly validate match AFIP invoices.
|
||
|
|
||
|
Also, raise a warning if the user is trying to install a CoA that does not match with the defined AFIP
|
||
|
Responsibility defined in the company
|
||
|
"""
|
||
|
coa_responsibility = self._get_ar_responsibility_match(template_code)
|
||
|
if coa_responsibility:
|
||
|
company.write({
|
||
|
'l10n_ar_afip_responsibility_type_id': coa_responsibility.id,
|
||
|
'country_id': self.env['res.country'].search([('code', '=', 'AR')]).id,
|
||
|
'tax_calculation_rounding_method': 'round_globally',
|
||
|
})
|
||
|
# set CUIT identification type (which is the argentinean vat) in the created company partner instead of
|
||
|
# the default VAT type.
|
||
|
company.partner_id.l10n_latam_identification_type_id = self.env.ref('l10n_ar.it_cuit')
|
||
|
|
||
|
res = super()._load(template_code, company, install_demo)
|
||
|
|
||
|
# If Responsable Monotributista remove the default purchase tax
|
||
|
if template_code in ('ar_base', 'ar_ex'):
|
||
|
company.account_purchase_tax_id = self.env['account.tax']
|
||
|
|
||
|
return res
|
||
|
|
||
|
def try_loading(self, template_code, company, install_demo=False):
|
||
|
# During company creation load template code corresponding to the AFIP Responsibility
|
||
|
if not company:
|
||
|
return
|
||
|
if isinstance(company, int):
|
||
|
company = self.env['res.company'].browse([company])
|
||
|
if company.country_code == 'AR' and not company.chart_template:
|
||
|
match = {
|
||
|
self.env.ref('l10n_ar.res_RM'): 'ar_base',
|
||
|
self.env.ref('l10n_ar.res_IVAE'): 'ar_ex',
|
||
|
self.env.ref('l10n_ar.res_IVARI'): 'ar_ri',
|
||
|
}
|
||
|
template_code = match.get(company.l10n_ar_afip_responsibility_type_id, template_code)
|
||
|
return super().try_loading(template_code, company, install_demo)
|