CRP20268
The rule sets below word this rule differently; each wording is shown with its rule set.
Why it fails
- The bases of an invoice in dollars added to a payment in pesos without converting them.
- The receipt's taxes copied from the invoice when it pays only part of it.
How to fix it
For each related document divide BaseDR and ImporteDR by EquivalenciaDR, add them up by tax, factor and rate, and write one TrasladoP per combination.
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 BaseP que corresponde a Traslado, no es igual a la suma de los importes de las bases registrados en los documentos relacionados donde el impuesto del documento relacionado sea igual al campo ImpuestoP de este elemento y la TasaOCuotaDR del documento relacionado sea igual al campo TasaOCuotaP de este elemento (falta un TrasladoP).
pago20:Pagos/pago20:Pago
every $t in $transfers satisfies $summary[@ImpuestoP = $t/@ImpuestoDR and @TipoFactorP = $t/@TipoFactorDR and mx:dec(@TasaOCuotaP) = mx:dec($t/@TasaOCuotaDR)]
Checked with CFDI 4.0
El campo BaseP que corresponde a Traslado, no es igual a la suma de los importes de las bases registrados en los documentos relacionados donde el impuesto del documento relacionado sea igual al campo ImpuestoP de este elemento y la TasaOCuotaDR del documento relacionado sea igual al campo TasaOCuotaP de este elemento (…, documentos …).
pago20:ImpuestosP/pago20:TrasladosP/pago20:TrasladoP
$exempt or abs(mx:dec(@BaseP) - $bases) le $unit
Checked with CFDI 4.0