Emplacement dans l'application : Comptabilité > Utilitaires > menu “Afficher un fichier sepa” (statut Beta).
Ne pas confondre avec l'entrée “Prélèvement SEPA” du même menu, qui elle génère un fichier XML de virements/prélèvements à envoyer à la banque depuis une multi-ligne comptable (module logeas-grid-export-xml). L'utilitaire décrit ici fait l'inverse : il lit un fichier SEPA déjà reçu/existant (XML pain.001, pain.008, pain.002 ou camt.054), affiche son contenu de façon lisible, le valide, puis propose de rapprocher les personnes qu'il contient avec les fiches Personne déjà en base.
L'écran app-sepa-viewer se compose de trois onglets :
InitgPty). Purement informatif, aucune action de sauvegarde sur cet onglet.CstmrCdtTrfInitn/CstmrDrctDbtInitn).C'est la partie utile pour mettre à jour l'annuaire à partir d'un relevé/fichier bancaire.
Chaque transaction du fichier est aplatie en une ligne de grille, séparée en deux listes :
Pour chaque ligne, l'utilitaire recherche la personne la plus proche dans l'annuaire par comparaison nom / prénom uniquement (algorithme de similarité Jaro-Winkler, service générique de rapprochement de doublons partagé avec le reste de l'application).
Pour chaque ligne, le meilleur candidat (score le plus haut, au-dessus de 30 points, et au-dessus du seuil pour être retenu) est proposé, avec le détail des raisons du score.
Deux grilles (Créditeurs / Débiteurs) affichent : nom, statut de rapprochement, personne rapprochée (modifiable manuellement via une liste déroulante), score, IBAN, BIC, et pour les débiteurs le RUM, la date de signature du mandat et le type de mandat.
Le statut de rapprochement affiché est calculé en comparant les données lues dans le fichier à celles déjà enregistrées sur la personne rapprochée :
Un clic sur une ligne (hors colonne “Personne rapprochée”) ouvre un détail (master-detail) comparant champ par champ la donnée lue dans le fichier et la donnée en base sur la personne actuellement rapprochée (recalculé à chaque clic, donc reflète un rapprochement corrigé manuellement dans la liste déroulante).
Depuis le détail d'une ligne, le bouton “Mettre à jour la fiche de la personne” reporte sur la fiche de la personne rapprochée :
L'adresse n'est volontairement pas reportée : elle n'est plus comparée ni proposée à la mise à jour dans cet écran. La sauvegarde passe par le service Personne existant de l'application (mêmes règles métier que la fiche Personne standard).
Après mise à jour, le statut de la ligne est recalculé immédiatement (repasse normalement à “Même information”).
Un contrôle de cohérence est exécuté à chaque chargement de fichier et distingue erreurs et avertissements :
| Code | Type | Signification |
|---|---|---|
| HDR001 | Erreur | MessageId absent de l'en-tête |
| HDR002 | Avertissement | Le nombre de transactions déclaré (NbOfTxs) ne correspond pas au nombre réel |
| HDR003 | Avertissement | La somme de contrôle déclarée (CtrlSum) ne correspond pas au total réel |
| CRED001 | Avertissement | Identifiant Créancier SEPA (ICS) introuvable (prélèvement) |
| TX001 | Erreur | IBAN invalide sur une transaction (échec de la clé de contrôle IBAN) |
| TX002 | Erreur | Montant nul ou négatif sur une transaction |
| MND001 | Avertissement | Identifiant de mandat (RUM) manquant sur une transaction de prélèvement |
Un fichier peut donc être chargé et affiché même s'il comporte des erreurs de validation ; celles-ci sont listées à titre d'alerte pour l'utilisateur, sans bloquer la consultation ni le rapprochement.
Code source : src/app/Comptabilite/Utilitaire/decode-sepa/
| Fichier | Rôle |
|---|---|
sepa.model.ts | Modèles ISO 20022 (Document, GroupHeader, PaymentGroup, Transaction, Mandate…), SepaParserService (parsing XML → modèle), SepaValidatorService (règles du §4), jeux de données de démonstration. |
sepa-viewer.component.ts / .html | Composant standalone racine (app-sepa-viewer), gère le dépôt de fichier, les 3 onglets et l'affichage détaillé du document. |
import-sepa-personnes/import-sepa-personnes.component.ts / .html | Composant standalone (app-import-sepa-personnes), reçoit le document en @Input(), construit les grilles Créditeurs/Débiteurs, gère le rapprochement, la comparaison et la mise à jour de fiche. |
import-sepa-personnes/models/sepa-import-row.model.ts | SepaImportRow + extraireLignesSepa() : aplatit un SepaDocument en lignes créditeurs/débiteurs. |
import-sepa-personnes/services/sepa-rapprochement.service.ts | SepaRapprochementService : configuration de similarité (SEPA_PERSONNE_CONFIG, seuil 85) et appel du service générique UniversalDuplicateService (Fichier/services/util-comparaison) pour scorer chaque ligne contre chaque personne. |
Dépendances notables : DGService (chargement/sauvegarde), PersonneService (annuaire des personnes, source de données du rapprochement et de la sauvegarde), UniversalDuplicateService (moteur de similarité générique déjà utilisé ailleurs pour la détection de doublons).
Historique : ce module provenait à l'origine du dossier logeas-gestion-sepa/decode-sepa ; il a été extrait dans son propre dossier decode-sepa à la racine de Comptabilite/Utilitaire, indépendant du module d'export XML (logeas-grid-export-xml) avec lequel il ne partage pas de code.