Croiser l'UUID avec l'IdDocumento dans Excel
La logique consiste à croiser deux listes : les UUID des factures marquées PPD, et les UUID que chaque complément de paiement référence dans son champ IdDocumento. Tout UUID d'une PPD qui n'apparaît comme IdDocumento dans aucun REP est une facture sans complément.
Étapes
- Extrayez les données de l'intérieur du XML, pas du nom de fichier : de chaque facture, vous voulez l'UUID, le mode de paiement (PUE ou PPD), le total et la date.
- Faites de même avec les compléments de paiement : de chaque REP, vous voulez l'IdDocumento référencé et le montant payé.
- Power Query lit le XML par dossier, et cela suffit à monter les deux tables. Un script qui parcourt les fichiers et déverse les champs dans une feuille fait la même chose.
- Croisez les deux listes et additionnez les montants par UUID. Ce qui n'apparaît pas, et ce qui apparaît sans couvrir le total de la facture, est ce qui reste ouvert.
Où ça coince
- Power Query avec du XML imbriqué ne se monte pas en cinq minutes, et les espaces de noms du CFDI 4.0 cassent l'import si la requête est mal configurée.
- Le paiement peut arriver dans un mois différent de celui de la facture, parfois l'année suivante. Si vous ne croisez que le dossier de la période que vous clôturez, vous allez signaler comme en attente une facture dont le REP est rangé ailleurs.
- Une PPD admet plusieurs compléments, un par versement, et reste ouverte tant que leur somme ne couvre pas le total. Compter s'il existe au moins un REP ne suffit pas : il faut additionner les montants.
- Avec des centaines de fichiers par client, un UUID exporté à moitié casse le croisement en silence. L'erreur ne se voit pas avant que le SAT ne la voie.