Cruzar el UUID contra el IdDocumento en Excel
La lógica es cruzar dos listas: los UUID de las facturas marcadas como PPD, y los UUID que cada complemento de pago referencia en su campo IdDocumento. Todo UUID de una PPD que no aparezca como IdDocumento en ningún REP es una factura sin complemento.
Pasos
- Saca los datos de dentro del XML, no del nombre del archivo: de cada factura te interesan el UUID, el método de pago (PUE o PPD), el total y la fecha.
- Haz lo mismo con los complementos de pago: de cada REP te interesan el IdDocumento que referencia y el importe pagado.
- Power Query lee XML por carpeta y con eso armas las dos tablas. Un script que recorra los archivos y vuelque los campos a una hoja hace lo mismo.
- Cruza las dos listas y suma los importes por UUID. Lo que no aparezca, y lo que aparezca sin cubrir el total de la factura, es lo que sigue abierto.
Dónde se atora
- Power Query con XML anidado no se arma en cinco minutos, y los espacios de nombres del CFDI 4.0 rompen la importación si la consulta no está bien configurada.
- El pago puede llegar en un mes distinto al de la factura, a veces en el año siguiente. Si cruzas solo la carpeta del periodo que cierras, vas a marcar como pendiente una factura que sí tiene su REP guardado en otro lado.
- Una PPD admite varios complementos, uno por cada abono, y sigue abierta hasta que la suma cubra el total. Contar si existe al menos un REP no basta: hay que sumar importes.
- Con cientos de archivos por cliente, un UUID exportado a medias rompe el cruce en silencio. El error no se nota hasta que lo nota el SAT.