Escritura del atributo Importe de Comprobante/Impuestos/Traslados/Traslado es redondeado y no debería
eclipxe13 opened this issue · comments
Al revisar el issue #38 se encontró que la escritura de un CFDI no escribe la correcta suma en los atributos cfdi:Comprobante/cfdi:Impuestos/cfdi:Traslados/cfdi:Traslado@Importe
y cfdi:Comprobante/cfdi:Impuestos/cfdi:Retenciones/cfdi:Retencion@Importe
.
Este problema es porque:
a) El la clase SumasConceptos
dichos atributos son redondeados
b) En la clase SumasConceptosWriter
dichos atributos son redondeados
Aquí un test para ilustrar el caso:
public function testUsesAllDecimalsOnComplementoImpuestosTrasladosTrasladoImporte()
{
$comprobante = new Comprobante();
$comprobante->addConcepto()->addTraslado(
['Importe' => '7.777777', 'Impuesto' => '002', 'TipoFactor' => 'Tasa', 'TasaOCuota' => '0.160000']
);
$comprobante->addConcepto()->addTraslado(
['Importe' => '2.222222', 'Impuesto' => '002', 'TipoFactor' => 'Tasa', 'TasaOCuota' => '0.160000']
);
$precision = 3;
$sumasConceptos = new SumasConceptos($comprobante, $precision);
$writer = new SumasConceptosWriter($comprobante, $sumasConceptos, $precision);
$writer->put();
print_r(XmlNodeUtils::nodeToXmlString($comprobante));
$this->assertSame('10.000', $comprobante->searchAttribute('cfdi:Impuestos', 'TotalImpuestosTrasladados'));
$this->assertSame(
'9.999999',
$comprobante->searchAttribute('cfdi:Impuestos', 'cfdi:Traslados', 'cfdi:Traslado', 'Importe')
);
}
Importante: Este no es un problema si al escribir el importe de cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/cfdi:Impuestos/cfdi:Traslados/cfdi:Traslado@Importe
y cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/cfdi:Impuestos/cfdi:Retenciones/cfdi:Retencion@Importe
ya se escribe redondeado.
Acabo de ver la hoja 72 y 73 del Anexo 20 y explícitamente dice que dichos atributos deben tener hasta la cantidad de decimales que soporte la moneda por lo que este issue no es válido.