CFDI40215

The rule sets below word this rule differently; each wording is shown with its rule set.

error: the document is invalid

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.

Message

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).

Context
/cfdi:Comprobante
Test
$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

Message

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 …).

Context
/cfdi:Comprobante/cfdi:Impuestos/cfdi:Traslados/cfdi:Traslado
Test
$factor = 'Exento' or abs(mx:dec(@Base) - $bases) le $half

Checked with CFDI 4.0