API : Order

Usage de la commande Order

La commande Order permet la transmission des données d'une commande à PMS.

La commande Order permet de

  1. transmettre une première fois (action=CREATE).
  2. retransmettre (action=REPLACE).
  3. annuler (action=CANCEL).

 

Vous devez mettre en place deux modes de fonctionnement dans votre ERP :

  1. La transmission automatique d'une commande. Exemple : transmission de la commande lors du passage en statut "En attente de préparation". Ne transmettez que les commandes considérées comme expédiables.
  2. La transmission à la demande de l'utilisateur via l'interface utilisateur. Exemple ci-dessous (module PMS sur une page de commande dans Prestashop).

 

Exemple de requête


<order>
	<AccountName>beautyshop</AccountName>
    <Action>Create</Action>
	<OrderId>451566</OrderId>
	<CustomerOrderId></CustomerOrderId>
	<OrderDate>2013-06-04</OrderDate>
	<CustomerId>14524</CustomerId>
	<DeliveryNoteId></DeliveryNoteId>
	<InvoiceId></InvoiceId>
	<InvoiceDate></InvoiceDate>
	<IsTransfer>0</IsTransfer>
	<ShopId>1</ShopId>
	<SalesChannelId>1</SalesChannelId>
	<Priority></Priority>
	<ShipOnDate></ShipOnDate>
	<DeliverOnDate></DeliverOnDate >
	<DeliveryMethod>Colissimo</DeliveryMethod>
	<DeliveryMethodId>5</DeliveryMethodId>
	<DeliveryFirstName>JEAN</DeliveryFirstName>
	<DeliveryLastName>DUPOND</DeliveryLastName>
	<DeliveryCompany>STARTUP SARL</DeliveryCompany>
	<DeliveryAddress1>1 RUE DE LA REPUBLIQUE</DeliveryAddress1>
	<DeliveryAddress2></DeliveryAddress2>
	<DeliveryAddress3></DeliveryAddress3>
	<DeliveryZipCode>75000</DeliveryZipCode>
	<DeliveryCity>PARIS</DeliveryCity>
	<DeliveryStateCode></DeliveryStateCode>
	<DeliveryCountry>FR</DeliveryCountry>
	<DeliveryPhone>+33611223344</DeliveryPhone>
	<DeliveryEmail>jeandurand@domaine.com</DeliveryEmail>
	<InsuranceValue>250</InsuranceValue>
	<SubscribeInsurance>0</SubscribeInsurance>
	<Message><![CDATA[Fragile, attention à l'emballage]]></Message>
	<GiftMessage><![CDATA[<h1>Joyeux anniversaire !</h1>]]></GiftMessage>
	<DocumentMessage1><![CDATA[<span style=\"size:12px;\">Merci Monsieur Durand pour votre achat !</span>]]></DocumentMessage1>
	<DocumentMessage2></DocumentMessage2>
	<FollowUpEmail></FollowUpEmail>
	<UserData1></UserData1>
	<UserData2></UserData2>
	<UserData3></UserData3>
	<UserData4></UserData4>
	<B2B>0</B2B>
	<ShippingCostTaxIncl>250</ShippingCostTaxIncl>
	<Currency>EUR</Currency>
	<products>
  		<product>
			<Sku>125452</Sku>
			<Quantity>1</Quantity>
			<UnitPrice>19.99</UnitPrice>
			<UnitPriceTaxExcl>19.99</UnitPriceTaxExcl>
			<InStock>1</InStock>
			<WarehouseId>1</WarehouseId>
			<GiftWrap>0</GiftWrap>
			<UserData1></UserData1>
			<UserData2></UserData2>
			<UserData3></UserData3>
			<UserData4></UserData4>
			<Customization><![CDATA[{"Prénom:":"PIERRE"}]]></Customization>            
		</product>
		<product>
			<Sku>9458454</Sku>
			<Quantity>2</Quantity>
			<UnitPrice>75.00</UnitPrice>
			<UnitPriceTaxExcl>75.00</UnitPriceTaxExcl>
			<InStock>1</InStock>
			<WarehouseId>2</WarehouseId>
			<GiftWrap>0</GiftWrap>
			<UserData1></UserData1>
			<UserData2></UserData2>
			<UserData3></UserData3>
			<UserData4></UserData4>
		</product>
	</products>
	<DeliveryOptions>
        <point_relais_id>01997</point_relais_id>
        <tracking_key>123456789</tracking_key>
        <url_push><![CDATA[https://domaine.com/index.php?controller=ajax&option=push&order=999&key=123456789]]></url_push>
	</DeliveryOptions>
</order>

Champs de données

Champs <order>

Champ Obligatoire Description
AccountName Oui Votre identifiant de compte PMS
Action Oui « Create » (par défaut si vide). Attention : si la commande existe déjà, l'action est ignorée. « Replace » : annule et remplace. Attention : si la commande est déjà expédiée, cette action est ignorée. « Test » : pour tester la requête, équivalent à Create mais n'affecte pas la base de données « Cancel » : désactive la commande (pour recréer la commande avec le même OrderId, utilisez « Replace »)
OrderId Oui Numéro de commande dans votre ERP
CustomerOrderId Non Numéro de commande connu du client final si différent de OrderId. Pour impression sur le BL seulement. N'est pas utilisé par la solution comme donnée d'identification.
OrderDate Oui Date de commande (YYYY-MM-DD)
CustomerId Non Numéro de client
DeliveryNoteId Non/Oui Numéro de BL ou numéro d'envoi. Obligatoire si un même OrderId peut faire l'objet de plusieurs expéditions. Si ce cas n'est pas prévu dans votre ERP, laissez ce champ toujours vide.
InvoiceId Non Numéro de facture
InvoiceDate Non Date de facture (YYYY-MM-DD)
IsTransfer Non 0 ou 1 s'il s'agit d'un transfert de stock interne entre entrepôts ou points de ventes
ShopId Non Id de l'enseigne, boutique ou marque (pour branding du BL, 1 par défaut)
SalesChannelId Non Id du canal de vente (site ecommerce, Amazon Marketplace, Ebay... 1 par défaut)
Priority Non Priorité de traitement de la commande
ShipOnDate Non Date à laquelle l'expédition doit avoir lieu (YYYY-MM-DD)
DeliverOnDate Non Date à laquelle la livraison doit avoir lieu (YYYY-MM-DD hh:mm)
DeliveryMethod Oui Libellé du mode de livraison (ex : « Colissimo Expert », « Coursier », « TNT 13H»)
DeliveryMethodId Oui Votre id de transporteur / mode de livraison
DeliveryFirstName Oui Prénom du destinataire
DeliveryLastName Oui Nom du destinataire
DeliveryCompany Non Nom de la société destinataire, raison sociale
DeliveryAddress1 Oui Adresse de livraison ligne 1. Doit contenir le numéro et libellé de voie. Ex : « 5 rue du Bellay ».
DeliveryAddress2 Non Adresse de livraison ligne 2
DeliveryAddress3 Non Adresse de livraison ligne 3
DeliveryZipCode Oui Adresse de livraison Code postal
DeliveryCity Oui Adresse de livraison Ville
DeliveryStateCode Non Code état pour les pays qui le nécessitent. Exemple : NY, pour l'état de New York.
DeliveryCountry Oui Adresse de livraison Pays code ISO 2 caractères (ex:« FR »)
DeliveryPhone Non Adresse de livraison Téléphone
DeliveryEmail Non Adresse de livraison Email
InsuranceValue Non Valeur à assurer pour le transport (nombre entier)
SubscribeInsurance Non 0 / 1 : souscrit à l'assurance optionnelle du transporteur
Message Non Message interne destiné au préparateur de commande
GiftMessage Non Message cadeau à imprimer
DocumentMessage1 Non Contenu HTML à insérer sur le BL imprimé
DocumentMessage2 Non Contenu HTML à insérer sur le BL imprimé
FollowUpEmail Non Email de la personne qui suit la commande en interne et recevra les messages d'alerte en cas d'article manquant. Si non renseigné, les alertes sont envoyées sur l'adresse renseignée dans Réglages > Email du service client
UserData1 Non Champ personnalisé libre.
UserData2 Non Champ personnalisé libre.
UserData3 Non Champ personnalisé libre.
UserData4 Non Champ personnalisé libre.
B2B Non 0: non, 1: oui
ShippingCostTaxIncl Non Montant des frais de port TTC facturés au client
Currency Non Code iso de la devise

Champs <order> <products> <product>

Champ Obligatoire Description
Sku Oui Identifiant unique pour chaque article
Quantity Oui Quantité
UnitPrice Oui Obligatoire pour les exportations (établissement du document CN23). Prix unitaire facturé TTC (ex : 29.99)
InStock Oui En stock (1 ou 0)
WarehouseId Oui Id du lieu de stockage (1 par defaut)
GiftWrap Non Emballage cadeau (1 ou 0)
UserData1 Non Champ personnalisé libre.
UserData2 Non Champ personnalisé libre.
UserData3 Non Champ personnalisé libre.
UserData4 Non Champ personnalisé libre.
Customization Non Informations de personnalisation de l'article. Texte, Json, ou URL image.
CustomsFees Non Si vous devez déclarer le montant des droits de douane (DDP - Delivery Duty Paid), renseignez le montant calculé par vos soins ici (total des droits pour le total de la ligne article).
OrderProductName Non Permet de remplacer le libellé article du catalogue (utilisé par défaut) par un libellé spécifique à la commande.
UnitPriceTaxExcl Non Obligatoire pour les exportations (établissement du document CN23). Prix unitaire facturé (ex : 29.99)

Champs <DeliveryOptions> : Boxtal

Champ Obligatoire Description
point_relais_id Non Id du point de livraison
tracking_key Non
url_push Non Votre Url qui traite les notifications de Boxtal

Champs <DeliveryOptions> : Chronopost

Champ Obligatoire Description
point_relais_id Non Id du point de livraison

Champs <DeliveryOptions> : Colissimo

Champ Obligatoire Description
point_relais_id Non Id du point de livraison

Champs <DeliveryOptions> : TNT Express France

Champ Obligatoire Type Description
point_relais_id Non Id du point de livraison
paybackInfo_paybackAmount Non N Contre-remboursement : Montant
paybackInfo_name Non A32 Contre-remboursement : Raison sociale du bénéficiaire
paybackInfo_address1 Non A32 Contre-remboursement : Première ligne d'adresse
paybackInfo_address2 Non A32 Contre-remboursement : Deuxième ligne d'adresse
paybackInfo_zipCode Non N5 Contre-remboursement : Code postal
paybackInfo_city Non A27 Contre-remboursement : Commune

Champs <DeliveryOptions> : Mondial Relay

Champ Obligatoire Description
point_relais_id Oui Id du point de livraison

Données <product> homogènes

Si Quantity > 1 et que seule une partie est en stock, vous devez créer deux enregistrements Product, un pour la quantité en stock, l'autre pour la quantité non disponible. Idem pour le champ WarehouseId. Il faut donc diviser les quantités par caractéristiques homogènes. Exemples :

Article Sku n°33444, vendu pour une quantité de 5 ex, dont 3 à l'entrepôt n°1 et 2 à l'entrepôt n°3 :


<products>
    <product>
         <Sku>33444</Sku>
         <Quantity>3</Quantity>
         <InStock>1</InStock>
         <WarehouseId>1</WarehouseId>
    </product>
    <product>
         <Sku>33444</Sku>
         <Quantity>2</Quantity>
         <InStock>1</InStock>
         <WarehouseId>3</WarehouseId>
    </product>
</products>

Si maintenant, sur les 3 exemplaires à l'entrepôt n°1, seuls 2 sont physiquement en stock, cela donne :


<products>
    <product>
         <Sku>33444</Sku>
         <Quantity>2</Quantity>
         <InStock>1</InStock>
         <WarehouseId>1</WarehouseId>
    </product>
    <product>
         <Sku>33444</Sku>
         <Quantity>1</Quantity>
         <InStock>0</InStock>
         <WarehouseId>1</WarehouseId>
    </product>
    <product>
         <Sku>33444</Sku>
         <Quantity>2</Quantity>
         <InStock>1</InStock>
         <WarehouseId>3</WarehouseId>
    </product>
</products>

Réponse


<response>error:duplicate</response>
Réponse Description
ok Création réussie
error:duplicate Création non réalisée : la commande existe déjà
error:locked Action Replace ou Cancel non réalisée : le statut de la commande d'origine ne permet pas de l'annuler (commande déjà expédiée par exemple)
error:unvailable Service non disponible, essayez ultérieurement
error:missing sku Sku manquant sur l'un des articles