Conception et structure du fichier XML

Ce document explique le schéma de conception et la structure du fichier XML. Deux standards différents sont disponibles en fonction du format sélectionné dans 'Structure XML. Ouvrir' (CMS006).

Les standards courants sont employés pour tous les formats.

Type de données Décimal

Les données de type décimal sont incluses dans le fichier XML selon les règles suivantes :

  • Sans séparateur de milliers
  • Format décimal, toujours avec un point (.)
  • Arrondi au nombre correct de décimales et ajusté en fonction du prix/quantité.

    Exemple : 9999999,99

Les métadonnées qui déterminent la mise en forme d'un champ décimal sont incluses dans la section 'Localization'.

<DecimalFormat>,</DecimalFormat> <ThousandSeparator>.<ThousandSeparator> <Locale>en-GB<Locale>

Il est fortement recommandé d'utiliser les paramètres régionaux pour le formatage des valeurs décimales.

Code débit/crédit

Si le code débit/crédit doit être utilisé, il est indiqué dans l'élément DebitCreditCodeUsed (true/false), section DocumentInformation.

<DocumentInformation> <DebitCreditCodeUsed>true</DebitCreditCodeUsed>

Les champs Montant devise devant utiliser un code débit-crédit disposent d'un attribut supplémentaire "D-C" qui inclut le code débit-crédit.

<VFORTO D-C="D">68325.00</VFORTO> <VFTOPY D-C="D">68325.00</VFTOPY>

Type de données Date

Les données de type date sont incluses dans le format suivant : JJ-MM-AAAA

  • [AAAA] indique une année à quatre chiffres, [MM] indique un mois à deux chiffres, [JJ] indique un jour à deux chiffres.
  • Chaque valeur de date est un nombre fixe composé de chiffres rempli avec des zéros non significatifs.
  • Le séparateur utilisé entre les valeurs de date est le tiret (-).

Exemple XML sans relation avec un fuseau horaire :

<UHIVDT>2016-03-21</UHIVDT>

Exemple XML avec relation avec un fuseau horaire :

Si la date présente un lien avec un fuseau horaire en décalage par rapport à l'heure UTC, le nombre est ajouté en tant que valeur positive ou négative derrière la date. Aucun décalage par rapport au temps UTC n'est nécessaire lorsque vous spécifiez la date dans un document, le décalage n'est utilisé que si la date doit être convertie en heure UTC.

<UHIVDT>2016-03-21+5:00</UHIVDT>

Les métadonnées qui déterminent la mise en forme d'un champ de date sont incluses dans la section Localisation :

<DateFormat>YYMMDD</DateFormat> <DateEditing>/<DateEditing> <Locale>en-GB<Locale>

Il est également recommandé d'utiliser les paramètres régionaux pour le formatage des valeurs décimales.

Type de données Heure

Les données de type heure sont incluses dans le format suivant hh:mm:ss.

  • [hh] indique l'heure, [mm] indique les minutes, [ss] indique les secondes.
  • Chaque valeur d'heure est un nombre fixe composé de chiffres rempli avec des zéros non significatifs.
  • Le séparateur utilisé entre les valeurs de date est (:).

Exemple XML sans relation avec un fuseau horaire :

14:05:23 <UHTIID>14:05:23</UHTIID>

Exemple XML avec relation avec un fuseau horaire :

Si la date présente un lien avec un fuseau horaire en décalage par rapport à l'heure UTC, le nombre est ajouté en tant que valeur positive ou négative derrière l'heure. Aucun décalage par rapport au temps UTC n'est nécessaire lorsque vous spécifiez l'heure dans un document, le décalage n'est utilisé que si l'heure doit être convertie en heure UTC.

<UHTIID>14:05:23+5:00</UHTIID>

Formatage

La section Formatage contient des métadonnées pour assister les applications externes de gestion de sortie avec la conception du format.

<Formatting> <M3StandardFormatVersion>1</M3StandardFormatVersion> <ReportLayout>M3_STD_03-01</ReportLayout> <Structure>M3_STD_03-01</Structure> <PaperSize>A4</PaperSize> <Localization> <DocumentDivision>AAA</DocumentDivision> <CountryVersion>GB</CountryVersion> <BaseCountry>GB</BaseCountry> <FromToCountry>GB</FromToCountry> <DocumentLanguage>GB</DocumentLanguage> <Locale>en-GB</Locale> <DateFormat>YYMMDD</DateFormat> <DecimalFormat>,</DecimalFormat> <ThousandSeparator>.</ThousandSeparator> /Localization> <DocumentInformation> </Formatting> 

Les balises XML requises pour la balise XML <Formatting> XML sont les suivantes :

  • M3StandardFormatVersion est toujours défini sur 1.
  • ReportLayout est utilisé dans le format d'état.
  • DocumentDivision est la société pour le document et non la société pour l’utilisateur exécutant une fonction de sortie.
  • CountryVersion (obligatoire), version pays dans (MNS100/L) basé sur documentDivision.
  • BaseCountry est le pays de la société qui génère le document avec la seule exception si la représentation fiscale est utilisée.
  • FromToCountry est le code pays du destinataire du document en fonction de l’utilisateur, client ou fournisseur et se base sur (CRS045).
  • DocumentLanguage est le code langue du destinataire du document en fonction de l’utilisateur, client ou fournisseur et se base sur 'Langue. Ouvrir' (CRS010). Les langues personnalisées créées dans 'Langue système. Ouvrir' (MNS105) sont utilisées comme langue du document dans (CRS010). Voir les détails dans Environnement application M3 > Administration système > Langues personnalisées.
  • Les Paramètres régionaux sont au format xx-YY. Définissez manuellement les paramètres régionaux dans 'Pays. Ouvrir' (CRS045). Si les paramètres régionaux ne sont pas définis manuellement, xx est le code ISO pour la langue (CRS010) en fonction de DocumentLanguage. YY est le code ISO du pays (CRS045) basé sur FromToCountry. Les paramètres régionaux sont utilisés pour formater les dates et les valeurs décimales.

    Cette table présente les paramètres des paramètres régionaux :

    Langue Pays Paramètres régionaux
    Code M3 Code ISO Code M3 Code ISO
    GB en US US en-US
    GB en GB GB en-GB
    DE de DE DE de-DE
    SE sv SE SE sv-SE
  • DateFormat est le format de date du document en fonction de l'utilisateur, client ou fournisseur dans les paramètres de M3 BE. La table suivante présente les paramètres des paramètres régionaux recommandés pour le formatage des dates au lieu de ce champ :
    Paramètre BE pour le format de date Texte dans l'élément DateFormat
    AMJ AAMMJJ
    JMA JJMMA
    MJA MMJJAA
    ASJ AASSJ
  • DecimalFormat est le format décimal du document en fonction de l’utilisateur, client ou fournisseur dans les paramètres de M3 BE. Il est fortement recommandé d'utiliser les paramètres régionaux pour le formatage des valeurs décimales au lieu de ce champ.
  • ThousandSeparator est toujours défini à la valeur opposée par rapport à celle du format décimal.

Format 1 – Document standard M3 et 3 - Ouvert

Les principaux standards pour Format 1 – Document standard M3 sont les suivants :

  • Le nom d'élément équivaut au nom de champ dans la table M3 Business Engine. Ceci facilite l'identification de la source si vous maîtrisez la base de données M3.
  • Etiquettes incluses en tant qu'attribut 'Label'. Elles sont traduites en fonction de la langue du document.
  • Codes avec description groupés en sections partageant la même étiquette. Par exemple : conditions de livraison et autres textes sur les conditions.
    M3OutDocument <M3OutDocument> <Metadata> <DataArea> <Document> <Document> <Document> </DataArea> </M3OutDocument>
  • Les balises XML requises pour la balise XML M3OutDocument sont les suivantes :
    • M3OutDocument est un nœud racine. Utilisez M3OutDocument pour le Format 1 – Document standard M3.
    • Metadata (Métadonnées) correspond aux informations générales relatives au fichier XML.
    • DataArea inclut toutes les données dans le fichier XML. DataArea comprend un ou plusieurs éléments Document.
    • Le document peut être une occurrence simple ou multiple. Par exemple, l'élément Document peut englober une facture, un ordre d'achat et un numéro de relevé de compte.

      Document

      Un document est, par exemple, une facture ou un ordre d'achat.

      <Document> <Cover> <Formatting/> <Header/> <Footer/> <DocumentHeader/> <TextBlock/> <SubDocument/> <TextBlock/> <Lines/> <TextBlock /> <TextBlock/> <VATSummaryBox/> <DocumentTotal/> <Media/> </Document>
    • Cover (Couverture) correspond à la désignation de champs de sélection et de filtre, et constitue toujours une seule occurrence. Cette balise XML est facultative.
    • Formatting (Formatage) correspond aux informations relatives à la façon dont les données sont formatées. Obligatoire uniquement pour Format 1
    • Header (En-tête) correspond aux données permettant de répéter des informations en haut d'une disposition.
    • Footer (Pied de page) correspond aux données permettant de répéter des informations en bas d'une disposition.
    • DocumentHeader (En-tête de document) correspond aux informations d'en-tête du document.
    • iTextBlock est une balise XML facultative.
    • SubDocument (Sous-document) est utilisée lorsque le document est fractionné en sous-documents. Cette balise XML est généralement unique.
    • TextBlock est une balise XML facultative.
    • Lines (Lignes) regroupe toutes les lignes.
    • TextBlock est une balise XML facultative. Il s’agit de la deuxième balise TextBlock.
    • TextBlock est une balise XML facultative. Il s’agit de la troisième balise TextBlock.
    • DocumentTotal est une balise XML facultative.
    • Media (Support) correspond aux informations relatives à la distribution de l’impression. Obligatoire uniquement pour format 1.

Pour le format 3 - Ouvrir, les sections Couverture, Formatage ou Support peuvent être désactivées sur (CMS025/E). La section Couverture peut être désactivée pour les formats 1 et 2 à la fois sur (CMS025/E).

DocumentHeader

DocumentHeader concerne des informations courantes partagées pour le document. La section Document contient une section Address (adresse).

Exemple XML avec une adresse :

<DocumentHeader Label="En-tête de document"> <UIIVNO Label="Facture N°">201401561</UIIVNO> <OAORNO Label="CO no">1000025077</OAORNO> <OAWHLO Label="Dépôt">110</OAWHLO> <Address Label="Type adresse de livraison="Livraison"> </DocumentHeader>

Exemple XML avec deux adresses :

<DocumentHeader Label="En-tête de document"> <UIIVNO Label="N° de facture">201401561</UIIVNO> <OAORNO Label="N° CDV">1000025077</OAORNO> <OAWHLO Label="Dépôt">110</OAWHLO> <Address Label="Type adresse de livraison="Livraison"> <Address Label="Type adresse payeur="Payeur"> </DocumentHeader>

Les adresses sont séparées par types. Le type est inclus en tant qu'attribut et peut posséder les valeurs suivantes :

Type de vol Description
Livraison Adresse de livraison
Client Adresse client
Payeur Adresse payeur
Facture Adresse de facturation
Fournisseur Adresse du fournisseur
Bénéficiaire Adresse bénéficiaire
Division Adresse de la division
Emplacement Adresse emplacement
Devis Adresse devis
Banque Adresse banque

Les éléments suivants sont toujours inclus dans une section Adresse :

  • CUNM – Nom
  • ADR1 – Ligne d'adresse 1
  • ADR2 – Ligne d'adresse 2
  • ADR3 – Ligne d'adresse 3
  • ADR4 – Ligne d'adresse 4

Exemple XML avec une adresse :

<Address Label= "Type adresse de livraison= "Livraison"> <VFCUNM>Société Infor</ VFCUNM > <VFADR1>72 Rue du Colonel de Rochebrune</VFADR1> <VFADR2>Suite 1</VFADR2> <VFADR3>92380 Garches</VFADR3> <VFADR4>France</VFADR4> </Address>

Exemple XML avec deux adresses :

<Address Label= "Type adresse de livraison= "Livraison"> <VFCUNM>Société Infor</ VFCUNM> <VFADR1>72 Rue du Colonel de Rochebrune</VFADR1> <VFADR2>Suite 1</VFADR2> <VFADR3>92380 Garches</VFADR3> <VFADR4>France</VFADR4> </Address> <Address Label= "Type adresse payeur= "Payeur"> <VFCUNM>Infor France</ VFCUNM > <VFADR1>3 Rue Joseph Monier</VFADR1> <VFADR2></VFADR2> <VFADR3>92500 Rueil-Malmaison</VFADR3> <VFADR4>France</VFADR4> </Address>

Un bloc de texte est séparé par types. Le type est inclus en tant qu'attribut et peut posséder les valeurs suivantes :

Type de vol Sous type
ExemptionText
DocumentText PreText ou PostText
CustomerText PreText ou PostText
OrderText PreText ou PostText
OrderLineText PreText ou PostText
ItemText PreText ou PostText
CoreTerms
ConfigText
AssignmentText PreText ou PostText
AgreementText PreText ou PostText
GeneralText
AttributeText
FinReasonText

Exemple XML avec un bloc de texte :

<TextBlock Label='Texte document' Type='DocumentText' SubType='PreText'> <BD-3>asldfjasljfalsjfaslfdj</BD-3> <BD-3>hhdftdgsdfsfsfs</BD-3> <BD-3>sdwe63gdfg34te</BD-3> <BD-3>xxrwrwtey567</BD-3> …… </TextBlock>

Exemple XML avec deux blocs de texte :

<TextBlock Label='Texte document' Type='DocumentText' SubType='PreText'> <BD-3>asldfjasljfalsjfaslfdj</BD-3> <BD-3>hhdftdgsdfsfsfs</BD-3> <BD-3>sdwe63gdfg34te</BD-3> <BD-3>xxrwrwtey567</BD-3> …… </TextBlock> <TextBlock Label='Texte ordre' Type='OrderText' SubType='PreText'> < BD-3>ddddfafj</BD-3> < BD-3>dddddddddsss</BD-3> < BD-3>4353333333</BD-3> </TextBlock>

Une ligne est répétée et groupée par lignes.

Les étiquettes ne sont insérées qu'une seule fois avant toutes les sections relatives aux lignes.

Dans de nombreux cas, les valeurs de sous-total (SublineValues) sont incluses lorsque les champs clés sont scindés en sous-totaux et utilisés pour le tri.

Exemple XML sans valeurs de sous-totaux (ex. simple avec seulement une liste de une ou plusieurs lignes) :

<Lines Label='Lignes'> <UBPONR Label='Ligne'/> <UBITNO Label='Code article'/> <Line> <UBPONR>1</UBPONR> <UBITNO>MB_101</UBITNO> </Line> <Line> <UBPONR>2</UBPONR> <UBITNO>MB_202</UBITNO> </Line> <Line> <UBPONR>3</UBPONR> <UBITNO>MB_303</UBITNO> </Line> </Lines>

Exemple XML avec valeurs de sous-totaux (ex. avec valeurs de sous-totaux (SublineValues) incluses) :

<Lines Label='Lignes'> <UBPONR Label='Ligne'/> <UBITNO Label='Code article'/> <Line> <UBPONR>1</UBPONR> <UBITNO>MB_101</UBITNO> </Line> <Line> <UBPONR>2</UBPONR> <UBITNO>MB_202</UBITNO> <SublineValues> <Element 1/> <Element 2/> </SublineValues> <Line> <UBPONR>3</UBPONR> <UBITNO>MB_303</UBITNO> </Line> <Line> <UBPONR>4</UBPONR> <UBITNO>MB_404</UBITNO> <SublineValues> <Element 1/> <Element 2/> </SublineValues> </Line> </Lines>

Exemple XML avec tri par adresse :

Si des lignes sont groupées pour un motif autre que les sous-totaux, l'élément Subline doit également être utilisé. En dessous se trouvent les lignes triées par adresse. Les informations d'adresse sont ensuite incluses par élément Subline.

<Lines Label="Lignes"> <UBPONR Label="Ligne"/> <UBITNO Label="Code article"/> <Subline> <Address Label="Type adresse de livraison="Livraison"> <Line> <UBPONR>3</UBPONR> <UBITNO>MB_303</UBITNO> </Line> </Subline> <Subline> <Address Label="Type adresse de livraison="Livraison"> <Line> <UBPONR>4</UBPONR> <UBITNO>MB_404</UBITNO> </Line> <Line> <UBPONR>5</UBPONR> <UBITNO>MB_505</UBITNO> </Line> </Subline> </Lines>

Exemple XML avec valeurs PreText et PostText :

Si des valeurs PreText et PostText sont employées pour la ligne, elles doivent être placées dans la ligne.

<Lines Label="Lignes"> <UBPONR Label= "Ligne"/> <UBITNO Label="Code article"> <Line> <UBPONR>3</UBPONR> <UBITNO>MB_303</UBITNO> <TextBlock Label="Texte article" Type="Texte article" SubType="PreText"> <TextBlock Label="Texte article" Type="Texte article" SubType="PostText"> </Line> </Lines>

HeadCharges

  • Toujours la section de type HeadCharges
  • Les frais sont répétés et groupés par HeadCharges.
  • Les étiquettes ne sont insérées qu'une seule fois avant toutes les sections relatives aux frais

Exemple XML avec un frais :

<HeadCharges> <USCRD0 Label='Description'/> <USCRID Label='Frais'/> <VFCHAM Label='Mnt frais'/> <VFVTCD Label='CdT'/> <Charge Label='Frais'> <USCRD0>Frais Monica_CdTVA01</USCRD0> <USCRID>MBHC1</USCRID> <VFCHAM>200,00</VFCHAM> <VFVTCD>1</VFVTCD> </Charge> </HeadCharges>

Exemple XML avec deux frais :

<HeadCharges> <USCRD0 Label='Description'/> <USCRID Label='Frais'/> <VFCHAM Label='Mnt frais'/> <VFVTCD Label='CdT'/> <Charge Label='Frais'> <USCRD0>Frais Monica_CdTVA01</USCRD0> <USCRID>MBHC1</USCRID> <VFCHAM>200,00</VFCHAM> <VFVTCD>1</VFVTCD> </Charge> <Charge Label='Frais'> <USCRD0>Frais Monica_CdTVA03</USCRD0> <USCRID>MBHC3</USCRID> <VFCHAM>400,00</VFCHAM> <VFVTCD>1</VFVTCD> </Charge> </HeadCharges>

DocumentTotal

  • Toujours la section de type 022 – DocumentTotal
  • Toujours le niveau 03
  • Il doit inclure tous les éléments contenant des totaux pour le document tout entier.

Etiquettes supplémentaires

  • Les étiquettes qui ne sont associées à aucune donnée sont incluses comme des étiquettes normales mais avec la valeur Element définie sur vrai ou faux (true/false).
  • Les étiquettes supplémentaires sont d'abord incluses dans une section.

Exemple 1

Texte '***PRELIMINAIRE***' inclus dans la section DocumentHead

<DocumentHead Label="En-tête document" > <VFPREL Label="Préliminaire">true</VFRELI> ….. </DocumentHead> <DocumentTotal Label="Total document"> <VFPLAC Label="Lieu">true</VFPLAC> <VFDATE Label="Date">true</VFDATE> <VFSIGN Label="Signature">true</VFSIGN> ….. </DocumentTotal>

Exemple 2

Ligne de signature avec lieu, date et signature dans DocumentTotal :

Lieu Date Signature

Exemple XML

<DocumentTotal Label='Total document'> <VFPLAC Label='Lieu'>true</VFPLAC> <VFDATE Label='Date'>true</VFDATE> <VFSIGN Label='Signature'>true</VFSIGN> ….. </DocumentTotal>

Format 2 – Rapport standard M3

Les principaux standards pour Format 2 – Rapport standard M3 sont les suivants :

  • Le nom d'élément équivaut au nom de champ dans la table M3 Business Engine. Ceci facilite l'identification de la source si vous maîtrisez la base de données M3.
  • Etiquettes incluses en tant qu'attribut 'Label'. Elles sont traduites en fonction de la langue du document.
  • Codes avec description groupés en sections partageant la même étiquette. Par exemple : conditions de livraison et autres textes sur les conditions.

M3OutReport

<M3OutDocument> <Metadata> <DataArea> <Report> <Report> <Report> </DataArea> </M3OutReport>

Les balises XML requises pour la balise XML M3OutReport sont les suivantes :

  • M3OutReport est un nœud racine. Utilisez toujours M3OutReport.
  • Metadata (Métadonnées) correspond aux informations générales relatives au fichier XML.
  • DataArea inclut toutes les données dans le fichier XML. DataArea comprend un ou plusieurs états.
  • Report (Etat) est normalement une occurrence unique.

Enregistrer

<Report> <Cover> <Formatting> <Header> <Subreport> <Media> </Report>

Les balises XML requises pour la balise XML Report sont les suivantes :

  • Cover (Couverture) correspond à la désignation de champs de sélection et de filtre, et toujours une seule occurrence. Cette balise XML est facultative.
  • Formatting (Formatage) correspond aux informations relatives à la façon dont les données sont formatées.
  • Header sont les données permettant de répéter des informations en haut d'une disposition.
  • Subreport (Sous-rapport) correspond au moment où le rapport est fractionné en sous-rapports. Subreport (Sous-rapport) est normalement une occurrence unique.
  • Media (Support) correspond aux informations relatives à la distribution.

La section Cover peut être désactivée dans (CMS025/E).

Sous-rapport

<Subreport> <TableInformation Type="xx"> <TableInformation Type="yy"> <TableInformation Type="zz"> <Table Type="xx" </Subreport>

Format 3 – Ouvert

Les principaux standards pour Format 3 - Ouvert sont les suivants :
  • Le nom d’élément et Groupe par élément peuvent être vidés.
  • La structure XML libre peut être créée.
<?xml version="1.0" encoding="UTF-8"?> <M3FinancialReport> <SGrouping Section> <Lines> <Grouping Section> <Custom> <Grouping Section> <Custom> 

Champs paramétrables

Des champs supplémentaires appelés 'Champs paramétrables' sont définis dans 'Structure XML. Ouvrir' (CMS006/H). Les champs paramétrables vous permettent de créer une requête de recherche pour un formatage dans IDM Output Management. Ces champs sont également utilisés pour définir les valeurs d'attribut dans IDM.

Sélection de champs paramétrables

Pour définir des champs paramétrables dans (CMS006/H), vous devez d'abord configurer des valeurs dans 'Type de document. Ouvrir' (MNS060/E).

Voici les champs paramétrables définis sur (MNS060/E) :

  • 60 - Champ paramétrable 1
  • 61 - FF02 - Champ paramétrable 2
  • 62 - FF03 - Champ paramétrable 3
  • 63 - FF04 - Champ paramétrable 4
  • 64 - FF05 - Champ paramétrable 5
  • 65 - FF06 - Champ paramétrable 6
  • 66 - FF07 - Champ paramétrable 7
  • 67 - FF08 - Champ paramétrable 8
  • 68 - FF09 - Champ paramétrable 9
  • 69 - FF010 - Champ paramétrable 10
  • 70 - RGS655PF Etat

La valeur d'attribut sélectionnée (60-69) sur (MNS060/E) doit correspondre aux champs paramétrables sur (CMS006/H).

La valeur d'attribut sélectionnée (70) sur (MNS060/E) doit correspondre aux états sur (RGS600/E).