From def0ca19eb67d6c326fb9de5820f250a940771d6 Mon Sep 17 00:00:00 2001
From: "jesus.lomas" <jesus.lomas@openpyme.mx>
Date: Tue, 10 Sep 2024 18:00:59 -0600
Subject: [PATCH] feat(account.move): genera el XML en una factura con varios
 impuestos
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

En una factura con varios impuestos no se estaba generando correctamente
el XML porque todos los impuestos se sumaban en una sóla línea. Con este
cambio se corrige ese comportamiento
---
 l10n_mx_facturae/models/account_move.py     | 4 +++-
 l10n_mx_facturae/templates/account_move.xml | 5 +++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index e4265bd6c7..4faaff9983 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -68,12 +68,14 @@ class AccountMove(models.Model):
             "total_locales": 0.0,
         }
 
+        tax_repartion_lines = self.line_ids.filtered('tax_repartition_line_id')
         for line in self.invoice_line_ids:
             for tax in line.export_invoice_line_for_xml().taxes:
                 # Mimic logic from compute function in account.invoice.tax
                 # object to group taxes from invoice lines and be able to get
                 # the same result for display on CFDI
-                grouping_dict = self._get_tax_grouping_key_from_tax_line(line)
+                tax_line = tax_repartion_lines.filtered(lambda l: l.tax_line_id.id == tax.id)
+                grouping_dict = self._get_tax_grouping_key_from_tax_line(tax_line)
                 grouping_key = "-".join(str(v) for v in grouping_dict.values())
                 if grouping_key not in tax_grouped:
                     tax_grouped[grouping_key] = tax
diff --git a/l10n_mx_facturae/templates/account_move.xml b/l10n_mx_facturae/templates/account_move.xml
index cc81104eb4..a0322166ac 100644
--- a/l10n_mx_facturae/templates/account_move.xml
+++ b/l10n_mx_facturae/templates/account_move.xml
@@ -99,8 +99,9 @@
                         t-attf-Impuesto="{{ tax.xml_name }}"
                         t-attf-Importe="{{ tax.xml_amount }}" />
                 </cfdi:Retenciones>
-                <cfdi:Traslados t-if="taxes['traslados']">
-                    <cfdi:Traslado t-foreach="taxes['traslados']" t-as="tax"
+                <cfdi:Traslados t-if="line.impuestos['traslados']">
+                    <t t-set="impuestos" t-value="line.impuestos"/>
+                    <cfdi:Traslado t-foreach="impuestos['traslados']" t-as="tax"
                         t-att-Base="format_float(tax.base, o.currency_id.decimal_places)"
                         t-attf-Impuesto="{{ tax.xml_name }}"
                         t-attf-TipoFactor="{{ tax.type }}"
-- 
GitLab