getPriceAndStock
Le service getPriceAndStock, associé à la plateforme Catalogue « IO »,
demande les prix et stocks d’une liste de pièces à une application Partenaire,
éventuellement les prix d’une liste de forfaits.
Deux cas sont à envisager :
- 1er cas : accès direct
- 2ème cas : mode par redirection
1er CAS, d’un accès direct du Catalogue « IO » à l’application Partenaire (pas de gestion de session) :
<xat2 xmlns="http://xat2.etai.fr" version="2.0"> <session-context> <!-- Le quadruplet obligatoire d'identifiants XAT2 --> <application-id>{identifiant de l'application}</application-id> <dms-login>{identifiant de l’application Partenaire dans le garage}</dms-login> <user-shared-id>{identifiant de l’utilisateur}</user-shared-id> <garage-shared-id>{identifiant du garage}</garage-shared-id> </session-context> <shuttle> <transport> <partner> <!-- Déclaration du nom de l'application qui émet la requête --> <name>{Catalogue E-T-A-I}</name> <editor dictionary="ETAI:editor" ref="etai" /> <version-code>{applicationVersion}</version-code> </partner> <action-list> <!-- Déclaration obligatoire du verbe --> <action> <verb>getPriceAndStock</verb> </action> </action-list> </transport> <!-- Définition par défaut de l'unité de valeur monétaire et de la langue utilisée --> <default-shuttle-settings> <currency dictionary="ETAI:unit" ref="euro"/> <language dictionary="ETAI:language" ref="{languageRef}" /> </default-shuttle-settings> <!-- Dans l'élément <part-list> (optionnel) déclaration de 1 à N éléments <part>, décrivant des pièces / ingrédients / pneus --> <part-list> <part> <breakdown-list> <!-- Définition du type de pièce via le dictionnaire "ETAI:breakdown" : part (pièce) / ingredient (ingrédient) / tire (pneu) --> <classification dictionary="ETAI:breakdown" ref="part" /> <!-- Dans le cas du type "part", définition du type d'élément via le dictionnaire "ETAI:partIdentification" (OE / AM / PRE / GU / IU) --> <classification dictionary="ETAI:partIdentification" ref="elementAM" /> </breakdown-list> <!-- Libellé de la pièce (donnée optionnelle) --> <label> <short-label>Bougie d'allumage</short-label> </label> <!-- Référence, éventuellement selon plusieurs sources --> <reference-list> <classification ref="Y-1005J" source="catalog" /> <classification ref="Y1005J" source="clean" /> </reference-list> <!-- Fournisseur de la pièce --> <supplier> <!-- Abréviation fournisseur, SI l'élément de la pièce est du type "elementAM" --> <abbreviation>NGK</abbreviation> <!-- Libellé complet du fournisseur --> <label> <long-label>NGK (Num STOCK)</long-label> </label> <classification-list> <!-- Abréviation du fournisseur selon les dictionnaires "ETAI:supplier" (pièces AM), "ETAI:make" (pièces Constructeur), "ETAI:manufacturer" (pneus) --> <classification dictionary="ETAI:supplier" ref="NGK" /> <!-- Identifiant E-T-A-I du fournisseur --> <classification ref="2425" source="etai" /> </classification-list> </supplier> </part> </part-list> <!-- Dans l'élément <operation-list> (optionnel) déclaration de 1 à N éléments <operation>, décrivant des forfaits --> <calculating-list> <calculating> <operation-list> <operation> <breakdown-list> <!-- Déclaration d'un forfait --> <classification dictionary="ETAI:breakdown" ref="packageDeal" /> <!-- Type du forfait (donnée optionnelle)--> <classification dictionary="ETAI:packageDealType" ref="{packageDealTypeValue}" /> </breakdown-list> <reference-list> <classification ref="{referenceValue}" source="{sourceValue}" /> </reference-list> </operation> </operation-list> </calculating> </calculating-list> </shuttle> </xat2>
La réponse en retour est directe, elle pourrait être la suivante :
<xat2 xmlns="http://xat2.etai.fr" version="2.0"> <date-list> <!-- Dates d'arrivée du message et de son traitement --> <explicit-date> <breakdown-list> <classification dictionary="ETAI:date" ref="receive" source="{nom DMS}" /> </breakdown-list> <date format="yyyy-MM-dd HH:mm:ss">2017-01-09 14:59:38</date> </explicit-date> <explicit-date> <breakdown-list> <classification dictionary="ETAI:date" ref="dispatch" source="{nom DMS}" /> </breakdown-list> <date format="yyyy-MM-dd HH:mm:ss">2017-01-09 14:59:38</date> </explicit-date> </date-list> <message-list> <!-- Accusé de réception du message --> <message> <message-category>ack</message-category> <technical-description>getPriceAndStock processing complete</technical-description> <classification-list> <classification dictionary="XAT2:message" ref="complete" /> </classification-list> </message> </message-list> <shuttle> <transport> <!-- Déclaration fortement recommandée de l'application Partenaire --> <partner> <name>{nom application Partenaire}</name> <editor dictionary="ETAI:editor" ref="{editeur DMS}" /> <version-code>{version de l'application Partenaire}</version-code> </partner> </transport> <person-list> <!-- Adresse du stock --> <person internal-id="icd6baffd-5e89-4dce-a5ba-7134b5ff7302"> <breakdown-list> <classification dictionary="ETAI:breakdown" ref="storageLocation" /> </breakdown-list> <name>S.A. societe</name> <place> <address number="1">ZI DU PRAT</address> <address number="2">1 RUE ALAIN GERBAULT</address> <zip-code>56000</zip-code> <city>VANNES</city> <country> <classification dictionary="ETAI:country" ref="FR">FRANCE</classification> </country> </place> </person> </person-list> <!-- Liste des pièces --> <part-list> <!-- Données transmises par le Distributeur : type de la pièce - référence(s) - libellé - fournisseur - packaging - prix - stock... --> <part> <breakdown-list> <classification dictionary="ETAI:breakdown" ref="part" /> <classification dictionary="ETAI:partIdentification" ref="elementAM" /> </breakdown-list> <label> <short-label>Bougie d'allumage</short-label> </label> <reference-list> <classification ref="Y-1005J" source="catalog" /> <classification ref="Y1005J" source="clean" /> </reference-list> <supplier> <abbreviation>NGK</abbreviation> <label> <long-label>NGK (Num STOCK)</long-label> </label> <classification-list> <classification dictionary="ETAI:supplier" ref="NGK" /> <classification ref="2425" source="etai" /> </classification-list> </supplier> <packaging-list> <packaging> <value> <amount>1</amount> </value> <label> <short-label>Vendu à l'unité</short-label> </label> </packaging> </packaging-list> <stock-list> <stock person-internal-id="icd6baffd-5e89-4dce-a5ba-7134b5ff7302"> <value-list> <value> <amount>0</amount> <amount-of> <classification dictionary="ETAI:stock" ref="availableStock" /> </amount-of> </value> </value-list> <availability> <delivery-list> <delivery> <label> <short-label>Enlèvement sur site</short-label> </label> <date> <date format="yyyy-MM-dd">2017-01-09</date> </date> <carriage> <breakdown-list> <classification dictionary="ETAI:carriage" ref="removalOnSite" /> </breakdown-list> <price> <value-list> <value value-type="exclTaxes"> <amount>0</amount> <amount-of> <classification dictionary="ETAI:unit" ref="euro" /> </amount-of> </value> </value-list> </price> </carriage> </delivery> </delivery-list> </availability> </stock> </stock-list> <price-list> <price> <breakdown-list> <classification dictionary="ETAI:unit" ref="unit" /> </breakdown-list> <value-list> <value value-type="exclTaxes"> <amount>11.24</amount> <measurement> <classification dictionary="ETAI:unit" ref="euro" /> </measurement> </value> </value-list> <debtor> <classification dictionary="ETAI:person" ref="repairer" /> </debtor> <date-list> <explicit-date> <breakdown-list> <classification dictionary="ETAI:date" ref="validity" /> </breakdown-list> <date format="yyyy-MM-dd">2017-01-09</date> <classification-list> <classification dictionary="ETAI:availability" ref="within24h" /> </classification-list> </explicit-date> </date-list> </price> <price> <breakdown-list> <classification dictionary="ETAI:unit" ref="unit" /> </breakdown-list> <value-list> <value value-type="exclTaxes"> <amount>11.24</amount> <measurement> <classification dictionary="ETAI:unit" ref="euro" /> </measurement> </value> </value-list> <debtor> <classification dictionary="ETAI:person" ref="client" /> </debtor> </price> </price-list> <status> <classification dictionary="ETAI:status" ref="known" /> </status> </part> </part-list> <!-- Liste des forfaits --> <calculating-list> <calculating> <!-- Dans l'élément <operation-list> (optionnel) déclaration de 1 à N éléments <operation>, décrivant chaque forfait --> <operation-list> <operation> <reference-list> <!-- Les mêmes informations que celles présentes dans la requête --> <classification ref="{referenceValue}" source="{sourceValue}" /> </reference-list> <price-list> <!-- Prix unitaire à l'achat du forfait --> <price> <breakdown-list> <classification dictionary="ETAI:unit" ref="unit" /> </breakdown-list> <value-list> <value value-type="exclTaxes"> <amount>{amountValue}</amount> </value> </value-list> <debtor> <classification dictionary="ETAI:person" ref="repairer" /> </debtor> <currency dictionary="ETAI:unit" ref="euro" /> </price> <!-- Prix unitaire à la vente du forfait --> <price> <breakdown-list> <classification dictionary="ETAI:unit" ref="unit" /> </breakdown-list> <value-list> <value value-type="exclTaxes"> <amount>{amountValue}</amount> <amount-of> <classification dictionary="ETAI:unit" ref="unit" /> </amount-of> </value> </value-list> <debtor> <classification dictionary="ETAI:person" ref="client" /> </debtor> <currency dictionary="ETAI:unit" ref="euro" /> </price> </price-list> </operation> <operation-list> </calculating> </calculating-list> </shuttle> </xat2>
2ème CAS , où l’application Partenaire est en accès via le mode par redirection (nécessité de créer une session)
1- Le Catalogue « IO » envoie un signal à l’application Partenaire, qui lui retourne un message avec le verbe getData
<xat2 xmlns="http://xat2.etai.fr" version="2.0"> <session-context> <!-- Déclaration obligatoire de l'identifiant unique de la session, créée précédemment --> <session-id>{identifiant unique de la session}</session-id> </session-context> <shuttle> <transport> <action-list> <!-- Déclaration obligatoire du verbe --> <action> <verb>getData</verb> </action> </action-list> </transport> </shuttle> </xat2>
À ce message, le Catalogue « IO » répond avec le verbe getPriceAndStock et sa liste de demandes (pièces, forfaits) :
<xat xmlns="http://xat2.etai.fr" version="2.0"> <date-list> <!-- Dates d'arrivée du message et de son traitement --> <explicit-date source="xat2"> <breakdown-list> <classification dictionary="ETAI:date" ref="receive" source="xat2">Receive date</classification> </breakdown-list> <date format="dd.MM.yyyy HH:mm:ss:S Z">19.01.2017 11:55:18:826 +0100</date> </explicit-date> <explicit-date source="xat2"> <breakdown-list> <classification dictionary="ETAI:date" ref="dispatch" source="xat2">Completion date</classification> </breakdown-list> <date format="dd.MM.yyyy HH:mm:ss:S Z">19.01.2017 11:55:18:826 +0100</date> </explicit-date> </date-list> <message-list> <!-- Statut de la requête getData. Ici, accusé de réception "ack" indiquant le bon déroulement du service --> <message source="xat2"> <message-category>ack</message-category> <user-description dictionary="Xat2:message" ref="complete">getData processing complete</user-description> <technical-description>getData processing complete</technical-description> <classification-list> <classification dictionary="Xat2:message" ref="complete" /> </classification-list> </message> </message-list> <shuttle> <transport> <action-list> <!-- Déclaration obligatoire du verbe exprimant la demande du Catalogue IO --> <action> <verb>getPriceAndStock</verb> </action> </action-list> </transport> <part-list> <!-- Détail de cet élément : cf. description de la demande getPriceAndStock (1er cas) --> </part-list> </shuttle> </xat2>
L’application Partenaire envoie ses données avec le verbe postPriceAndStock :
<xat2 xmlns="http://xat2.etai.fr" version="2.0"> <message-list> <!-- Statut de la requête getPriceAndStock. Ici, accusé de réception "ack" indiquant le bon déroulement du service --> <message source="xat2"> <message-category>ack</message-category> <technical-description>getPriceAndStock processing complete</technical-description> <classification-list> <classification dictionary="Xat2:message" ref="complete" /> </classification-list> </message> </message-list> <session-context> <!-- Déclaration obligatoire de l'identifiant unique de la session --> <session-id>{identifiant unique de la session}</session-id> </session-context> <shuttle> <transport> <action-list> <!-- Déclaration obligatoire du verbe --> <action> <verb>postPriceAndStock</verb> </action> </action-list> </transport> <part-list> <!-- Détail de cet élément : idem ci-dessus. Voir dans la description de la REPONSE au message getPriceAndStock --> </part-list> </shuttle> </xat2>
Le Catalogue « IO » reçoit les données et retourne un accusé de réception : « ack » si tout va bien, sinon un message d’erreur :
<xat2 xmlns="http://xat2.etai.fr" version="2.0"> <date-list> <!-- Dates d'arrivée du message et de son traitement --> <explicit-date source="xat2"> <breakdown-list> <classification dictionary="ETAI:date" ref="receive" source="xat2">Receive date</classification> </breakdown-list> <date format="dd.MM.yyyy HH:mm:ss:S Z">19.01.2017 16:19:40:142 +0100</date> </explicit-date> <explicit-date source="xat2"> <breakdown-list> <classification dictionary="ETAI:date" ref="dispatch" source="xat2">Completion date</classification> </breakdown-list> <date format="dd.MM.yyyy HH:mm:ss:S Z">19.01.2017 16:19:40:143 +0100</date> </explicit-date> </date-list> <message-list> <!-- Statut de la requête postPriceAndStock. Ici, accusé de réception "ack" indiquant le bon déroulement du service --> <message source="xat2"> <message-category>ack</message-category> <user-description dictionary="Xat2:message" ref="complete">postPriceAndStock processing complete</user-description> <technical-description>postPriceAndStock processing complete</technical-description> <classification-list> <classification dictionary="Xat2:message" ref="complete" /> </classification-list> </message> </message-list> <uri-list> <uri-service action="Display" direct-access="true"> <uri>http://{nom de domaine}/xat2disp</uri> </uri-service> </uri-list> <shuttle> <transport> <partner> <name>{Application E-T-A-I}</name> <editor dictionary="ETAI:editor" ref="etai" /> <version-code>{applicationVersion}</version-code> </partner> </transport> </shuttle> </xat2>