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
- transmettre une première fois (action=CREATE).
- retransmettre (action=REPLACE).
- annuler (action=CANCEL).
Vous devez mettre en place deux modes de fonctionnement dans votre ERP :
- 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.
- 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 |