Aller au contenu principal

Traitement de document

L'écran Traitement de document est le point d'entrée unique du traitement dans NomaUBL. Il exécute un modèle de document sur un (ou plusieurs) fichier source et :

  1. lit la propriété source du modèle (XML ou UBL) ;
  2. aiguille vers le pipeline correspondant — transformation XSL pour les spools XML, validation directe pour les factures déjà au format UBL ;
  3. valide contre XSD + Schematron, persiste en base, et (selon l'option Send to PA) dépose sur la Plateforme Agréée ou s'arrête sur un statut local.

Les pages Process XML et Process UBL des versions précédentes disparaissent — le formulaire ci-dessous reconfigure ses contrôles selon le modèle choisi. Une seule page, une seule route REST (POST /api/process), une seule commande CLI (-process).

La page fonctionne quel que soit le système source — JD Edwards, SAP, NetSuite ou un ERP personnalisé.


Choix de la source

La première décision d'un modèle de document est sa Source. Elle se définit dans Documents → onglet Document → champ Source et elle est lue ici :

SourceQuand la choisirCe qui s'exécute
XMLSpool XML provenant de tout ERP nécessitant une transformation vers UBL. Sortie BIP JDE, XML dérivé d'IDoc SAP, XML issu d'une saved-search NetSuite, exports d'ERP personnalisés.Transformation XSL → UBL 2.1 → XSD + Schematron → BDD → dépôt PA optionnel. La page expose le sélecteur Mode (AUTO / SINGLE / BURST / UBL) et le sélecteur Send to PA.
UBLLe fichier est déjà une facture UBL 2.1 (l'ERP émet de l'UBL nativement, ou le fichier provient d'une PA en aval au format UBL).Lecture de la facture, extraction de (doc, dct, kco) depuis cbc:ID, validation, persistance, dépôt optionnel. La page expose un mode Validate only et un sélecteur Send to PA.

Une fois le modèle sélectionné, le champ Source du formulaire affiche la valeur résolue, et le reste du formulaire se reconfigure automatiquement.


Vue d'ensemble du pipeline

📄 Fichier sourcechoisi ou téléversé⚙ template.sourcedécision⚙ Pipeline XMLXSL → UBL · AUTO / SINGLE / BURST / UBL⚙ Pipeline UBLparser cbc:ID · valider · persisterXMLUBL✅ ValidationXSD + Schematron💾 Persistance BDDF564231 + UHTMPL = modèle📡 Plateforme AgrééeUse settings · Force send🏠 Statut local 99XXSkip sendingenvoiarrêt

replaceMode = Y purge les cinq tables UBL (F564231 / F564233 / F564234 / F564235 / F564236) pour le triplet (doc, dct, kco) correspondant avant le re-traitement — sémantique identique sur les chemins XML et UBL.


Le formulaire

Le formulaire comporte quatre contrôles communs et des champs spécifiques par source.

ChampSourceDescription
Templateles deuxModèle de document (resource type document). Le sélecteur liste tout modèle figurant dans config-documents.json.
Sourceles deuxAffichage en lecture seule de la valeur source résolue du modèle. Changer de modèle met à jour ce champ et reconfigure le formulaire.
Select Fileles deuxDeux boutons — Upload File (sélecteur de fichiers du navigateur) ou Browse Server (ouvre l'explorateur de fichiers embarqué dans dirInput). Les téléversements XML sont copiés dans le répertoire de travail du modèle ; les téléversements UBL atterrissent dans <dirInput>/ubl/.
ModeXMLAUTO (défaut), SINGLE, BURST ou UBL. Voir Modes (source XML) ci-dessous.
Send to PAXMLUse settings (défaut) ou Skip sending.
ModeUBLProcess & Validate (défaut) ou Validate only.
Send to PAUBLUse settings, Force send ou Skip sending. Force send est l'override propre à UBL qui contourne le drapeau sendToPA du template e-invoicing.
Replaceles deuxSkip laisse intactes les lignes existantes ; Overwrite purge les cinq tables UBL pour le même (doc, dct, kco) et ré-importe proprement.

Modes (source XML)

ModeSortieUtilisation typique
AUTOPDF ou UBLRésout le mode applicable par document via UBL Defaults → Document Type / BAR Routing. Défaut recommandé en production — pratique lorsqu'un même spool XML mêle factures (résolues en UBL) et documents non-factures (résolus en SINGLE / BURST).
SINGLEPDFRend l'intégralité du spool XML en un PDF unique. Utile pour les documents non-factures qui ne nécessitent qu'une mise en forme PDF.
BURSTPDF + index XMLDécoupe le spool source sur une clé (typique des spools multi-documents), produit un PDF par valeur de clé et un fichier d'index XML décrivant l'ensemble obtenu. L'index est consommé par les applications tierces qui doivent dispatcher chaque document indépendamment.
UBLUBL 2.1 + PDFExécute le XSL document vers UBL 2.1, valide, persiste et (selon Send to PA) dépose. Réglage explicite recommandé une fois le routage AUTO validé pour un modèle.

AUTO n'est pas un pipeline propre — il aiguille chaque document du XML source vers SINGLE, BURST ou UBL selon la configuration Document Types. Seule la branche UBL enchaîne validation, persistance et dépôt PA ; SINGLE / BURST produisent une sortie PDF et s'arrêtent là.


Modes (source UBL)

ModeCe qui s'exécute
Process & Validate (défaut)Lecture de la facture UBL, extraction de (doc, dct, kco) depuis cbc:ID (regex du modèle), validation XSD + Schematron, persistance dans F564231 / F564233 / F564234 / F564235 / F564236, écriture de l'événement de cycle de vie. Send to PA s'applique.
Validate onlyExécute XSD + Schematron uniquement. Aucune écriture en base, aucun dépôt PA. Le tableau de résultats affiche chaque erreur avec sévérité / source / règle / message — mêmes colonnes que la page Erreurs d'intégration. À utiliser comme contrôle rapide avant d'engager le fichier en base.

Plus de convention de nommage. Le traitement UBL extrait toujours (doc, dct, kco) depuis le cbc:ID de la facture via la regex idPattern du modèle. La convention DOC_DCT_KCO_ubl.xml n'est plus exigée — les fichiers peuvent porter n'importe quel nom.


API REST

POST /api/process
Content-Type: application/json

{
"template": "invoices",
"file": "/chemin/vers/fichier.xml",
"mode": "AUTO", // source XML
"validateOnly": false, // source UBL
"sendToPA": "", // UBL: "" | "Y" | "N"
"noSend": false, // XML: désactive le dépôt
"replaceMode": false // les deux: purge avant ré-import
}

La route remplace les anciens /api/run (XML) et /api/process-ubl (UBL), et la réponse est diffusée comme une suite d'événements de log et un marqueur de fin — même forme des deux côtés, donc une seule intégration cliente couvre les deux pipelines.


CLI

nomaubl.sh process <config.json> <modèle> <fichierOuRépertoire> [type] [drapeaux]

Remplace les anciens drapeaux -xml et -ubl. Le CLI lit la propriété source du modèle dans config-documents.json et aiguille vers le pipeline correspondant. Voir Command Line pour la liste complète des drapeaux.


Conseils & bonnes pratiques

  • Choisir la bonne source au niveau du modèle, pas au moment de l'exécution. Source se définit sur le modèle de document — la page Process Document la lit simplement. Une définition unique dans Documents garantit la cohérence de tous les points d'entrée (cette page, Fetch Input, le CLI, le planificateur).
  • Utiliser Validate only avant la persistance. À l'import de fichiers UBL provenant d'un nouveau système amont, lancer Validate only d'abord pour faire remonter les échecs XSD / Schematron sans polluer la base.
  • AUTO en production, explicite pour le débogage. Les modèles de production utilisent généralement AUTO afin que la table des types de document pilote l'aiguillage par ligne. Lors du débogage d'un modèle isolé, repasser au mode UBL explicite rend la trace sans ambiguïté.
  • Replace = Overwrite purge cinq tables. En-tête (F564231), lignes (F564233), TVA (F564234), cycle de vie (F564235) et erreurs de validation (F564236) — l'historique et les erreurs de l'exécution précédente n'interfèrent pas avec la nouvelle exécution.
  • Pour les exécutions par lots non assistées, préférer Sync → Fetch Input. Cette page convient aux exécutions ad hoc d'un seul document ou spool. Fetch Input enchaîne le même pipeline sur plusieurs fichiers d'un coup, avec la configuration par modèle déjà appliquée.