ONYX - Utilisation

Convertisseur Texte paginé vers XML Pivot

De MappingDoc
Révision datée du 5 décembre 2023 à 14:02 par Jdieu (discussion | contributions) (Maquette associée)

Introduction

L'objet du convertisseur texte paginé (PAG) vers XML Pivot (Module : DRAWTOPIVOT) est de convertir un fichier texte paginé (Spooled files IBM-i, fichiers textes paginée provenant d'ERP quelquonces) en XML Pivot. Il peut avoir plusieurs intérêts à faire cela :

  • Génération de formats UBL, CII et Factur-X pour la facturation électronique
  • Besoin de faire un document en revoyant totalement la pagination d'un flux texte provenant par exemple d'un IBM-i (ou autres)

En effet, Efalia Compose (Anciennement MAPPING), utilise le format XML Pivot comme format standard pour les conversions de flux. De ce fait, il est aisé de générer un flux CII, UBL ou même XML Designer afin de recomposer un document.

Le convertisseur texte paginé vers XML Pivot donne la possibilité de profiter de toutes ces sorties et fonctionnalités quand l'ERP génère un fichier texte paginé.

La sortie du convertisseur permet soit de créer un fichier XML Pivot à plat ou un fichier XML Pivot avec 2 niveaux de listes (listes imbriquées)

Prérequis

  • La clé Connect doit être activée sur le serveur Efalia Compose
  • Compatible avec la version Onyx sous Windows et Linux
  • Les valeurs présentes dans le fichier texte paginé doivent être au format attendu dans le fichier XML Pivot (pas de modification de format dans un premier temps : Possible dans une version du connecteur ultérieure)
  • Connaitre la structure et le concept du XML Pivot

Principe de fonctionnement

La conversion se passe en deux étapes :

  1. Exécution d'une maquette Designer générerant un XML Designer à partir du fichier texte paginé (maquette designer respectant quelques règles de gestions)
  2. Exécution du convertisseur DRAW2PIVOT pour convertir la sortie XML Designer en XML Pivot

A ce moment là, le XML Pivot sera disponible et pourra être utilisé comme souhaité.

Principle PAGTOPIVOT.jpg

Etape 1 : Création du fichier XML Designer à partir du fichier texte paginé

La maquette Designer permet le passage du fichier texte paginé (spool) en fichier XML Designer.

La maquette Designer doit lister tous les champs et groupes devant être retrouvés dans le flux XML Pivot en sortie.

Champs de niveau <doc>

Les champs hors groupe (dit en standalone), feront l'objet d'un <field> au niveau <doc>.

 
   <doc>
     <field id="MonChamp">Ma valeur</field>
   </doc>
 
Standalonefield.jpg


Note : Pour des raisons techniques, il est parfois nécessaire d'utiliser des groupes variables d'une seule ligne afin d'aller chercher des informations unitaire à positions variables dans le fichier texte paginé. Pour cela, il est nécessaire dans Designer, d'utiliser un groupe dît à "tête chercheuse". En effet un groupe à tête chercheuse est en général utilisé pour aller chercher une information unitaire mais à position variable dans le fichier texte paginé. Pour cela, dans Designer, il faut faire un groupe variable commençant quand on rencontre une condition (condition de début du groupe variable) et ayant une longueur de 1 ligne (condion d'arrêt sur un nombre de ligne).

Tetechercheuse.jpeg


Note : Dans le convertisseur (étape 2), ces groupes à têtes chercheuses seront déclarés grâce à leur absence d'entrée dans le fichier de paramétrage du convertisseur DRAW2PAG.

En effet, les groupes Designer non listés dans les éléments <list> du fichier de paramétrage du convertisseur seront placés également au niveau <doc> . Afin d'assurer un nom unique au sein du XML Pivot en sortie, les noms de ces champs seront composés de plusieurs éléments concaténés par un underscore : Group_Line_IDSequenceDeLine_NomDuField

Exemple : ADDRESS_COMPANYNAME_1_COMPNAME

Champs dans une liste

Les <field> présents dans un groupe designer listé dans les balises <list> du fichier de paramétrage (étape 2) feront eux l'objet d'une liste <list> dans le fichier XML Pivot généré.

 
   <doc>
     <list id="maListe">
       <item>
         <field id="field1">valueField1</field>
         <field id="field2">valueField2</field> 
       </item>
       <item>
         <field id="field1">valueField1</field>
         <field id="field2">valueField2</field> 
       </item>        
     </list>
   </doc>
 

Règle d'imbrication des 2 niveaux de listes

Dans le cas où il est nécessaire de générer un fichier XML Pivot avec des listes inbriquées (2 niveau maximum), alors dans la maquette il faudra respecter les règles de gestions suivantes :

  • Changement de niveau de liste

Si la valeur de la condition de ligne (nom de la ligne <line>)précédent un éventuel underscore est la même que la toute première ligne du groupe, alors nous allons ou restons en liste de niveau 1 Si on a un changement de cette valeur, alors on passe en niveau 2

 <group name="BG-25" >
   <line name="BG-25_1" >
     <field name="BT-126" comment="Numéro Item" >0002  </field>
   </line>
   <line name="BG-25_2" >
     <field name="FRFE-183" comment="code note ligne" >AAE</field>
     <field name="BT-127" comment="note ligne facture" >ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>
   </line>
   <line name="BG-27" >
     <field name="BT-136" comment="Remise ligne" >123.00       </field>
     <field name="BT-137" comment="assiette Remise ligne" >123.20      </field>
     <field name="BT-138" comment="Pourcentage Remise ligne" >10.00    </field>
     <field name="BT-139" comment="motif Remise ligne" >Remise fid Client  </field>
     <field name="BT-140" comment="code motif Remise ligne" >95</field>
   </line>
   <line name="BG-27" >
     <field name="BT-136" comment="Remise ligne" >321.00       </field>
     <field name="BT-137" comment="assiette Remise ligne" >123.20      </field>
     <field name="BT-138" comment="Pourcentage Remise ligne" >10.00    </field>
     <field name="BT-139" comment="motif Remise ligne" >Remise fid Client  </field>
     <field name="BT-140" comment="code motif Remise ligne" >95</field>
   </line>			
 </group>

Cela résulte au fichier XML Pivot suivant :

 <list id="BG-25" >
   <item type="BG-25" >
     <field name="BT-126" comment="Numéro Item" >0002  </field>
     <field name="FRFE-183" comment="code note ligne" >AAE</field>
     <field name="BT-127" comment="note ligne facture" >ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>
     <list id="BG-27" >
       <item>
         <field name="BT-136" comment="Remise ligne" >123.00       </field>
         <field name="BT-137" comment="assiette Remise ligne" >123.20      </field>
         <field name="BT-138" comment="Pourcentage Remise ligne" >10.00    </field>
         <field name="BT-139" comment="motif Remise ligne" >Remise fid Client  </field>
         <field name="BT-140" comment="code motif Remise ligne" >95</field>
       </item>				
     </list>
   </item>
 </list>

Ici la ligne portant pour nom BG-27 a un nom différent de la toute première ligne du groupe.Et vu qu'à la ligne précédente nous étions sur le niveau 1, alors on passe sur le niveau 2


  • Rupture d'item <item> au sein d'une liste (tous niveaux confondus)

De même que pour la rupture de niveau de liste, il faut prévoir dans la conception de la maquette la rupture au niveau d'<item>

Celle-ci se base également sur le nom de la ligne <line>. Au sein d'un niveau donnée (suivant la règle de gestion de rupture de niveau), si le nom de la ligne <line> ne contient pas de underscore OU si celle-ci se termine par un _1 alors, une rupture d'item sera fait.

<group name="BG-25" >

   <line name="BG-25_1" >
     <field name="BT-126" comment="Numéro Item" >0001  </field>
   </line>
   <line name="BG-25_2" >
     <field name="FRFE-183" comment="code note ligne" >AAE</field>
     <field name="BT-127" comment="note ligne facture" >ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>
   </line>
   <line name="BG-25_1" >
     <field name="BT-126" comment="Numéro Item" >0002  </field>
   </line>
   <line name="BG-25_2" >
     <field name="FRFE-183" comment="code note ligne" >AAE</field>
     <field name="BT-127" comment="note ligne facture" >ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>
   </line>			
 </group>

Cela résulte au fichier XML Pivot suivant :

 <list id="BG-25" >
   <item type="BG-25" >
     <field name="BT-126" comment="Numéro Item" >0001  </field>
     <field name="FRFE-183" comment="code note ligne" >AAE</field>
     <field name="BT-127" comment="note ligne facture" >ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>
   </item>
    <item type="BG-25" >
     <field name="BT-126" comment="Numéro Item" >0002  </field>
     <field name="FRFE-183" comment="code note ligne" >AAE</field>
     <field name="BT-127" comment="note ligne facture" >ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>
   </item>			
 </list>

Exemple global de ruptures de niveaux et d'items

 <group name="BG-25" >
   <line name="BG-25_1" > <!--1er ligne donc ouverture de la liste de niveau 1 et ouverture du 1er item-->
     <field name="BT-126" comment="Numéro Item" >0001  </field>
   </line>
   <line name="BG-25_2" >  <!--présence d'un _ dans le nom de la ligne : On reste dans le même item que le précédent-->
     <field name="FRFE-183" comment="code note ligne" >AAE</field>
     <field name="BT-127" comment="note ligne facture" >ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>
   </line>
   <line name="BG-27" > <!-- Nom de la ligne différent de la 1er ligne : Passage au niveau 2-->
     <field name="BT-136" comment="Remise ligne" >123.00       </field>
     <field name="BT-137" comment="assiette Remise ligne" >123.20      </field>
     <field name="BT-138" comment="Pourcentage Remise ligne" >10.00    </field>
     <field name="BT-139" comment="motif Remise ligne" >Remise fid Client  </field>
     <field name="BT-140" comment="code motif Remise ligne" >95</field>
   </line>
   <line name="BG-27" > <!--Déjà dans le niveau 2 et pas de _ dans le nom de la line : rupture d'item de BG-27-->
     <field name="BT-136" comment="Remise ligne" >321.00       </field>
     <field name="BT-137" comment="assiette Remise ligne" >123.20      </field>
     <field name="BT-138" comment="Pourcentage Remise ligne" >10.00    </field>
     <field name="BT-139" comment="motif Remise ligne" >Remise fid Client  </field>
     <field name="BT-140" comment="code motif Remise ligne" >95</field>
   </line>
   <line name="BG-28" > <!--Déjà dans le niveau 2, nom de line différent de la précédente ET différent de la tout première ligne du groupe donc passage dans une liste soeur-->
     <field name="BT-141" comment="frais ligne" >21.00        </field>
     <field name="BT-142" comment="assiette frais ligne" >21.00       </field>
     <field name="BT-143" comment="Pourcentage frais ligne" >10.00    </field>
     <field name="BT-144" comment="motif frais ligne" >transport          </field>
     <field name="BT-145" comment="code motif  frais ligne" >FC</field>
   </line>
   <line name="BG-32" > <!--Déjà dans le niveau 2, nom de line différent de la précédente ET différent de la tout première ligne du groupe donc passage dans une liste soeur-->
     <field name="BT-160" comment="nom attribut article" >Couleur      </field>
     <field name="BT-161" comment="valeur attribut article" >BLEU      </field>
   </line>
   <line name="BG-25_1" >   <!-- Nom de la line identique à la toute première ligne du groupe : rupture d'item de niveau 1 et repassage dans le niveau 1--></nowiki></nowiki>
     <field name="BT-126" comment="Numéro Item" >0002  </field>
   </line>
   <line name="BG-25_2" >  <!--présence d'un _ dans le nom de la ligne : On reste dans le même item que le précédent-->
     <field name="FRFE-183" comment="code note ligne" >AAE</field>
     <field name="BT-127" comment="note ligne facture" >ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>
   </line>			
   <line name="BG-27" >  <!-- Nom de la ligne différent de la 1er ligne : Passage au niveau 2-->
     <field name="BT-136" comment="Remise ligne" >123.00       </field>
     <field name="BT-137" comment="assiette Remise ligne" >123.20      </field>
     <field name="BT-138" comment="Pourcentage Remise ligne" >10.00    </field>
     <field name="BT-139" comment="motif Remise ligne" >Remise fid Client  </field>
     <field name="BT-140" comment="code motif Remise ligne" >95</field>
   </line>
   <line name="BG-27" >  <!--Déjà dans le niveau 2 et pas de _ dans le nom de la line : rupture d'item de BG-27-->
     <field name="BT-136" comment="Remise ligne" >321.00       </field>
     <field name="BT-137" comment="assiette Remise ligne" >123.20      </field>
     <field name="BT-138" comment="Pourcentage Remise ligne" >10.00    </field>
     <field name="BT-139" comment="motif Remise ligne" >Remise fid Client  </field>
     <field name="BT-140" comment="code motif Remise ligne" >95</field>
   </line>
   <line name="BG-32" >  <!--Déjà dans le niveau 2, nom de line différent de la précédente ET différent de la tout première ligne du groupe donc passage dans une liste soeur-->
     <field name="BT-160" comment="nom attribut article" >Couleur      </field>
     <field name="BT-161" comment="valeur attribut article" >BLEU      </field>
   </line>
  <line name="BG-25_1" >    <!-- Nom de la line identique à la toute première ligne du groupe : rupture d'item de niveau 1 et repassage dans le niveau 1--></nowiki>
     <field name="BT-126" comment="Numéro Item" >0002  </field>
   </line>
   <line name="BG-25_2" >   <!--présence d'un _ dans le nom de la ligne : On reste dans le même item que le précédent-->
     <field name="FRFE-183" comment="code note ligne" >AAE</field>
     <field name="BT-127" comment="note ligne facture" >ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>
   </line>			
   <line name="BG-27" >  <!--Déjà dans le niveau 2 et pas de _ dans le nom de la line : rupture d'item de BG-27-->
     <field name="BT-136" comment="Remise ligne" >123.00       </field>
     <field name="BT-137" comment="assiette Remise ligne" >123.20      </field>
     <field name="BT-138" comment="Pourcentage Remise ligne" >10.00    </field>
     <field name="BT-139" comment="motif Remise ligne" >Remise fid Client  </field>
     <field name="BT-140" comment="code motif Remise ligne" >95</field>
   </line>
   <line name="BG-27" >    <!--Déjà dans le niveau 2 et pas de _ dans le nom de la line : rupture d'item de BG-27-->
     <field name="BT-136" comment="Remise ligne" >321.00       </field>
     <field name="BT-137" comment="assiette Remise ligne" >123.20      </field>
     <field name="BT-138" comment="Pourcentage Remise ligne" >10.00    </field>
     <field name="BT-139" comment="motif Remise ligne" >Remise fid Client  </field>
     <field name="BT-140" comment="code motif Remise ligne" >95</field>
   </line>
   <line name="BG-32" >  <!--Déjà dans le niveau 2, nom de line différent de la précédente ET différent de la tout première ligne du groupe donc passage dans une liste soeur-->
     <field name="BT-160" comment="nom attribut article" >Couleur      </field>
     <field name="BT-161" comment="valeur attribut article" >BLEU      </field>
   </line>
 </group>



Le flux XML Pivot résultant sera le suivant :

 <list id="BG-25">
  <item type="BG-25">
    <field id="BT-126" title="Numéro Item">0001</field>
    <field id="FRFE-183" title="code note ligne">AAE</field>
    <field id="BT-127" title="note ligne facture">ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>    
    <list id="BG-27">
      <item type="BG-27">
        <field id="BT-136" title="Remise ligne">123.00</field>
        <field id="BT-137" title="assiette Remise ligne">123.20</field>
        <field id="BT-138" title="Pourcentage Remise ligne">10.00</field>
        <field id="BT-139" title="motif Remise ligne">Remise fid Client</field>
        <field id="BT-140" title="code motif Remise ligne">95</field>
      </item>
      <item type="BG-27">
        <field id="BT-136" title="Remise ligne">321.00</field>
        <field id="BT-137" title="assiette Remise ligne">123.20</field>
        <field id="BT-138" title="Pourcentage Remise ligne">10.00</field>
        <field id="BT-139" title="motif Remise ligne">Remise fid Client</field>
        <field id="BT-140" title="code motif Remise ligne">95</field>
      </item>
    </list>
    <list id="BG-28">
      <item type="BG-28">
        <field id="BT-141" title="frais ligne">21.00</field>
        <field id="BT-142" title="assiette frais ligne">21.00</field>
        <field id="BT-143" title="Pourcentage frais ligne">10.00</field>
        <field id="BT-144" title="motif frais ligne">transport</field>
        <field id="BT-145" title="code motif  frais ligne">FC</field>
      </item>
    </list>
    <list id="BG-32">
      <item type="BG-32">
        <field id="BT-160" title="nom attribut article">Couleur</field>
        <field id="BT-161" title="valeur attribut article">BLEU</field>
      </item>
    </list>
  </item>
  <item type="BG-25">
    <field id="BT-126" title="Numéro Item">0002</field>
    <field id="FRFE-183" title="code note ligne">AAE</field>
    <field id="BT-127" title="note ligne facture">ndqsjjdhqkjsdh (Texte : 1024 - Note ligne Facture)</field>    
    <list id="BG-27">
      <item type="BG-27">
        <field id="BT-136" title="Remise ligne">123.00</field>
        <field id="BT-137" title="assiette Remise ligne">123.20</field>
        <field id="BT-138" title="Pourcentage Remise ligne">10.00</field>
        <field id="BT-139" title="motif Remise ligne">Remise fid Client</field>
        <field id="BT-140" title="code motif Remise ligne">95</field>
      </item>
      <item type="BG-27">
        <field id="BT-136" title="Remise ligne">321.00</field>
        <field id="BT-137" title="assiette Remise ligne">123.20</field>
        <field id="BT-138" title="Pourcentage Remise ligne">10.00</field>
        <field id="BT-139" title="motif Remise ligne">Remise fid Client</field>
        <field id="BT-140" title="code motif Remise ligne">95</field>
      </item>
    </list>
    <list id="BG-28">
      <item type="BG-28">
        <field id="BT-141" title="frais ligne">21.00</field>
        <field id="BT-142" title="assiette frais ligne">21.00</field>
        <field id="BT-143" title="Pourcentage frais ligne">10.00</field>
        <field id="BT-144" title="motif frais ligne">transport</field>
        <field id="BT-145" title="code motif  frais ligne">FC</field>
      </item>
    </list>
    <list id="BG-32">
      <item type="BG-32">
        <field id="BT-160" title="nom attribut article">Couleur</field>
        <field id="BT-161" title="valeur attribut article">BLEU</field>
      </item>
    </list>
  </item>
</list>

La maquette devra être donc faite afin de respecter ces règles de nommage de ligne en fonction des besoin d'imbrications.

Autre Exemple

<group name="BG-25" >
   <line name="BG-25_1" >
       <field name="BT-153" >Infoprint 20 IBM</field>
   </line>
   <line name="BG-25_2" >
       <field name="BT-129" >1</field>
       <field name="BT-130" >12</field>
       <field name="BT-134" >20230702</field>
       <field name="BT-135" >20230702</field>
       <field name="BT-147" >10.00</field>
       <field name="BT-148" >20050.00</field>
   </line>
   <line name="BG-25_3" >
       <field name="FRFE-136" >123456788</field>
       <field name="FRFE-138" >20230801</field>
       <field name="FRFE-149" >LILLE</field>
   </line>
   <line name="BG-25_4" >
       <field name="FRFE-150" >Adresse postal de la livraison à la ligne</field>
       <field name="FRFE-151" >Ligne adresse 1</field>
       <field name="FRFE-152" >Ligne adresse 2</field>
       <field name="FRFE-153" >Ligne adresse 3  </field>
   </line>
   <line name="BG-25_5" >
       <field name="FRFE-154" >Ville</field>
       <field name="FRFE-156" >Subdivision pays de livraison</field>
       <field name="FRFE-157" >FR</field>
       <field name="FRFE-158-0" >20230701</field>
       <field name="FRFE-158" >20230702</field>
       <field name="FRFE-155" >Code postal livraison  </field>
   </line>
   <line name="BG-27" >
       <field name="BT-136" >123.00</field>
   </line>
   <line name="BG-27" >
       <field name="BT-136" >321.00</field>
   </line>
   <line name="BG-25_1" >
       <field name="BT-153" >Infoprint 60 IBM</field>
   </line>
   <line name="BG-25_2" >
       <field name="BT-129" >1</field>
       <field name="BT-130" >12</field>
       <field name="BT-134" >20230702</field>
       <field name="BT-135" >20230702</field>
       <field name="BT-147" >10.00</field>
       <field name="BT-148" >15550.00</field>
   </line>
   <line name="BG-25_3" >
       <field name="FRFE-136" >123456788</field>
       <field name="FRFE-138" >20230801</field>
       <field name="FRFE-149" >LILLE</field>
   </line>
   <line name="BG-25_4" >
       <field name="FRFE-150" >Adresse postal de la livraison à la ligne</field>        
       <field name="FRFE-151" >Ligne adresse 1</field>
       <field name="FRFE-152" >Ligne adresse 2</field>        
       <field name="FRFE-153" >Ligne adresse 3</field>
   </line>
   <line name="BG-25_5" >
       <field name="FRFE-154" >Ville l</field>
       <field name="FRFE-156" >Subdivision pays de livraison</field>
       <field name="FRFE-157" >FR</field>
       <field name="FRFE-158-0" >20230701</field>
       <field name="FRFE-158" >20230702</field>
       <field name="FRFE-155" >Code postal livraison</field>
   </line>
   <line name="BG-27" >
       <field name="BT-136" >123.00</field>
   </line>
   <line name="BG-27" >
       <field name="BT-136" >321.00</field>
   </line>
<group name="BG-25" >

La rupture sur les <item> se fait sur les lignes indiquées en gras.

Fichier en sortie :

<list id="BG-25">
   <item type="BG-25">
       <field id="BT-153">Infoprint 20 IBM</field>
       <field id="BT-129">1</field>
       <field id="BT-130">12</field>
       <field id="BT-134">20230702</field>
       <field id="BT-135">20230702</field>
       <field id="BT-147">10.00</field>
       <field id="BT-148">20050.00</field>
       <field id="FRFE-136">123456788</field>
       <field id="FRFE-138">20230801</field>
       <field id="FRFE-149">LILLE</field>
       <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
       <field id="FRFE-151">Ligne adresse 1</field>
       <field id="FRFE-152">Ligne adresse 2</field>
       <field id="FRFE-153">Ligne adresse 3</field>
       <field id="FRFE-154">Ville l</field>
       <field id="FRFE-156">Subdivision pays de livraison</field>
       <field id="FRFE-157">FR</field>
       <field id="FRFE-158-0">20230701</field>
       <field id="FRFE-158">20230702</field>
       <field id="FRFE-155">Code postal livraison</field>
   </item>
   <item type="BG-27">
       <field id="BT-136">123.00</field>
   </item>
   <item type="BG-27">
       <field id="BT-136">321.00</field>
   </item>
   <item type="BG-25">
       <field id="BT-153">Infoprint 60 IBM</field>
       <field id="BT-129">1</field>
       <field id="BT-130">12</field>
       <field id="BT-134">20230702</field>
       <field id="BT-135">20230702</field>
       <field id="BT-147">10.00</field>
       <field id="BT-148">15550.00</field>
       <field id="FRFE-136">123456788</field>
       <field id="FRFE-138">20230801</field>
       <field id="FRFE-149">LILLE</field>
       <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
       <field id="FRFE-151">Ligne adresse 1</field>
       <field id="FRFE-152">Ligne adresse 2</field>
       <field id="FRFE-153">Ligne adresse 3</field>
       <field id="FRFE-154">Ville l</field>
       <field id="FRFE-156">Subdivision pays de livraison</field>
       <field id="FRFE-157">FR</field>
       <field id="FRFE-158-0">20230701</field>
       <field id="FRFE-158">20230702</field>
       <field id="FRFE-155">Code postal livraison</field>
   </item>
   <item type="BG-27">
       <field id="BT-136">123.00</field>
   </item>
   <item type="BG-27">
       <field id="BT-136">321.00</field>
   </item>
</list>

Gestion de rupture de document

Il est possible que le fichier texte paginé (PAG) en entrée soit multi-document. En d'autres termes, il est possible qu'il y ait par exemple, plusieurs factures au sein du même fichier. Si c'est le cas, le fichier XML Pivot en sortie devra être composé de 2 balises <doc>


  <doc type="INVOICE00010">
        ...
  </doc>
  <doc type="INVOICE00010">
        ...
  </doc>

Pour ce faire, on doit spécifier un champ de rupture. Un nouveau document sera alors créé lors d'un changement de cette valeur.

remarque : La valeur de l'attibut type de la balise <doc> (<doc type="xxx">), portera le nom du format avec son numéro de séquence de la maquette designer utilisé pour la génération du fichier XML Designer

Solution : Dans la maquette, il faudra alors mapper la valeur de rupture (exemple : Numéro de facture) et nommer la zone DOC-BREAK

La commande d'exécution associée

Conversion du fichier texte paginé en fichier XML Designer :

"C:\MAPPING\M-Processing Server\Applications\mapcpysplf" "-infile:C:\DesignerToPivot\PAG.txt" "-mapnam:FLUX2" "-xmlmapping" -xmloutfile:C:\DesignerToPivot\flux1_XML_Designer.xml -overflow:9999

Etape 2 : Conversion du XML Designer en XML Pivot

Une fois le fichier XML Designer (appelé aussi XMLDRAW) obtenu dans le format souhaité (groupes respectant la logique de rupture d'item, etc), il est alors temps de le convertir vers le fichier cible dît XML Pivot

Fichier de paramétrage

Le convertisseur DRAW2PIVOT peut lire un fichier de paramétrage dans lequel nous pouvons :

  • Surcharger le champ DOC-BREAK de rupture de doc
<field id="DOC-BREAK">NUM_FAC</field>

Cette entrée dans le fichier de paramétrage permet de définir le champ permettant de faire une rupture de document

  • Lister les groupes Designer devant donner naissance à une liste dans le fichier de sortie XML Pivot

Cette entrée dans le fichier de paramétrage permet d'activer la création d'une liste pour le groupe BG-1

<list id="BG-1" type="continue"/>
  • Conditionner l'exécution d'un élément (group par exemple) d'une page donnée selon la valeur d'un champ dans cette même page en le renomant si besoin

Cette entrée dans le fichier de paramétrage permet de créer une liste <list> que l'on nommera DetailFacture_newentete avec le contenu du groupe DetailFacture de la ou les pages ayant un field type_page ayant pour valeur newentete

<list id="DetailFacture" rename="DetailFacture_newentete" cond="field(type_page) -eq 'newentete'" type="continue"/>

Note : Les opérateurs -eq (égal) et -ne (différent de) sont disponibles


Attributs de l'élément <list>

  • attribut type

Il existe deux types de listes : Les listes repeated et continue

<list id="BG-1" type="xxx"/>

L'attribut type permet de spécifier le type de groupe Designer est lié à cette liste :
continue (valeur par défaut)

<list id="BG-1" type="continue"/>

L'attribut type=continue décrit un groupe continu à travers les différentes pages. Un exemple de groupe continu est par exemple la liste de détails d'une facture.
La page 2 contient la suite des information de la page 1.

On parle alors donc d'un groupe ou d'une liste continue
repeated

<list id="BG-1" type="repeated"/>

L'attribut type=repeated décrit un groupe se répétant de manière identique sur les différentes pages. Son contenu sera alors insérer qu'une seule fois dans le fichier XML Pivot. Un groupe repeated peut par exemple être la liste de TVA d'une facture. La liste de TVA peut être sur toutes les pages de la facture mais uniquement pour rappel à l'utilisateur, mais étant identiques sur toutes les pages il peut finalement se trouver uniquement sur une page (généralement la dernière pour la liste de TVA).

On parle alors donc d'un groupe ou d'une liste repeated

  • attribut rename

Cet attribut permet de renomer la liste en sortie. Cela permet d'avoir une liste avec un nom différent du groupe Designer lui correspondant

<list id="DetailFacture" rename="DetailFacture_newentete" type="continue"/>



  • attribut cond

Cet attribut permet de conditionner l'exécution de l'élément.

<list id="DetailFacture" rename="DetailFacture_newentete" cond="field(type_page) -eq 'newentete'" type="continue"/>

Dans cet exemple, le contenu du ou des groupes DetailFacture pour lesquels un champ type_page=newenetete est présent sera inséré dans une liste nommée DetailFacture_newentete

Exemple :

 <doc>
   <page name='FACTUREOMT'>
       <field name='type_page'>newentete</field>
       <field name='LOGO'>EFALIA</field>
       <group name='DetailFacture'>
         <line name='DETAIL'>
           <field name='RGDES_PRO'>Abonnements, forfaits, options                              </field>
           <field name='RGHT_PRO'>       37,98</field>
           <field name='RGTVA_PRO'>        0,00</field>
           <field name='RGTOT_PRO'>       37,98</field>
         </line>
         <line name='DETAIL'>
           <field name='RGDES_PRO'>Communications                                              </field>
           <field name='RGHT_PRO'>        0,00</field>
           <field name='RGTVA_PRO'>        0,00</field>
           <field name='RGTOT_PRO'>        0,00</field>
         </line>
       </group>
   </page>
   <page name='FACTUREOMT'>
       <field name='type_page'>newentete2</field>
       <field name='LOGO'>EFALIA</field> 
       <group name='DetailFacture'>
         <line name='DET_CATG'>
           <field name='DET_CATG'>Détail de vos forfaits</field>
         </line>
         <line name='REC1G'>
           <field name='REC1G'>Forfait Intense 4G MTM sur ligne  06 39 21 05 02     </field>
         </line>
       </group>
   </page>
 </doc>

Fichier de paramétrage :

 <param>
   <doc type="FACTUREOMT">
     <list id="DetailFacture" rename="DetailFacture_newentete" cond="field(type_page) -eq 'newentete'" type="continue"/>
   </doc>
 <param>

Fichier XML pivot résultant :


 <doc id="FACTUREOMT">
   <field id='type_page'>newentete</field>
   <field id='LOGO'>EFALIA</field>
   <list id='DetailFacture'>
     <item type='DETAIL'>
       <field id='RGDES_PRO'>Abonnements, forfaits, options</field>
       <field id='RGHT_PRO'>37,98</field>
       <field id='RGTVA_PRO'>0,00</field>
       <field id='RGTOT_PRO'>37,98</field>
     </item>
     <item type='DETAIL'>
       <field name='RGDES_PRO'>Communications</field>
       <field name='RGHT_PRO'>0,00</field>
       <field name='RGTVA_PRO'>0,00</field>
       <field name='RGTOT_PRO'>0,00</field>
     </item >
   </list>    
 </doc>

Sans la condition, on aurait le contenu de tous les groupes detailFacture se situant sur toutes les pages soit le contenu suivant :

 <doc id="FACTUREOMT">
   <field id='type_page'>newentete</field>
   <field id='LOGO'>EFALIA</field>
   <list id='DetailFacture'>
     <item type='DETAIL'>
       <field id='RGDES_PRO'>Abonnements, forfaits, options</field>
       <field id='RGHT_PRO'>37,98</field>
       <field id='RGTVA_PRO'>0,00</field>
       <field id='RGTOT_PRO'>37,98</field>
     </item>
     <item type='DETAIL'>
       <field name='RGDES_PRO'>Communications</field>
       <field name='RGHT_PRO'>0,00</field>
       <field name='RGTVA_PRO'>0,00</field>
       <field name='RGTOT_PRO'>0,00</field>
     </item >
     <item type='DET_CATG'>
       <field name='DET_CATG'>Détail de vos forfaits</field>
     </item >
     <item type='REC1G'>
       <field name='REC1G'>Forfait Intense 4G MTM sur ligne  06 39 21 05 02     </field>
     </item >
   </list>    
 </doc>

Exemple de fichier de paramétrage

<param>
      <doc type="FLUX100010">
         <field id="DOC-BREAK">NUM_FAC</field>
         !--si la liste est non présente ici alors, groupe tête-chercheuse-->
         <list id="BG-1" type="continue"/><!--Default : continue-->
         <list id="BG-20" type="repeated"/><!--Default : continue-->
         <list id="BG-23" type="repeated"/><!--Default : continue-->
         <list id="BG-25" type="continue"/><!--Default : continue-->
         <list id="BG-3" type="repeated"/><!--Default : continue-->
      </doc>
    </param>
   

Eclatement du fichier XML Designer en plusieurs XML Pivot

Le convertisseur DRAW2PIVOT permet également l'éclatement du XML Pivot en sortie en XML Pivot unique par document. L'éclatement se fera sur la rupture du champ <DOC-BREAK>. On obtiendra alors un document unique <doc> par XML Pivot résultant :

<data>
 <doc>
 ...
 </doc>
</data>

Nous avons également à disposition 2 variables pouvant être utilisée dans la variable DB.cmd :

  • {{FILE}} : Fichier issu de l'éclatement
  • {{DOC-BREAK}} : Valeur de rupture de document (du coup d'éclatement)


L'éclatement peut se faire de 2 manières différentes :

  • Dans un répertoire ou plusieurs répertoires
  • Vers une commande

Eclatement dans un répertoire unique

Pour éclater dans un répertoire unique, il faut spécifier le répertoire de destination "-param:DB.outfile_folder_path" ainsi que le nom du fichier à éclater "-param:DB.outfile_name="invoice.xml"

Remarque : La valeur de rupture sera présente dans le nom des fichiers résultants à la fin du nom ou avant le .xml.

Exemple :

"c:\MAPPING\M-Processing Server\Applications\maprunrpt" "-rptname:DRAW2PIVOT" "-param:DB.infile=C:\work\infile.xml" -param:DB.param="C:\work\file_param.xml" '"-param:DB.outfile_folder_path=C:\work\out" "-param:DB.outfile_name="invoice.xml" "-param:DB.split_doc=true"'

Le résultat sera plusieurs fichiers invoice_NUMFAC.xml créés dans le répertoire C:\work\out

Eclatement vers plusieurs répertoires

Il est possible de faire un éclatement vers un ou plusieurs répertoires. Pour éclater vers plusieurs répertoire, le paramètre '"-param:DB.outfile_nb_folder"' doit être utilisé

Par exemple, "-param:DB.outfile_nb_folder=10" permet de dispatcher les fichiers de sortie dans 10 répertoires différents.

Exemple :

"c:\MAPPING\M-Processing Server\Applications\maprunrpt" "-rptname:DRAW2PIVOT" "-param:DB.infile=C:\work\infile.xml" -param:DB.param="C:\work\file_param.xml" "-param:DB.outfile_folder_path=C:\work\out" "-param:DB.outfile_name="invoice.xml" "-param:DB.split_doc=true" '"-param:DB.outfile_nb_folder=10"'

Dans cet exemple là, les fichiers seront créés avec le nom invoice_NUMFAC.xml vers 10 répertoires C:\work\out_1, C:\work\out_2,C:\work\out_1, C:\work\out_3,C:\work\out_4,C:\work\out_5, C:\work\out_6, C:\work\out_7, C:\work\out_8, C:\work\out_9, C:\work\out_10

Eclatement et envoi vers une commande ou un script

Pour éclater et envoyer les fichiers éclatés résultants vers un script ou un programme, il faut spécifier le nom du programme dans le paramètre '-param:DB.cmd' ainsi que le répertoire temporaire '"-param:DB.path_temp'

Remarque : Ne pas oublier de protéger les double-quotes selon votre OS.

Exemple :


"c:\MAPPING\M-Processing Server\Applications\maprunrpt" "-rptname:DRAW2PIVOT" "-param:DB.infile=C:\work\testInfile.xml" "-param:DB.param=C:\work\designertopivot_param.xml"  -param:DB.cmd=""""C:\MAPPING\M-Processing Server\Applications\map_lp"""" """"-DTEST"""" """"-title:{{DOC-BREAK}}"""" """"-data:{{FILE}}""""" "-param:DB.path_temp=C:\tmp" "-param:DB.split_doc=true"

Rappel : Nous avons à disposition 2 variables pouvant être utilisée dans la variable DB.cmd :

  • {{FILE}} : Fichier issu de l'éclatement
  • {{DOC-BREAK}} : Valeur de rupture de document (du coup d'éclatement)


Le résultat sera plusieurs fichiers envoyé vers la queue TEST du spooler Efalia compose portant pour nom le numéro de rupture (Numéro de facture)

Exemple général

Prenons pour exemple, le besoin de convertir un fichier texte paginé en XML Pivot afin de gérer un flux CII flux 2 pour la facturation électronique.

Structure du fichier texte paginé

Le fichier texte paginé est un exemple de flux. N'importe quel flux pouvant être pris en charge par Designer peut être utilisé.
Dans notre cas, la facture comporte tous les champs possibles du flux 2.

Ce flux d'exemple a été enrichi et modifier pour répondre aux exigences de la norme CII (flux 2) :

Paginated text file.png

Maquette associée

La maquette comporte tous les champs ainsi qu'un champ de rupture de document DOC-BREAK.

Exemple maquette flux2 cii.jpg

Remarque : Cette maquette comporte TOUS les champs possibles (hors champs extension) du flux 2 CII. Sur le terrain, juste une partie de ceux-ci seront présent. Ceci dépendra des besoins du client.

Fichier de sortie XML Pivot


  <doc type="FLUX100010">
     <field id="DOC-BREAK">0024657</field>
     <field id="edi_BT-1">0024657</field>
     <field id="edi_BT-23">321</field>
     <field id="edi_BT-2">2023080</field>
     <field id="edi_BT-24">urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic</field>
     <field id="edi_BT-3">380</field>
     <field id="edi_BT-5">EUR</field>
     <field id="edi_BT-8">72</field>
     <field id="edi_BT-9">20230802</field>
     <field id="edi_BT-29A-1">1234</field>
     <field id="edi_BT-29A">79452145700021</field>
     <field id="edi_BT-30">00000000000000</field>
     <field id="edi_BT-30-1">0002</field>
     <field id="edi_BT-31">794521457</field>
     <field id="edi_BT-31-0">VA</field>
     <field id="edi_BT-40">FR</field>
     <field id="edi_BT-47">79452145800022</field>
     <field id="edi_BT-47-1">4321</field>
     <field id="edi_BT-48">0002</field>
     <field id="edi_BT-48-0">794521458</field>
     <field id="edi_BT-55">FR</field>
     <field id="edi_BT-63">BT-63_value</field>
     <field id="edi_BT-63-1">BT-63-1_value</field>
     <field id="edi_BT-72">20230202</field>
     <field id="edi_BT-73">20230201</field>
     <field id="edi_BT-74">20230228</field>
     <field id="edi_BT-75">Adresse réalisation prestation ligne 1</field>
     <field id="edi_BT-76">Adresse réalisation prestation ligne 2</field>
     <field id="edi_BT-77">Localité réalisation prestation</field>
     <field id="edi_BT-78">Code postalréalisation prestation</field>
     <field id="edi_BT-79">FRANCE</field>
     <field id="edi_BT-80">FR</field>
     <field id="edi_BT-165">Adresse réalisation prestation ligne 3</field>
     <field id="edi_BT-109">141600.00</field>
     <field id="edi_BT-110">28070.00</field>
     <list id="BG-1">
     <item type="None">
           <field id="BT-21">121</field>
           <field id="BT-22"> la note 1 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">122</field>
           <field id="BT-22">Voici la note 2 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">123</field>
           <field id="BT-22"> la note 3 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">124</field>
           <field id="BT-22"> la note 4 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">125</field>
           <field id="BT-22">Voici la note 5 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">126</field>
           <field id="BT-22"> la note 6 de la facture</field>
     </item>
     </list>
     <list id="BG-3">
     <item type="None">
           <field id="BT-25">987654321</field>
           <field id="BT-26">20230108</field>
     </item>
     <item type="None">
           <field id="BT-25">987654320</field>
           <field id="BT-26">20230107</field>
     </item>
     </list>
     <list id="BG-25">
     <item type="BG-25">
           <field id="BT-153">Infoprint 20 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">20050.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 60 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">15550.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 70 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">17550.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 32 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">31950.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 32 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">18000.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 20 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">18000.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 60 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">18000.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     </list>
     <list id="BG-20">
     <item type="None">
           <field id="BT-92">123.20</field>
           <field id="BT-95">S</field>
           <field id="BT-96">20.00</field>
     </item>
     <item type="None">
           <field id="BT-92">130.20</field>
           <field id="BT-95">S</field>
           <field id="BT-96">10.00</field>
     </item>
     </list>
     <list id="BG-23">
     <item type="None">
           <field id="BT-116">139100.00</field>
           <field id="BT-117">27820.00</field>
           <field id="BT-118">S</field>
           <field id="BT-119">20.0</field>
           <field id="BT-120">Geste commercial</field>
           <field id="BT-121">VATEX-EU-132-1H</field>
     </item>
     <item type="None">
           <field id="BT-116">2500.00</field>
           <field id="BT-117">250.00</field>
           <field id="BT-118">S</field>
           <field id="BT-119">10.0</field>
           <field id="BT-120">Geste commercial</field>
           <field id="BT-121">VATEX-EU-132-1H</field>
     </item>
     </list>
  </doc>
  <doc type="FLUX100010">
     <field id="DOC-BREAK">0024658</field>
     <field id="edi_BT-1">0024657</field>
     <field id="edi_BT-23">321</field>
     <field id="edi_BT-2">2023080</field>
     <field id="edi_BT-24">urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic</field>
     <field id="edi_BT-3">380</field>
     <field id="edi_BT-5">EUR</field>
     <field id="edi_BT-8">72</field>
     <field id="edi_BT-9">20230802</field>
     <field id="edi_BT-29A-1">1234</field>
     <field id="edi_BT-29A">79452145700021</field>
     <field id="edi_BT-30">00000000000000</field>
     <field id="edi_BT-30-1">0002</field>
     <field id="edi_BT-31">794521457</field>
     <field id="edi_BT-31-0">VA</field>
     <field id="edi_BT-40">FR</field>
     <field id="edi_BT-47">79452145800022</field>
     <field id="edi_BT-47-1">4321</field>
     <field id="edi_BT-48">0002</field>
     <field id="edi_BT-48-0">794521458</field>
     <field id="edi_BT-55">FR</field>
     <field id="edi_BT-63">BT-63_value</field>
     <field id="edi_BT-63-1">BT-63-1_value</field>
     <field id="edi_BT-72">20230202</field>
     <field id="edi_BT-73">20230201</field>
     <field id="edi_BT-74">20230228</field>
     <field id="edi_BT-75">Adresse réalisation prestation ligne 1</field>
     <field id="edi_BT-76">Adresse réalisation prestation ligne 2</field>
     <field id="edi_BT-77">Localité réalisation prestation</field>
     <field id="edi_BT-78">Code postalréalisation prestation</field>
     <field id="edi_BT-79">FRANCE</field>
     <field id="edi_BT-80">FR</field>
     <field id="edi_BT-165">Adresse réalisation prestation ligne 3</field>
     <field id="edi_BT-109">141600.00</field>
     <field id="edi_BT-110">28070.00</field>
     <list id="BG-1">
     <item type="None">
           <field id="BT-21">121</field>
           <field id="BT-22"> la note 1 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">122</field>
           <field id="BT-22">Voici la note 2 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">123</field>
           <field id="BT-22"> la note 3 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">124</field>
           <field id="BT-22"> la note 4 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">125</field>
           <field id="BT-22">Voici la note 5 de la facture</field>
     </item>
     <item type="None">
           <field id="BT-21">126</field>
           <field id="BT-22"> la note 6 de la facture</field>
     </item>
     </list>
     <list id="BG-3">
     <item type="None">
           <field id="BT-25">987654321</field>
           <field id="BT-26">20230108</field>
     </item>
     <item type="None">
           <field id="BT-25">987654320</field>
           <field id="BT-26">20230107</field>
     </item>
     </list>
     <list id="BG-25">
     <item type="BG-25">
           <field id="BT-153">Infoprint 20 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">20050.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 60 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">15550.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 70 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">17550.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 32 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">31950.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 32 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">18000.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 20 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">18000.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     <item type="BG-25">
           <field id="BT-153">Infoprint 60 IBM</field>
           <field id="BT-129">1</field>
           <field id="BT-130">12</field>
           <field id="BT-134">20230702</field>
           <field id="BT-135">20230702</field>
           <field id="BT-147">10.00</field>
           <field id="BT-148">18000.00</field>
           <field id="FRFE-136">123456788</field>
           <field id="FRFE-138">20230801</field>
           <field id="FRFE-149">LILLE</field>
           <field id="FRFE-150">Adresse postal de la livraison à la ligne</field>
           <field id="FRFE-151">Ligne adresse 1</field>
           <field id="FRFE-152">Ligne adresse 2</field>
           <field id="FRFE-153">Ligne adresse 3</field>
           <field id="FRFE-154">Ville l</field>
           <field id="FRFE-156">Subdivision pays de livraison</field>
           <field id="FRFE-157">FR</field>
           <field id="FRFE-158-0">20230701</field>
           <field id="FRFE-158">20230702</field>
           <field id="FRFE-155">Code postal livraison</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">123.00</field>
     </item>
     <item type="BG-27">
           <field id="BT-136">321.00</field>
     </item>
     </list>
     <list id="BG-20">
     <item type="None">
           <field id="BT-92">123.20</field>
           <field id="BT-95">S</field>
           <field id="BT-96">20.00</field>
     </item>
     <item type="None">
           <field id="BT-92">130.20</field>
           <field id="BT-95">S</field>
           <field id="BT-96">10.00</field>
     </item>
     </list>
     <list id="BG-23">
     <item type="None">
           <field id="BT-116">139100.00</field>
           <field id="BT-117">27820.00</field>
           <field id="BT-118">S</field>
           <field id="BT-119">20.0</field>
           <field id="BT-120">Geste commercial</field>
           <field id="BT-121">VATEX-EU-132-1H</field>
     </item>
     <item type="None">
           <field id="BT-116">2500.00</field>
           <field id="BT-117">250.00</field>
           <field id="BT-118">S</field>
           <field id="BT-119">10.0</field>
           <field id="BT-120">Geste commercial</field>
           <field id="BT-121">VATEX-EU-132-1H</field>
     </item>
     </list>
  </doc>

Evolutions futures

  • Imbrication de listes
  • Ajout d'un numéro incrément d'item afin de lier tous les <item> logique à son <item> physique