CFDI40215
The rule sets below word this rule differently; each wording is shown with its rule set.
Why it fails
- The summary groups by tax only, while it groups by tax, TipoFactor and TasaOCuota: VAT at 16 % and at 0 % are two Traslado elements.
- A line's tax changed after the summary was computed.
How to fix it
Write one summary Traslado for each combination of Impuesto, TipoFactor and TasaOCuota on the lines, with their bases and amounts added up and rounded once.
What the rule checks
As the rule set's publisher wrote it. The rule runs on every element the context matches, and fails where the test is false; the validator reports the line of that element.
El campo Importe correspondiente a Traslado no es igual al redondeo de la suma de los importes de las bases trasladados registrados en los conceptos donde el impuesto del concepto sea igual al campo impuesto de este elemento y la TasaOCuota del concepto sea igual al campo TasaOCuota de este elemento (falta un Traslado en el resumen de impuestos).
/cfdi:Comprobante
$type = ('T', 'P') or (every $t in $transfers satisfies $summary[@Impuesto = $t/@Impuesto and @TipoFactor = $t/@TipoFactor and mx:dec(@TasaOCuota) = mx:dec($t/@TasaOCuota)])
Checked with CFDI 4.0
El campo Importe correspondiente a Traslado no es igual al redondeo de la suma de los importes de las bases trasladados registrados en los conceptos donde el impuesto del concepto sea igual al campo impuesto de este elemento y la TasaOCuota del concepto sea igual al campo TasaOCuota de este elemento (Base …, conceptos …).
/cfdi:Comprobante/cfdi:Impuestos/cfdi:Traslados/cfdi:Traslado
$factor = 'Exento' or abs(mx:dec(@Base) - $bases) le $half
Checked with CFDI 4.0