Codigo fuente Complemento de pago Cfdi PHP Mysql
El Complemento de Pago CFDI 4.0 es uno de los puntos donde más proyectos de facturación fallan.
No porque sea imposible, sino porque:
-
la guÃa del SAT es extensa y poco clara
-
mezcla conceptos fiscales con técnicos
-
muchos ejemplos están incompletos
-
y casi nadie explica el flujo completo, desde la base de datos hasta la cancelación
Si eres desarrollador y estás construyendo tu propio sistema de facturación en PHP y MySQL, este artÃculo está pensado para ti.
El problema real: no es el XML, es la lógica
Uno de los errores más comunes es pensar que el complemento de pago es solo:
“otro XML que se timbra”
En realidad, el complemento de pago es un registro financiero, no solo fiscal.
Debe reflejar exactamente:
-
cuánto se debÃa
-
cuánto se pagó
-
cuándo se pagó
-
cuánto quedó pendiente
-
y en qué parcialidad va la factura
Si la lógica interna no es correcta, el XML nunca va a cuadrar, aunque esté bien formado.
¿Cuándo se debe usar un Complemento de Pago?
El complemento de pago se usa únicamente cuando la factura se emitió con:
-
Método de pago: PPD (Pago en Parcialidades o Diferido)
Cada pago posterior:
-
parcial o total
-
en una fecha distinta a la emisión
obliga a generar un complemento de pago.
Si la factura es PUE, no aplica.
La importancia de la base de datos
Antes de pensar en timbrar, necesitas una estructura clara en tu base de datos.
Un buen diseño separa claramente:
-
Facturas
-
Complementos de pago
-
Pagos aplicados a facturas
Cada pago debe existir como registro independiente, incluso si:
-
varios pagos se incluyen en un mismo complemento
-
una factura tiene muchas parcialidades
Esto permite:
-
controlar saldos correctamente
-
cancelar pagos sin perder historial
-
cumplir reglas del SAT sin trucos
Parcialidades: el detalle que casi todos ignoran
El SAT exige que cada pago indique su número de parcialidad.
Este número:
-
no es opcional
-
no es aleatorio
-
no se reinicia
Debe ser:
el número consecutivo de pagos que ya tiene la factura
Si una factura ya tuvo dos pagos, el siguiente siempre será el tercero.
Este detalle es una de las principales causas de rechazo del CFDI.
Manejo correcto de impuestos en el complemento
Aquà está uno de los puntos más delicados.
En los documentos relacionados
Se pueden desglosar:
-
impuestos trasladados
-
impuestos retenidos
-
con base, tasa y tipo factor
Pero en el nodo de Totales del complemento…
⚠️ NO se repite ese desglose
El SAT solo permite totales especÃficos, como:
-
total de retenciones por tipo de impuesto
-
totales de IVA trasladado por tasa
-
bases exentas
Nada más.
Si envÃas:
-
tablas detalladas
-
mezclas de tasas
-
campos no permitidos
el complemento será rechazado.
Cancelar un complemento de pago: más que un UUID
Cancelar un complemento no es solo una llamada al PAC.
Internamente debes:
-
Marcar el complemento como cancelado
-
Marcar los pagos asociados como cancelados
-
Revertir los montos en la factura:
-
restar lo pagado
-
aumentar nuevamente la deuda
-
-
Si la factura tenÃa deuda cero y vuelve a tener saldo, marcarla como no pagada
Nunca se deben borrar registros.
El SAT exige historial completo y consistente.
Reglas del SAT que debes respetar sà o sÃ
Algunas reglas clave que suelen pasarse por alto:
-
No se cancela la factura original, se cancela el complemento
-
Un complemento cancelado invalida los pagos registrados
-
Los montos deben cuadrar exactamente con la factura
-
Los totales deben estar redondeados correctamente
-
El tipo de cambio aplica incluso si es 1
Ignorar una sola regla puede causar rechazo o inconsistencias fiscales.
¿Por qué muchos desarrolladores se frustran?
Porque intentan:
-
implementar el complemento “rápido”
-
copiar ejemplos incompletos
-
resolver errores solo cuando el SAT rechaza
El complemento de pago no se improvisa, se diseña.
Una vez que entiendes la lógica completa:
-
el timbrado deja de ser un problema
-
los errores desaparecen
-
y el sistema escala sin dolores de cabeza
Conclusión
El Complemento de Pago CFDI 4.0 no es complicado, pero sà es estricto.
Si:
-
separas bien los datos
-
respetas las reglas del SAT
-
y piensas primero en la lógica financiera
puedes implementarlo correctamente en PHP y MySQL sin depender de soluciones cerradas.
Y lo mejor:
una vez bien hecho, ya no tienes que tocarlo otra vez.
Codigo fuente Complemento de pago Cfdi PHP Mysql

No hay comentarios:
Publicar un comentario