meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
compta:exportxml [2026/08/26 15:18] – [Accès à l'écran] 45.147.21.143compta:exportxml [2026/08/26 15:24] (Version actuelle) – [Annexe technique] 45.147.21.143
Ligne 1: Ligne 1:
 +|{{:connexe.jpg?40|}} **Sujets connexes**|[[compta:exportxml:annexe]]\\ [[https://fr.wikipedia.org/wiki/ISO_20022]] |
 ====== Export XML (prélèvement SEPA) ====== ====== Export XML (prélèvement SEPA) ======
  
Ligne 53: Ligne 54:
   * L'écran ne propose aujourd'hui que les prélèvements (Recette/Bordereau) : pour un virement (Dépense), la génération n'est pas encore accessible depuis cette grille.   * L'écran ne propose aujourd'hui que les prélèvements (Recette/Bordereau) : pour un virement (Dépense), la génération n'est pas encore accessible depuis cette grille.
  
-===== Annexe technique ===== 
- 
-  * **Composants** : `LogeasGridExportXmlComponent` (`app-logeas-grid-export-xml`, écran principal) → `DetailExportXmlComponent` (wrapper d'affichage conditionnel) → `ExportXmlOutilComponent` (`app-export-xml-outil`, contient toute la logique métier). 
-  * **Filtrage amont** des multi-lignes éligibles : `typeMultiligne === 1` (Recette) ou `5` (Bordereau), `status != 1` (non supprimée). Les Dépenses sont explicitement exclues dans le code ("On n'offre pas les virements SEPA pour l'instant"). 
-  * **Détection de la ligne de trésorerie** : la saisie dont le `codeArticle` commence par `"5"` (compte de classe 5). 
-  * **Stockage des paramètres** : ICS via `DG.BaseCourante.config.setParam$("ICS", ...)` (paramètre global) ; coordonnées bancaires via `DG.BaseCourante.config.setInfoBanque$(codeBanque, ...)`, indexées par code de compte bancaire. 
-  * **Organisation créancière** : lue via `CRUD("READ", "Secteur", {"ID": DG.BaseCourante.IDSecteur})` — le secteur comptable **courant** de l'utilisateur (`data-source.service.ts`, méthode `determinerBanqueOperationTresorerie$`). Corrigé le {{DATE}} : lisait auparavant systématiquement le secteur ID=1, quel que soit le secteur de travail. 
-  * **Mapping et validation** : `DataMapperService.mapAndValidateXmlData(...)` construit les structures `OrganisationDetailsBancaires` (créancier) et `PersonneDetailsBancaires` (par adhérent), en nettoyant les chaînes (`supprimerAccents()` + `nettoyerChaine()`, jeu de caractères latin SEPA `[a-zA-Z0-9 /\-?:().,'+]`). Les règles de validation (nom, IBAN, BIC, cohérence pays/IBAN/BIC, adresse, date de mandat ≤ aujourd'hui, ICS) sont centralisées dans `ValidationXmlBancaireService`. 
-  * **Génération du fichier** : `xml-builder.service.ts`, format ISO 20022 SEPA — `pain.008.001.02` (`CstmrDrctDbtInitn`) pour un prélèvement, `pain.001.001.03` (`CstmrCdtTrfInitn`) pour un virement, construit via la librairie `fast-xml-parser`. 
-  * **Identifiants techniques** (`MsgId`, `PmtInfId`, `EndToEndId`) sont dérivés de l'horodatage (`Date.now()`) : pas de garantie d'unicité stricte en cas de générations multiples à la même milliseconde (cas extrêmement rare en usage réel). 
-  * **Téléchargement** : `FileDownloaderService.downloadFile()`, `Blob` local (`application/xml`) + lien `<a download>` simulé — aucun appel serveur, tout se passe côté navigateur.