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
- M3StandardFormatVersion (obligatoire), toujours défini à 1.
- ReportLayout (obligatoire), format d'état utilisé.
- DocumentDivision (obligatoire), société du document (pas celle de l'utilisateur qui exécute la fonction de sortie).
- CountryVersion (obligatoire), version pays dans (MNS100/L) basé sur documentDivision.
- BaseCountry (obligatoire), pays de la société qui génère le document. Généralement, le pays de la société document, la seule exception est en cas d'utilisation de la représentation fiscale.
- FromToCountry (obligatoire), code pays du destinataire du document. Basé sur l'utilisateur, le client ou le fournisseur. Basé sur (CRS045).
- DocumentLanguage (obligatoire), code langue du destinataire du document. Basé sur l'utilisateur, le client ou le fournisseur. Basé sur 'Langue. Ouvrir' (CRS010) Les langues personnalisées créées dans 'Langue système. Ouvrir' (MNS105) peuvent être utilisées comme langue du document dans (CRS010). Voir les détails dans .
-
Paramètres régionaux (obligatoire), au format xx-yy. xx est le code ISO pour la langue (CRS010) basé sur DocumentLanguage. yy est le code ISO pour le pays (CRS045) basé sur FromToCountry. Utilisés pour formater les dates et les valeurs décimales.
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 (obligatoire), format de date pour le document selon l'utilisateur ou le client/fournisseur (d'après les paramètres M3 BE). Il est fortement recommandé d'utiliser les paramètres régionaux 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 (obligatoire), format de valeur décimale pour le document selon l'utilisateur ou le client/fournisseur (d'après les paramètres 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 (obligatoire), 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>
- M3OutDocument (obligatoire), nœud racine, toujours M3OutDocument pour Format 1 – Document standard M3.
- Metadata (obligatoire), informations générales concernant le fichier XML.
- DataArea (obligatoire), inclut toutes les données dans le fichier XML. DataArea comprend un ou plusieurs éléments Document.
-
Document (obligatoire), peut désigner une occurrence unique ou plusieurs occurrences. 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 (facultatif), champs de sélection et de filtre. Toujours une seule et unique occurrence.
- Formatting (obligatoire pour le format 1), informations concernant la mise en forme des données.
- Header (obligatoire), données permettant de répéter des informations en haut d'une disposition.
- Footer (obligatoire), données permettant de répéter des informations en bas d'une disposition.
- DocumentHeader (facultatif), informations d'en-tête de document
- iTextBlock (facultatif).
- SubDocument (obligatoire), si le document est fractionné en sous-documents. Normalement unique.
- TextBlock (facultatif).
- Lines (facultatif), regroupe toutes les lignes.
- TextBlock (facultatif).
- TextBlock (facultatif).
- DocumentTotal (facultatif).
- Media (obligatoire pour le format 1), informations relatives à la distribution de l'impression.
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>
- M3OutReport (obligatoire), nœud racine, toujours M3OutReport
- Metadata (obligatoire), informations générales concernant le fichier XML.
- DataArea (obligatoire), inclut toutes les données dans le fichier XML. DataArea comprend un ou plusieurs éléments Etat.
- Report (obligatoire), normalement occurrence unique.
Enregistrer
<Report> <Cover> <Formatting> <Header> <Subreport> <Media> </Report>
- Cover (facultatif), champs de sélection et de filtre. Toujours une seule et unique occurrence.
- Formatting (obligatoire), informations concernant la mise en forme des données.
- Header (obligatoire), données permettant de répéter des informations en haut d'une disposition.
- SubReport (obligatoire), si le rapport est fractionné en sous-rapports. Normalement une seule et unique occurrence.
- Media (obligatoire), informations concernant 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
- 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).