Skip to content

Commit 7b2f740

Browse files
[IMP] l10n_ar_tax: agregado de etiquetas y secuencias a impuestos de ret ganancias.
Ticket: 111529 El hook _l10n_ar_update_taxes NO se termina corriendo para bases que migran a 18 (por más que sea un módulo nuevo no se termina corriendo porque el un módulo renombrado), por lo que creamos el ul "[RET18] Etiquetas y secuencias en impuestos" (id: 2241) para que se termine corriendo. Pero el hook termina asignando secuencia y etiquetas a los impuestos de retención de ganancias y no queremos que eso suceda cuando se trata de una migración porque el upgrade line "✏️[RET18] Migración retenciones de Ganancias" (id: 1415) crea los impuestos de retención de ganancias con sus respectivas secuencias y etiquetas entonces por eso tenemos que hacer el ajuste de este commit para que no se vuelva a pisar la secuencia de retención de ganancias y las etiquetas.
1 parent faf8394 commit 7b2f740

1 file changed

Lines changed: 28 additions & 22 deletions

File tree

l10n_ar_tax/models/account_chart_template.py

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ def _add_wh_taxes(self, company):
7171
]
7272
for tax_ref, state_ref in tax_state_tupples:
7373
# Identificamos el impuesto al que se le va a agregar la/s etiqueta/s
74-
tax = self.env.ref("account.%s_%s" % (company.id, tax_ref), raise_if_not_found=False)
75-
if tax:
76-
tax.l10n_ar_state_id = self.env.ref(state_ref).id
74+
if tax := self.env.ref("account.%s_%s" % (company.id, tax_ref), raise_if_not_found=False):
75+
if not tax.l10n_ar_state_id:
76+
tax.l10n_ar_state_id = self.env.ref(state_ref).id
7777

7878
# creacion de secuencias y agregado de etiquetas para liquidación de impuestos
7979
withholdings_domain = [
@@ -85,31 +85,33 @@ def _add_wh_taxes(self, company):
8585
non_profits_domain = withholdings_domain + [("l10n_ar_tax_type", "not in", ["earnings", "earnings_scale"])]
8686

8787
for tax in self.env["account.tax"].with_context(active_test=False).search(non_profits_domain):
88+
if not tax.l10n_ar_withholding_sequence_id:
89+
sequence = self.env["ir.sequence"].create(
90+
{
91+
"name": tax.invoice_label or tax.name,
92+
"prefix": "%(year)s-",
93+
"padding": 8,
94+
"number_increment": 1,
95+
"implementation": "standard",
96+
"company_id": company.id,
97+
}
98+
)
99+
tax.l10n_ar_withholding_sequence_id = sequence.id
100+
101+
profits_domain = withholdings_domain + [("l10n_ar_tax_type", "in", ["earnings", "earnings_scale"])]
102+
profits_taxes = self.env["account.tax"].with_context(active_test=False).search(profits_domain)
103+
if not profits_taxes.mapped("l10n_ar_withholding_sequence_id"):
88104
sequence = self.env["ir.sequence"].create(
89105
{
90-
"name": tax.invoice_label or tax.name,
106+
"name": "Retención de Ganancias",
91107
"prefix": "%(year)s-",
92108
"padding": 8,
93109
"number_increment": 1,
94110
"implementation": "standard",
95111
"company_id": company.id,
96112
}
97113
)
98-
tax.l10n_ar_withholding_sequence_id = sequence.id
99-
100-
profits_domain = withholdings_domain + [("l10n_ar_tax_type", "in", ["earnings", "earnings_scale"])]
101-
sequence = self.env["ir.sequence"].create(
102-
{
103-
"name": "Retención de Ganancias",
104-
"prefix": "%(year)s-",
105-
"padding": 8,
106-
"number_increment": 1,
107-
"implementation": "standard",
108-
"company_id": company.id,
109-
}
110-
)
111-
profits_taxes = self.env["account.tax"].with_context(active_test=False).search(profits_domain)
112-
profits_taxes.l10n_ar_withholding_sequence_id = sequence.id
114+
profits_taxes.l10n_ar_withholding_sequence_id = sequence.id
113115

114116
# agregado de etiquetas para liquidacion de impuestos sicore
115117
sicore_taxes = profits_taxes
@@ -121,9 +123,11 @@ def _add_wh_taxes(self, company):
121123
tax = self.env.ref(xml_id_percep, raise_if_not_found=False)
122124
if tax:
123125
sicore_taxes += tax
124-
self.env["account.tax.repartition.line"].search(
126+
sicore_tags = self.env["account.tax.repartition.line"].search(
125127
[("tax_id", "in", sicore_taxes.ids), ("repartition_type", "=", "tax")]
126-
).tag_ids = [Command.link(tag.id)]
128+
)
129+
sicore_tags_to_update = sicore_tags.filtered(lambda line: tag not in line.tag_ids)
130+
sicore_tags_to_update.tag_ids = [Command.link(tag.id)]
127131

128132
# agregado de etiquetas para liquidacion de impuestos pago IIBB a cuenta (sifere web)
129133
# consideramos de IIBB a todo lo que tiene 10n_ar_state_id
@@ -140,7 +144,9 @@ def _add_wh_taxes(self, company):
140144
("tax_id.type_tax_use", "=", "none"),
141145
("tax_id.l10n_ar_withholding_payment_type", "=", "customer"),
142146
]
143-
self.env["account.tax.repartition.line"].search(domain).tag_ids = [Command.link(tag.id)]
147+
repartition_lines = self.env["account.tax.repartition.line"].search(domain)
148+
if repartition_lines_without_tag := repartition_lines.filtered(lambda line: tag not in line.tag_ids):
149+
repartition_lines_without_tag.tag_ids = [Command.link(tag.id)]
144150

145151
def _load(self, template_code, company, install_demo, force_create=True):
146152
"""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."""

0 commit comments

Comments
 (0)