52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
from odoo import _, api, fields, models
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class AccountTaxGroup(models.Model):
|
|
|
|
_inherit = 'account.tax.group'
|
|
|
|
# values from http://www.afip.gob.ar/fe/documentos/otros_Tributos.xlsx
|
|
l10n_ar_tribute_afip_code = fields.Selection([
|
|
('01', '01 - National Taxes'),
|
|
('02', '02 - Provincial Taxes'),
|
|
('03', '03 - Municipal Taxes'),
|
|
('04', '04 - Internal Taxes'),
|
|
('06', '06 - VAT perception'),
|
|
('07', '07 - IIBB perception'),
|
|
('08', '08 - Municipal Taxes Perceptions'),
|
|
('09', '09 - Other Perceptions'),
|
|
('99', '99 - Others'),
|
|
], string='Tribute AFIP Code', index=True, readonly=True)
|
|
# values from http://www.afip.gob.ar/fe/documentos/OperacionCondicionIVA.xls
|
|
l10n_ar_vat_afip_code = fields.Selection([
|
|
('0', 'Not Applicable'),
|
|
('1', 'Untaxed'),
|
|
('2', 'Exempt'),
|
|
('3', '0%'),
|
|
('4', '10.5%'),
|
|
('5', '21%'),
|
|
('6', '27%'),
|
|
('8', '5%'),
|
|
('9', '2,5%'),
|
|
], string='VAT AFIP Code', index=True, readonly=True)
|
|
|
|
@api.ondelete(at_uninstall=False)
|
|
def check_uninstall_required(self):
|
|
"""
|
|
Make sure we don't uninstall a required tax group
|
|
"""
|
|
ar_companies = self.filtered(lambda g: g.company_id.chart_template.startswith('ar_')).mapped('company_id')
|
|
profits_tax_group_ids = self.env['ir.model.data'].search([
|
|
('name', 'in', [f'{company.id}_tax_group_percepcion_ganancias' for company in ar_companies]),
|
|
('module', '=', 'account'),
|
|
]).mapped('res_id')
|
|
if profit_tax_groups_to_be_deleted := self.filtered(lambda g: g.id in profits_tax_group_ids):
|
|
raise UserError(
|
|
_(
|
|
"The tax group '%s' can't be removed, since it is required in the Argentinian localization.",
|
|
profit_tax_groups_to_be_deleted[0].name,
|
|
)
|
|
)
|