Para los que estan desarrollando los CFDIs en pagos parciales, les comparto algunos criterios que he tomado en mi propio desarrollo los cuales espero que les ayuden:
Al registrar el pago, cuestiono si van a registrar pagos totales (a) o pagos parciales (b).
No quise usar todo en un solo codigo por las muy distintas validaciones que representan.
a) Para el caso de los pagos totales, reviso si el documento en cuestión no ha recibido algun tipo de "Abonos". En caso que asi sea, reviso si esos abonos son por NOTAS DE CREDITO o por PAGO PARCIAL.
Si el abono es por NOTA DE CREDITO o no ha recibido abonos, entonces registro el pago cuidando que sea por el TOTAL o el RESTO del adeudo, segun tenga o no abonos.
>Revisa abonos por nota de credito (tanc=total abonado por nota de credito)
>Revisa abonos por pagos parciales (np=numero de pagos parciales)
>Si np>0 entonces error, este modulo solo acepta pagos totales -> end
>Registra el pago por el resto = monto original - tanc
En este esquema no se genera CFDI.
b) Para el caso de los pagos parciales, solo es posible registrar UN abono por UN documento.
Asi que primero reviso si el documento en cuestión no ha recibido algun tipo de "Abonos". En caso que asi sea, reviso si esos abonos son por NOTAS DE CREDITO o por PAGO PARCIAL. Si hay pagos parciales reviso cuantos son:
>Traigo todos los datos del documento original (UUID o folio, Serie, Fecha y Monto Original)
>Revisa abonos por nota de credito (tanc=total abonado nota de credito)
>Revisa abonos por pago parcial (np=cuantos pagos ha tenido, tapp=total abonado en pagos >parciales)
>Si np=0 entonces Registo el pago parcial validando que el pago < monto original - tanc
>Si np>0 entonces registro el pago parcial validando que el pago <= monto original - tanc -tapp
>np=np+1
Para el caso de la descripcion:
Si se liquida será entonces
Descripcion ="PAGO" & np & " de " np & "FACTURA " & SERIE & UUID-o-Folio & fecha & "MONTO" & monto original
Si no se liquida totalmente entonces
Descripcion = "PAGO" & np & " de " np+1 & "FACTURA " & SERIE & UUID-o-Folio & fecha & "MONTO" & monto original
Si conociamos el numero de pagos pactados sustituimos np+1 por ese valor.
Y el monto del pago sera = PAGO / (1 + % de iva del Monto original)
IVA= PAGO * % de iva del Monto original
Unidad de Medida = ufff el eterno dilema PAGO
Cantidad = 1
Y con ello, ya contamos con todos los elementos para generar el xml y el CFDI correspondiente.
Se aceptan comentarios!!!
Frank
