Table des matières

Sujets connexes

Utilitaire SEPA : lecture d'un fichier bancaire et import des personnes

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.

1. Vue d'ensemble fonctionnelle

L'écran app-sepa-viewer se compose de trois onglets :

  1. Visualisation : dépose/charge un fichier XML SEPA, affiche l'en-tête du message, les paramètres de paiement, les mandats (le cas échéant) et le détail de chaque transaction, avec un contrôle de cohérence du fichier.
  2. Récupération information *(l'utilitaire d'import à proprement parler)* : extrait la liste des créditeurs (virements) et débiteurs (prélèvements) du fichier, tente de les rapprocher automatiquement d'une personne existante dans l'annuaire, et permet de reporter l'IBAN/BIC/RUM lus dans le fichier sur la fiche de la personne rapprochée.
  3. Informations émetteur : affiche en lecture seule l'identité, l'adresse, le compte et le contact du donneur d'ordre / créancier tel que déclaré dans le fichier (InitgPty). Purement informatif, aucune action de sauvegarde sur cet onglet.

2. Onglet "Visualisation"

3. Onglet "Récupération information" — l'utilitaire d'import

C'est la partie utile pour mettre à jour l'annuaire à partir d'un relevé/fichier bancaire.

3.1 Construction des lignes

Chaque transaction du fichier est aplatie en une ligne de grille, séparée en deux listes :

3.2 Rapprochement automatique

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.

3.3 Grille et statuts

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).

3.4 Mise à jour de la fiche personne

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”).

4. Validation du fichier

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.

5. Limites connues / pistes d'évolution

6. Repères techniques (pour les développeurs)

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.