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
1) Al momento de instalar el módulo se agregan los códigos de impuestos correspondientes para retenciones de ganancias aplicadas y retenciones de iva aplicadas y las etiquetas de en las repartition lines de impuestos para percepciones en compañías argentinas responsable inscripto con plan de cuentas ri establecido.
2) También se agregan códigos de impuestos a impuestos de retenciones de ganancias aplicadas y retenciones de iva aplicadas y las etiquetas de en las repartition lines de impuestos para percepciones en compañías ri arg nuevas al momento de instalar plan de cuentas ri.
3) Se elimina aquellas partes de código donde verificamos si el módulo l10n_ar_account_withholding_ux se encuentra instalado.
  • Loading branch information
pablohmontenegro committed Apr 11, 2024
1 parent 1328953 commit a3a8b58
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 39 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',
}
46 changes: 46 additions & 0 deletions l10n_ar_account_tax_settlement/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
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. También agregamos etiquetas a las repartition lines de impuestos de retenciones. """

# 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')))

49 changes: 43 additions & 6 deletions l10n_ar_account_tax_settlement/models/account_chart_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# For copyright and license notices, see __manifest__.py file in module root
# directory
##############################################################################
from odoo import models, api, Command
from odoo import models, api
import logging
_logger = logging.getLogger(__name__)
from odoo.addons.account.models.chart_template import template
Expand Down Expand Up @@ -34,10 +34,6 @@ def _get_latam_withholding_account_journal(self, template_code):
'ri_iva_saldo_a_pagar',
self.env.ref('l10n_ar_ux.tax_tag_a_cuenta_iva'))]

l10n_ar_withholding_ux = self.env['ir.module.module'].search([
('name', '=', 'l10n_ar_withholding_ux'),
('state', '=', 'installed')])

if template_code in ('ar_ri', 'ar_ex'):
journals_data += [
('Liquidación de Ganancias', 'GAN', 'yes', False,
Expand All @@ -49,7 +45,7 @@ def _get_latam_withholding_account_journal(self, template_code):
# only if account_withholding_automatic installed we
# set sicore_aplicado for txt
('Liquidación SICORE Aplicado', 'SICORE', 'allow_per_line',
l10n_ar_withholding_ux and 'sicore_aplicado' or False,
'sicore_aplicado' or False,
self.env.ref('l10n_ar.partner_afip'),
'ri_retencion_sicore_a_pagar',
self.env.ref('l10n_ar_ux.tag_ret_perc_sicore_aplicada')),
Expand Down Expand Up @@ -79,3 +75,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_ri.csv de l10n_ar al instalar el plan de cuentas en la nueva compañìa argentina agregamos en este método 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 id del 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
29 changes: 0 additions & 29 deletions l10n_ar_account_tax_settlement/models/account_journal.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,30 +71,6 @@ class AccountJournal(models.Model):
# return super(
# AccountJournal, self).action_create_tax_settlement_entry()

@api.constrains('settlement_tax')
def check_withholding_autmatic_installed(self):
l10n_ar_withholding_ux = self.env['ir.module.module'].search([
('name', '=', 'l10n_ar_withholding_ux'),
('state', '=', 'installed'),
])
if not l10n_ar_withholding_ux and any(self.filtered(
lambda x: x.settlement_tax in ['iibb_aplicado_api',
'sicore_aplicado'])):
raise ValidationError(_(
'No puede utilizar exportación a "SICORE Aplicado"'
' o "Perc/Ret IIBB aplicadas API"'
' si no tiene instalado el módulo de retenciones'
' automáticas (l10n_ar_withholding_ux)'))

def check_l10n_ar_account_withholding_installed(self):
l10n_ar_account_withholding_installed = self.env['ir.module.module'].search([
('name', '=', 'l10n_ar_account_withholding'),
('state', '=', 'installed'),
])
if not l10n_ar_account_withholding_installed:
raise ValidationError(_(
'No se encuentra instalado el módulo "l10n_ar_account_withholding"'))

def iibb_aplicado_dgr_mendoza_files_values(self, move_lines):
self.ensure_one()
ret = ''
Expand All @@ -105,7 +81,6 @@ def iibb_aplicado_dgr_mendoza_files_values(self, move_lines):
payment = line.payment_id
move = line.move_id
tax = line.tax_line_id
self.check_l10n_ar_account_withholding_installed()

alicuot_line = tax.get_partner_alicuot(partner, line.date)
if not alicuot_line:
Expand Down Expand Up @@ -210,7 +185,6 @@ def format_amount(amount, integers, decimals=2):
self.ensure_one()
ret = ''
perc = ''
self.check_l10n_ar_account_withholding_installed()

for line in move_lines:
partner = line.partner_id
Expand Down Expand Up @@ -460,7 +434,6 @@ def iibb_aplicado_agip_files_values(self, move_lines):
credito = ''

company_currency = self.company_id.currency_id
self.check_l10n_ar_account_withholding_installed()
for line in move_lines.sorted('date'):

# pay_group = payment.payment_group_id
Expand Down Expand Up @@ -852,7 +825,6 @@ def iibb_aplicado_sircar_files_values(self, move_lines):
'facturas lo cual es requerido para generar el TXT'))

line_nbr = 1
self.check_l10n_ar_account_withholding_installed()
for line in move_lines.filtered('payment_id'):
alicuot_line = line.tax_line_id.get_partner_alicuot(
line.partner_id, line.date)
Expand Down Expand Up @@ -1330,7 +1302,6 @@ def misiones_files_values(self, move_lines):
"""
self.ensure_one()
content = ''
self.check_l10n_ar_account_withholding_installed()
for line in move_lines.sorted(key=lambda r: (r.date, r.id)):
payment = line.payment_id
if payment:
Expand Down
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 a3a8b58

Please sign in to comment.