Des fichiers au format XML sont déposés régulièrement dans un dossier, et on souhaite pouvoir les récupérer depuis ce dossier et les importer dans DIAPASON.
➡️ On va donc paramétrer un message entrant !!! 📂 -->📄--> 💻
Comment faire ? 🧐
Créer le modèle de XML ( et le compléter 😉)
Vous disposez d’un exemple type du fichier XML à importer dans DIAPASON. La première étape va être de “reconstruire” ce fichier XML dans DIAPASON !
En gros, toutes les balises du fichier XML devront être recréées dans un modèle XML dans DIAPASON.
Il faudra donc bien faire attention à prendre le fichier XML le plus complet possible, avec toutes les balises qu’il est possible d’avoir, pour le traduire dans DIAPASON !
A noter qu’on va pouvoir simplement importer ce fichier XML modèle pour construire la trame dans DIAPASON ! 💪
Dans DIAPASON, ça se passe par ici :
On va donc pouvoir créer un nouveau modèle en important notre fichier modèle :
Modèle XML : on vient nommer le modèle XML de manière logique
Balise départ : on doit rentrer ici la balise de départ de notre fichier modèle XML, sans quoi il ne pourra pas être lu !
C'est à dire ?
C’est la balise tout en haut !
Fichier Exemple : on entre ici l’adresse du fichier XML “exemple type” qu’on veut importer pour construire la trame de notre modèle XML !
Une fois le modèle XML créé à partir de notre fichier XML type, on peut aller consulter la structure qui a été construite via “Visualisation structure” :
Mais ce modèle XML n’est pas forcément complet ! Cela dépend du fichier XML type qu’on a utilisé pour le créer.. il est donc possible de venir le modifier pour ajouter des branches !
Pour cela, on clique sur “Définition structure” depuis le modèle XML :
Pour simplifier les mises à jour sur les modèles XML, on a séparé dans DIAPASON les modèles “en développement” et les modèles “en exploitation”.
Les mises à jour se font en développement, pour éviter d’avoir des soucis si les modèles en exploitation sont utilisés.
Une fois le modèle créé en développement, il faut donc le basculer en exploitation ! Pour cela, on va lancer l’action “Transfert en exploitation” :
Si on repasse en Exploitation un modèle XML qui a été beaucoup modifié, il peut arriver que ça tombe en erreur. Il faut alors utiliser l’action “Transfert en Exploitation forcé”.
On retrouvera donc notre modèle dans le menu suivant :
Créer les correspondances et les variables XML
Une fois le modèle XML créé, on va pouvoir associer des variables XML aux différentes balises. On pourra ensuite transférer les valeurs des balises dans les variables XML et on les récupèrera ainsi dans DIAPASON ( c’est une étape suivante ! 😉 ).
Dans cette étape, la première question a se poser est : quelles informations souhaite-t-on récupérer dans DIAPASON depuis notre XML ? Toutes les informations du XML ne nous intéressent pas !!!
Pour notre exemple, on veut récupérer les informations suivantes :
Une correspondance peut correspondre à une balise nœud, ou à une balise valeur selon le cas. On va définir les correspondances de manière à identifier de manière unique les informations que l’on souhaite récupérer.
Ici, le numéro et la date de la facture sont présents une seule fois chacun dans le XML: aucune autre balise des autres blocs ne porte le nom <ram/ID> et <udt:DateTimeString>. Ces deux informations sont placées sous le même nœud <rsm:ExchangedDocument>.
On va donc pouvoir créer une correspondance au niveau du nœud <rsm:ExchangedDocument>, qui englobera le numéro et la date de facture !
Ici, la balise <ram:GlobalID> est présente plusieurs fois dans le bloc <ram:SellerTradeParty>, mais également dans d’autres blocs ( dans le bloc des informations de l’acheteur notamment !)
On va donc positionner une correspondance sur la balise <ram:GlobaleID> pour pouvoir boucler dessus et récupérer les différentes valeurs.
On va également positionner une correspondance sur la balise <ram:SellerTradeParty>, pour pouvoir identifier de manière unique la balise <ram:GlobaleID> et ne pas la confondre avec les balise de même nom qui sont dans d’autres blocs.
Une fois qu’on a identifié les correspondances “en théorie”, on va les créer dans DIAPASON. Ca se passe par ici :
On crée une nouvelle correspondance et on remplit ainsi :
Modèle : on entre ici le nom du modèle XML crée précédemment et passé en exploitation
Version : on entre ici la version dumodèle XML crée précédemment et passé en exploitation
Correspondance : on vient nommer notre correspondance. On va lui donner un nom logique pour pouvoir l’identifier facilement ! Ici on a choisit “E-” pour “Entrant” et “STPGI” pour le nom de la balise du fichier XML, qui est “SellerTradePartyGlobalID”. Il n’y a pas d’obligations là-dessus, mais il faut pouvoir s’y retrouver par la suite !
Désignation : on va nommer notre correspondance de manière logique pour s’y retrouver ! Ici, le plus évident c’est de lui donner le même nom que la balise.
Commentaire Zone de texte libre permettant de données des informations complémentaires à titre d’information.
Type correspondance : on met évidemment “Entrant”, car c’est un message entrant qu’on est entrain de paramétrer 😉
Balise début : on vient dérouler le fichier XML pour sélectionner la balise de départ de la correspondance.
C'est à dire ?
Dans nos exemples présentés plus haut, on aura donc :
-pour cette correspondance, balise de départ -> <rsm:ExchangedDocument>
-pour cette correspondance, balise de départ -> <rsm:GlobalID> car on a directement placé la correspondance dessus
Action interne : on met “INI-CTX- Initialisation Contexte/Variable”
Est-ce que cette correspondance comporte une valeur qu’on veut récupérer dans DIAPASON ?
Si c’est une balise nœud => non !
Si c’est une balise valeur => logiquement oui !
Si oui, on va aller associer la/les balises à des variables XML ! Pour cela, depuis la correspondance, on clique sur “Définition / Modèle”:
Le modèle XML s’affiche: on le déroule pour trouver la balise sur laquelle on a la correspondance, qui est en vert :
Description de la fiche de définition du détail de correspondances :
Onglet « Définition » :
Ordre : Numéro ordre de traitement de la correspondance. Cet ordre permet de prioriser lors du traitement du message les affectations des variables et permet donc de se détacher de la structure du message lui-même. Par exemple, il est tout à fait envisageable d’avoir un message XML présentant une balise <OF> suivie d’une balise <Etape> et de vouloir d’abord initialiser la variable réceptionnant la valeur de la balise <Etape>.
Variable : Référence variable associée à la balise. Les variables possibles sont déterminées en fonction de l’action interne (définie sur l’entête de correspondance). Le tableau ci-dessous présente un récapitulatif des variables par action interne :
Action
Type
Description
O ?
ACT-AP-RE
VFL
SFL
XML
Variables Standard (APL)
Variables Spécifiques (APL)
Variables XML
Variables de l’action:
AppLigDatRec => Date réception
AppLigQteIntRec => Quantité Interne Déclarée
AppNumBL => Numéro de BL
RefPalette => Numéro de palette
RefTypePalette => Type Palette
ACT-FA-DE
XML
Variables XML
Variables de l’action :
CdeNumCom => Numéro de cde de production
CdeNumLig => Numéro de ligne de cde.
GamEtaRef => Référence étape file d'attente
GenEnrRefUtilCre => Utilisateur origine Déclaration
LanSerFabDecCtx => Contexte Déclaration de fabrication
LanSerFabDecMod =>Mode de déclaration
LanSerFabOF => Numero d'OF
LanSerFabQteDec => Qte déclarée.
LanSerFabQteTyp => Déc. / Reste à Fabriquer ou /Qté Condi.
LanSerFabQteUnMe => Unité de mesure déclaration.
LanSerReeDecDat => Date de déclaration.
LanSerReeDecHeu => Heure Réelle de déclaration
LanSerRef => Référence Série
LanSerRLRef =>Référence Regroupement Local
RefEmplaStock =>Reference emplacement stock.
RefPalette => Numéro de palette.
RefTypePalette => Type palette.
ResGenRef => Référence ressource Déclaration
StoFluSecEntRef => Section entrée en stock.
SuiIdeRef =>Identifiant annulation de déclaration
ACT-INF-SUI
XML
Variables XML
Variables de l’action :
Action => Action à mener
FatCatDecCl2 => Référence Etape
FatCatDecEnt =>Entité pour Informations Suivies
FatCatDecEntRef => Référence Entité
FatCatDecRef =>Référence Famille Informations Suivies
LanModTyp =>Mode Lancement sur Entité.
+
+
+
+
ACT-ORDO
XML
Variables XML
ACT-PRO
XML
Variables XML
ACT-STO-IND
XML
Variables XML
Variables de l’action :
Action => Action à mener
EntCl1 => Référence Inventaire
InvDes => Désignation Inventaire
InvGenListePrevDate => Date Prévue Gén. Liste Comptage
InvGenListePrevHeure => Heure Prévue Gén. Liste Comptage
InvPhotoPrevDate => Date Prévue pour Photo.
InvPhotoPrevHeure => Heure Prévue pour Photo
InvTyp => Référence Inventaire Type
+
+
+
ENT-MAJ
XML
Variables XML
Variables de l’action :
Action => Action à réaliser
Présentation => Présentation
INI-CTX
XML
SCR
VCR
Variables XML
Variables Standards Critères
Variables Spécifiques Critères
INI-REB
XML
SCR
VCR
Variables XML
Variables Standards Critères
Variables Spécifiques Critères
Champs de la liste de la requête REB définie sur l’entête
INI-REN
XML
SCR
VCR
Variables XML
Variables Standards Critères
Variables Spécifiques Critères
Balise : Bouton permettant de sélectionner la balise sur laquelle la correspondance doit s’effectuer. Cette zone est inactive dans ce cadre de définition puisque le choix de la balise se fait en se positionnant dessus dans le tree-view.
Visib. Bal. Sup. Si coché, ce flag indique que si la balise en cours de définition n’est pas présente dans le message (occurrence 0/1 ou 0/n), DIAPASON remontera les niveaux d’arborescence du message XML traité et cherchera la première balise ayant le même nom. Si il en trouve une, il affectera alors la valeur à la variable rattachée à la balise non présente.
Formule Référence formule. Possibilité de re-travailler la valeur de la balise courante par rapport à des règles données (exemple, calcul d’une variable date à partir de trois balises <jour>, <mois>, <annee>). Voir chapitre détaillant la définition des formules.
Par. 1 Formule Paramètre d’entrée éventuel de la formule.
Par. 2 Formule Paramètre d’entrée éventuel de la formule.
Par. 3 Formule Paramètre d’entrée éventuel de la formule.
Par. 4 Formule Paramètre d’entrée éventuel de la formule.
Par. 5 Formule Paramètre d’entrée éventuel de la formule.
Valeur Alpha. Valeur défaut alphanumérique. Ce champ est actif si la variable associée est de type alphanumérique.
Valeur Num. Valeur défaut numérique. Ce champ est actif si la variable associée est de type réel ou entier.
Valeur Date Valeur défaut date. Ce champ est actif si la variable associée est de type date.
Valeur Log. Valeur défaut logique. Ce champ est actif si la variable associée est de type logique.
Principe d’affectation des valeurs défaut :
La variable associée est initialisée par sa valeur défaut définie sur sa définition. Si une valeur défaut est définie au niveau de la correspondance, alors elle lui est affectée. Enfin si la lecture du message renvoie une valeur par rapport à la balise donnée, alors elle lui est affectée.
Onglet « MàJ Complémentaires »
MàJ Comp. Le bouton permet d’accéder à un éditeur en saisie pour insérer un bloc Progress exécuté en fin de traitement de la correspondance. Ainsi il est possible de re-travailler la valeur récupérée selon des règles de gestion éventuelles.
Onglet « Définition Balise »
Toutes les informations de cet onglet sont en consultation. Elles permettent d’avoir en ligne les informations inhérentes à la balise courante.
Type Nœud: Indique le type de la balise. Les différents types sont :
‘B’ : balise. Ce type défini un ensemble (fils) de balises de tout type.
‘V’ : Valeur. Une balise valeur est une balise de dernier niveau (aucun fils) contenant une valeur.
‘A’ : Attribut. Une balise attribut décrit plusieurs valeurs chacune étant décrite par Var = Valeur et ce, dans le référencement de la balise elle-même (exemple : <Balise_Attr Var1=Val1 Var2=Val2 ... /> )
N° Enfant : Numéro ordre de description dans le modèle XML par rapport à la balise père.
Modèle Pré-Défi. : Si renseigné, ce champ indique que la balise provient de ce dit modèle pré-défini. Voir chapitre détaillant la gestion des modèles XML.
Version Pré-Défi. : Si renseigné, ce champ indique que la balise provient de ladite version du modèle pré-défini sus renseigné. Voir chapitre détaillant la gestion des modèles XML.
Référence : Référence ou nom de la balise.
Désignation : Désignation de la balise.
Occurrence: Règle permettant d’indiquer si une balise est obligatoirement existante dans un message XML et si oui permet d’indiquer si elle peut se répéter ou non :
1/1 : Balise obligatoirement présente dans le message. Elle y sera qu’une fois.
1/n : Balise obligatoirement présente dans le message. Elle peut être répétée.
0/1 : Balise non obligatoirement présente dans le message. Dans le cas où elle est présente, elle n’y sera qu’une fois.
0/n : Balise non obligatoirement présente dans le message. Dans le cas où elle est présente, elle peut être répétée.
Format XML : Zone non gérée actuellement, Sert à titre d’information.
Format Diapaso. : Zone non gérée actuellement. Sert à titre d’information.
Commentaire : Texte libre permettant de donner des informations complémentaires éventuelles.
On y associe une variable XML créé pour l’occasion.
Où créer la variable XML ?
C’est par ici :
Et on va répéter ça pour toutes les correspondances créées préalablement ! On va venir leur associer à chacune une variable XML.
Une fois les correspondances créées, il faut impérativement les générer ! Sinon ça ne marchera pas 😉 Pour cela, sur la/les correspondances à générer, on lance l’action “Génération” puis “Correspondances Sélectionnées”:
En reprenant notre exemple, on souhaite toujours récupérer les données suivantes, et comme expliqué précédemment, on a créé 3 correspondances :
Comment écrire la requête ?
La requête sera lancée une fois qu’on aura récupéré notre fichier dans DIAPASON 😉 on met cette instruction en début de requête pour récupérer le fichier “en cours” !
Le fonction XML-LECCOR permet d’aller se placer dans la correspondance “E-Invoice” qui nous intéresse, dans le modèle XML “Factur-X”.
Le mot-clé POUR CHAQUE COR-XML permet de parcourir les balises de cette correspondance.
On récupère alors le contenu des variables XML pour le numéro de la facture et la date de la facture, qu’on a créées dans l'étape précédente ! ✅
Le fonction XML-LECCOR permet d’aller se placer dans la correspondance “E-STP”.
Le mot-clé POUR CHAQUE COR-XML permet de parcourir les balises de cette correspondance: on vient alors se placer sur la correspondance “E-STPGI”.
Le mot-clé POUR CHAQUE COR-XML permet de parcourir les balises de la correspondance “E-STPGI”.
On récupère alors le contenu des variables XML qu’on avait placé sur ces correspondances ! ✅
SUITE ? 😉
On a récupéré les variables qui nous intéressent ! Après, vous pouvez ne faire ce que vous voulez en fonction de ce que vous avez besoin de faire 🥳
Créer le type de message
Une fois la requête créé, on va venir créer le type de message. Il va permettre de faire le lien entre le modèle XML et la requête ! 🙂
Les types de messages sont multi-sociétés.
ça se passe par ici:
On va donc créer un nouveau modèle, qu’on remplit de cette manière :
Référence : On rentre ici la référence du type de message. On lui donne le même nom que notre modèle XML pour s’y retrouver😉
Désignation :
Modèle XML : On y associe notre modèle XML ( qui porte le même nom 😉 )
Requête traitement : on entre le nom de notre requête.
Quand DIAPASON va venir scruter le dossier dans lequel on a nos fichiers XML qui arrivent, s’il y a aussi d’autres fichiers XML qui correspondent à d’autres EIA, comment va-t-il savoir lesquels prendre ? 🧐
➡️ Il va falloir trouver un moyen d’identifier, parmi les fichiers XML que DIAPASON va chercher, ceux qui correspondent à notre message entrant !
Pour cela on va se servir de la balise de départ des fichiers XML : DIAPASON va venir lire la balise de départ de chaque fichier, et en fonction, il orientera vers les message entrant qui correspond !
On peut donc créer une nouvelle règle d’identification, et la remplir de la manière suivante :
Balise de départ : on entre ici le nom de la balise de départ
Type de message : on entre le nom de notre message entrant créé précédemment
Modèle XML : on entre le nom de notre modèle XML entrant créé précédemment
Si on créé plusieurs type de réception avec la même balise de départ.. DIAPASON ne saura pas laquelle prendre ! On aura donc la coche “Ambiguïté” à oui, et il prendre en fonction de l’ordre ( colonne ordre).
Créer le type de réception
Et il ne reste plus qu’une étape ! On a maintenant paramétré tout ce qui se passait dans DIAPASON, il ne reste plus qu’à mettre en place la scrutation du dossier qui contient les fichiers XML, et leur import dans DIAPASON. Pour ça, on va créer un type de réception. C’est par ici :
Et on remplit de la manière suivante :
Référence
Désignation
Type :
Paramètre 0 : récupérer le fichier (par le biais d’une commande Unix du type ‘ls –1 [chemin]