Le service getPriceAndStock / postPriceAndStock

Logo Atelio AfterMarket 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) :

[Voir ici la description fonctionnelle de ce service]

 

<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 &lt;part-list&gt; (optionnel) déclaration de 1 à N éléments &lt;part&gt;, 
    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 &lt;operation-list&gt; (optionnel) déclaration de 1 à N éléments &lt;operation&gt;, 
    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>

Cliquer ici, pour plus d’infos sur les éléments :
<session-context>
<partner>
<action-list>
<part-list>
<operation-list>

 

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>

Cliquer ici, pour plus d’infos sur les éléments :
<date-list>
<message-list>
<partner>
<person-list>
<part-list>

Haut de la page

2ème CAS , où l’application Partenaire est en accès via le mode par redirection (nécessité de créer une session)

[Voir ici la description fonctionnelle de ces services]

 

  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>

    Cliquer ici, pour plus d’infos sur les éléments :
    <session-context>
    <action-list>

     

  2. À 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>

    Cliquer ici, pour plus d’infos sur les éléments :
    <date-list>
    <message-list>
    <action-list>
    <part-list>

     

  3. 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>

    Cliquer ici, pour plus d’infos sur les éléments :
    <message-list>
    <session-context>
    <action-list>
    <part-list>

     

  4. 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>

    Cliquer ici, pour plus d’infos sur les éléments :
    <date-list>
    <message-list>
    <uri-list>
    <partner>

Retour à la liste de toutes les cartes d’identités techniques des servicesHaut de la page