Skip to content

Commit

Permalink
[IMP] l10n_ar_account_tax_settlement: agregar código de impuesto al i…
Browse files Browse the repository at this point in the history
…nstalar el módulo.

Tarea: 34379
Se agregaron los códigos de impuestos correspondientes para retenciones de ganancias aplicadas y retenciones de iva aplicadas.
  • Loading branch information
pablohmontenegro committed Apr 11, 2024
1 parent 1328953 commit c955051
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 4 deletions.
1 change: 1 addition & 0 deletions l10n_ar_account_tax_settlement/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
##############################################################################
from . import models
from . import wizards
from .hooks import l10n_ar_account_tax_settlement_post_init_hook
4 changes: 3 additions & 1 deletion l10n_ar_account_tax_settlement/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
##############################################################################
{
'name': 'Tax Settlements For Argentina',
'version': "17.0.1.0.0",
'version': "17.0.1.1.0",
'category': 'Accounting',
'website': 'www.adhoc.com.ar',
'license': 'LGPL-3',
Expand All @@ -29,6 +29,7 @@
'account_tax_settlement',
'l10n_ar_account_reports',
'l10n_ar_ux',
'l10n_ar_account_withholding',
],
'data': [
'data/inflation_adjustment_index.xml',
Expand All @@ -44,4 +45,5 @@
'installable': True,
'auto_install': True,
'application': False,
'post_init_hook': 'l10n_ar_account_tax_settlement_post_init_hook',
}
47 changes: 47 additions & 0 deletions l10n_ar_account_tax_settlement/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
from odoo import api, SUPERUSER_ID
import logging
_logger = logging.getLogger(__name__)


def l10n_ar_account_tax_settlement_post_init_hook(env):
""" Al instalar este módulo (l10n_ar_account_tax_settlement), en caso de que existan compañías responsable inscripto argentinas con l10n_ar_withholding y con plan de cuentas ya establecido entonces a los impuestos de retenciones de ganancias e iva les agregamos el código de impuesto correspondiente. """

# verificamos que la compañía sea argentina, responsable inscripto y tenga plan de cuentas instalado
companies = env['res.company'].search([('l10n_ar_afip_responsibility_type_id.code', '=', '1'), ('chart_template', '=', 'ar_ri')])
for company in companies:
# Retenciones aplicadas de ganancias
xml_id_ret_gcias_aplic = "account.%s_%s" % (company.id, 'ri_tax_withholding_ganancias_applied')
impuesto_ret_gcias_aplic = env.ref(xml_id_ret_gcias_aplic)
if impuesto_ret_gcias_aplic:
impuesto_ret_gcias_aplic.codigo_impuesto = '01'
# Retenciones aplicadas de iva
xml_id_ret_iva_aplic = "account.%s_%s" % (company.id, 'ri_tax_withholding_vat_applied')
impuesto_ret_iva_aplic = env.ref(xml_id_ret_iva_aplic)
if impuesto_ret_iva_aplic:
impuesto_ret_iva_aplic.codigo_impuesto = '02'
# Ahora agregamos etiquetas a impuestos existentes
# Listado de impuesto-etiquetas a agregar, el primer elemento de cada tupla es el impuesto, los restantes son las etiquetas
imp_etiq_list = [('ri_tax_percepcion_iva_aplicada', 'tag_ret_perc_sicore_aplicada'),
('ri_tax_percepcion_ganancias_aplicada', 'tag_ret_perc_sicore_aplicada'),
('ri_tax_percepcion_iibb_caba_sufrida', 'tax_tag_a_cuenta_iibb', 'tag_tax_jurisdiccion_901'),
('ri_tax_percepcion_iibb_ba_sufrida', 'tax_tag_a_cuenta_iibb', 'tag_tax_jurisdiccion_902'),
('ri_tax_percepcion_iibb_co_sufrida', 'tax_tag_a_cuenta_iibb', 'tag_tax_jurisdiccion_904'),
('ri_tax_percepcion_iibb_sf_sufrida', 'tax_tag_a_cuenta_iibb', 'tag_tax_jurisdiccion_921')
]
for imp_etiq in imp_etiq_list:
xml_id_percep_iva_aplic = "account.%s_%s" % (company.id, imp_etiq[0])
# Identificamos el impuesto al que se le va a agregar la/s etiqueta/s
impuesto = env.ref(xml_id_percep_iva_aplic)
# Identificamos en el impuesto cuál es el dentro de sus invoice_repartition_line_ids y refund_repartition_line_ids aquellas líneas
# que tienen repartition_type = 'tax' así le agregamos la etiqueta correspondiente
for repartition in ['invoice_repartition_line_ids', 'refund_repartition_line_ids']:
repartition_line = next((el for el in impuesto[repartition] if el['repartition_type'] == 'tax'), None)
# Agregamos la/s etiqueta/s, tiene que ser en una lista donde agreguemos los ids de las etiquetas
tag_ids = []
for etiq in imp_etiq[1:]:
tag_ids.append(env.ref('l10n_ar_ux.%s' % (etiq)).id)
repartition_line.tag_ids = tag_ids
# Dejamos registro en los logs de las compañías en las cuales se estableció el código de impuesto
if companies:
_logger.info("Se agregaron los códigos de impuestos correspondientes para retenciones de ganancias aplicadas y retenciones de iva aplicadas y las etiquetas de impuestos para compañías %s." % ', '.join(companies.mapped('name')))

41 changes: 41 additions & 0 deletions l10n_ar_account_tax_settlement/models/account_chart_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,44 @@ def _get_latam_withholding_account_journal(self, template_code):
'settlement_account_tag_ids': tag and [(4, tag.id, False)],
}
return res

@template('ar_ri', 'account.tax')
def _get_ar_ri_withholding_account_tax(self):
""" En caso de que se creen nuevas compañías argentinas responsable inscripto con su plan de cuentas correspondiente entonces a los impuestos creados de retenciones de ganancias e iva les agregamos el código de impuesto. """
taxes_creados = super()._get_ar_ri_withholding_account_tax()
company = self.env.company
# verificamos que la compañía sea argentina y responsable inscripto
if company.country_id.code in self._get_country_code() and company.l10n_ar_afip_responsibility_type_id.code == '1':
if taxes_creados:
taxes_creados.get('ri_tax_withholding_ganancias_applied')['codigo_impuesto'] = '01'
taxes_creados.get('ri_tax_withholding_vat_applied')['codigo_impuesto'] = '02'
return taxes_creados

def _load(self, template_code, company, install_demo):
""" Luego de que creen los impuestos del archivo account.tax-ar_xx.csv de l10n_ar al instalar el plan de cuentas en la nueva compañìa argentina agregamos en este métodos las etiquetas que correspondan en los repartition lines. """
# Llamamos a super para que se creen los impuestos
res = super()._load(template_code, company, install_demo)
company = self.env.company
if company.country_id.code in self._get_country_code() and company.l10n_ar_afip_responsibility_type_id.code == '1':
# Listado de impuesto-etiquetas a agregar, el primer elemento de cada tupla es el impuesto, los restantes son las etiquetas
imp_etiq_list = [('ri_tax_percepcion_iva_aplicada', 'tag_ret_perc_sicore_aplicada'),
('ri_tax_percepcion_ganancias_aplicada', 'tag_ret_perc_sicore_aplicada'),
('ri_tax_percepcion_iibb_caba_sufrida', 'tax_tag_a_cuenta_iibb', 'tag_tax_jurisdiccion_901'),
('ri_tax_percepcion_iibb_ba_sufrida', 'tax_tag_a_cuenta_iibb', 'tag_tax_jurisdiccion_902'),
('ri_tax_percepcion_iibb_co_sufrida', 'tax_tag_a_cuenta_iibb', 'tag_tax_jurisdiccion_904'),
('ri_tax_percepcion_iibb_sf_sufrida', 'tax_tag_a_cuenta_iibb', 'tag_tax_jurisdiccion_921')
]
for imp_etiq in imp_etiq_list:
xml_id_percep_iva_aplic = "account.%s_%s" % (company.id, imp_etiq[0])
# Identificamos el impuesto al que se le va a agregar la/s etiqueta/s
impuesto = self.env.ref(xml_id_percep_iva_aplic)
# Identificamos en el impuesto cuál es el dentro de sus invoice_repartition_line_ids y refund_repartition_line_ids aquellas líneas
# que tienen repartition_type = 'tax' así le agregamos la etiqueta correspondiente
for repartition in ['invoice_repartition_line_ids', 'refund_repartition_line_ids']:
repartition_line = next((el for el in impuesto[repartition] if el['repartition_type'] == 'tax'), None)
# Agregamos la/s etiqueta/s, tiene que ser en una lista donde agreguemos los ids de las etiquetas
tag_ids = []
for etiq in imp_etiq[1:]:
tag_ids.append(self.env.ref('l10n_ar_ux.%s' % (etiq)).id)
repartition_line.tag_ids = tag_ids
return res
7 changes: 4 additions & 3 deletions l10n_ar_account_tax_settlement/models/account_tax.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ class AccountTax(models.Model):

codigo_regimen = fields.Char(string='Codigo de regimen IVA', size=3)
porcentaje_exclusion = fields.Float(string='Porcentaje de exclusión')
codigo_impuesto = fields.Selection([('01', 'Retención Ganancias'),
('02', 'Retención IVA'),
], string='Codigo de impuesto')
codigo_impuesto = fields.Selection([('none', ''),
('01', 'Retención Ganancias'),
('02', 'Retención IVA'),
], string='Codigo de impuesto')

0 comments on commit c955051

Please sign in to comment.