Le fichier pivot et les fichiers compagnons.
La dématérialisation des factures fournisseurs s'appuie sur un prestataire qui effectue, sur la facture papier, un traitement de LAD / RAD ( lecture / reconnaissance automatique des documents). Ce traitement de LAD / RAD produit un fichier au format XML contenant les données de la facture : c'est le fichier pivot. La dématérialisation des factures fournisseurs sait également traiter des fichiers dits « compagnons » qui accompagnent le fichier pivot (exemple : le scan de la facture papier ou le mail qui la facture en pièce jointe).
Principe de l'automate de dématérialisation des factures fournisseurs
- l'automate est un programme Diva qui scrute un répertoire d'entrée afin de détecter la dépose de fichier pivot et de fichiers compagnons
- l'automate lit le pivot et attribue un numéro unique (table DHBENT champ DHBNO). S'il n'y arrive pas il crée un dataset en erreur
- l'automate lit le pivot afin de déterminer son type (type de dataset)
- une fois le type de dataset déterminé, l'automate lit un paramétrage de datahub qui indique les états possibles par type. Ce paramétrage donne une succession d'états numérotés et pour chaque état une fonction diva détermine la branche à suivre
- un état est dit 'automatique' s'il est traité par l'automate
- un état est dit 'manuel' si une action est requise par un utilisateur ('en attente' est aussi un état manuel)
- le changement d'état (vers sa branche 'vrai' ou 'faux') appelle un code action Divalto
- chaque fonction de changement d'état traite une tâche unitaire simple à effectuer, et peut se poursuivre soit sur un autre état automatique ou manuel
- le superviseur permet de voir l'avancement, et de traiter les états manuels en réinjectant dans l'automate un dataset
- un état est potentiellement joué plusieurs fois, notamment via des états manuels qui réinjectent dans l'automate à un état inférieur
- l'automate écrit dans le livre de bord application pour les erreurs majeures concernant l'automate (fonction de changement d'état inexistante par exemple, arrêt de l'automate)
- un livre de bord dédié à l'automate est disponible afin de suivre les changements d'état
Illustration du diagramme d'états 'facture fournisseur'
Arborescence des fichiers – Scrutateur dans le cadre de la dématérialisation des factures fournisseurs
- Un CODE CHEMIN Divalto indiquera le point d'entrée du Datahub. Ce chemin sera nécessairement stocké pour le DOSSIER 999 (donc multi-dossier)
- Le point d'entrée est un chemin Divalto
DATAHUB_SCRUTATEUR est le nom par défaut que doit porter le chemin d'entrée des fichiers du datahub. Ce nom est uniquement modifiable par surcharge (Init_chemin_scrutateur dans le GTTTDHB001.dhsp) et doit forcément pointer le dossier 999
- On dépose un fichier dit 'pivot' et des fichiers compagnons (pdf, xml)
- Un scrutateur détecte la dépose de fichiers, et traite la lecture. Il est donc indispensable que, lorsqu'il y a plusieurs fichiers (par exemple le pivot et un PDF), le fichier pivot soit écrit sur le disque dur EN DERNIER. Sa présence garantit la bonne écriture préalable des fichiers compagnons (comme le PDF).
- Le scrutateur lit le contenu du pivot. Si la structure est lisible, le pivot ainsi que les fichiers compagnons sont déplacés du point d'entrée vers un emplacement dédié, et une entrée dans le datahub est faite : le dataset. Les cas de rejets sont donc à ce stade uniquement des fichiers dont la structure est incorrecte
- Le déposant (=la source des pivots) s'assure d'une règle de nommage sans doublons. Il est possible de placer les fichiers compagnons dans un sous-répertoire du fichier pivot, mais c'est la présence du pivot à la racine du point d'entrée qui le rend 'détectable'
- Lorsque le pivot est amené à être complété par la suite (par exemple logiciel externe qui scanne le contenu) il est nécessaire de donner un IDENTIFIANT EXTERNE UNIQUE. Cet identifiant, donné dans le premier puis le second pivot, sert à indique qu'il s'agit du même 'document'.
- Paramétrage des natures de fichiers joints et chemins
- Les chemins de destinations correspondent aux trois types de fichiers joints d'un dataset : le joint PIVOT, le joint PRINCIPAL et les AUTRES joints. Ces chemins pour le dossier 999 sont cherchés par l'automate par l'intermédiaire d'une NATURE DE FICHIER DE JOINT.
Les codes de NATURE sont les suivants :
-
-
- DATAHUB_PIVOT pour la nature du chemin concernant le fichier pivot
- DATAHUB_DACFOU pour la nature du chemin concernant au fichier principal de facture fournisseur
- DATAHUB_AUTRE pour la nature du chemin concernant les autres fichiers
-
Il est possible d'utiliser des données de l'enregistrement DHBENT dans la construction d'un chemin.
Exemple :
- Dans ce cas tous les pivots seront stockés dans des sous-dossiers correspondant à la balise SOURCE du pivot
Structure du fichier pivot
- Un fichier pivot a l'extension .DHUB afin de le distinguer totalement des autres fichiers. Les autres extensions seront des fichiers compagnons du pivot
- Le nom du fichier pivot n'est pas significatif pour Divalto. Le but est de mettre les données à l'intérieur du fichier pivot.
- Le contenu est un fichier texte à structure xml simple (tel que lu par XmlRead en langage Diva, voir aide du langage). Les données sont entourées de balises ouvrantes et fermantes, et permettent l'imbrication de niveaux. Les noms de balises et attributs sont sensibles à la casse
- Pour être considéré comme correct le pivot comporte au minimum les balises suivantes
- Une balise XML pourra contenir des données selon 3 types
- Alphanumérique
- Date au format YYYYMMDD
- Numérique (entier ou décimal) avec séparateur '.' et signe
- (le type sera imposé par la balise)
- La liste des fichiers compagnons est décrite dans le pivot
Complétion du fichier pivot
Lorsqu'un document PDF passe par une reconnaissance de contenu, on pourra déposer le fichier PDF 'original' avec un pivot minimaliste. Ce pivot permet de créer le dataset avec les documents compagnons.
Un second pivot avec les nouveaux documents pourra être déposé, et viendra remplacer totalement les données du premier pivot (sauf numéro de dataset et date de création) et les pièces jointes. Le lien se fait via un IDEXTERNE fourni dans le pivot qui permet de retrouver le dataset à compléter. Si le dataset 'minimaliste' a fait l'objet d'un traitement manuel utilisateur, un second dataset sera créé en statut 'périmé' afin de conserver la trace mais sans toucher au traitement manuel du dataset.
Exemple de fichier pivot simple
Exemple de fichier pivot pour complétion
Exemple de fichier pivot plus complet