Skip to content

Diferencia entre subtotal e importe y traslados al generar una factura #20

Open
@francog-spacebar

Description

Al generar una factura usando el módulo de facturas (no lo pude encontrar en los repositorios de OpenPay), los campos de "subtotal", "importe" y "base" no tienen el mismo valor debido a un error de redondeo. Esta es la solicitud en formato JSON que genera el módulo, los campos no relevantes fueron eliminados.
{"subtotal": "3118.97", "total_trasladados": "499.03", "total": 3618, "tipo_de_cambio": "1", "forma_pago": "04", "hide_total_items": "true", "hide_total_taxes": "true", "moneda": "MXN", "lugar_expedicion": "01234", "observaciones": "Observaciones a dicreción", "serie": "1", "impuestos_retencion": [], "folio": 0, "invoice_id": 909, "metodo_pago": "PUE", "tipo_comprobante": "I", "conceptos": [ { "valor_unitario": "1039.66", "importe": "3118.98", "traslados": [ { "impuesto": "002", "base": "3118.98", "tipo_factor": "Tasa", "tasa": "0.16", "importe": "499.03" } ] } ], "impuestos_traslado": [ { "impuesto": "002", "tasa": "0.16", "importe": "499.03", "tipo_factor": "Tasa" } ]}

Como se puede ver, hay una diferencia de 1 centavo entre el subtotal y los campos de conceptos.importe y conceptos.traslados.base.
Este error se genera debido a que el precio en el catálogo de Magento es de $1206,y al calcular el precio sin IVAes de $1039.655172, que se redondea a $1039.66 (y así queda guardado en la base de datos), un error de 0.00046%. Y al multiplicarlo por la cantidad de artículos, se obtiene $3118.98.

Esta es la respuesta del servidor del SAT (Error CFDI33107).
"type": "invoice.failed", "event_date": "2020-01-20T11:19:33-06:00", "invoice_data": { "invoice_id": "909", "creation_date": "2020-01-20T11:19:33-06:00", "receiver_rfc": "ABC999999321", "total": 3618, "subtotal": 3118.97, "status": "error", "fiscal_status": "active", "message": "CFDI33107: El TipoDeComprobante es I,E o N, el importe registrado en el campo no es igual a la suma de los importes de los conceptos registrados.; " }

Esto no sucede con todos los artículos, solamente con ciertas combinaciones que artiméticamente presentan problemas debido a este error de redondeo.

Cuál sería una manera de prevenir estos errores?
Se me ocurre incrementar la precisión de los precios en Magento aunque esto tiene otras consecuencias no deseadas.

Gracias por su ayuda.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions