API : purchase_order

Permet de créer / remplacer / annuler une commande d'achat (purchase order) dans PMS, à partir d'un payload JSON.

Cette API est l'équivalent JSON de l'ancien endpoint XML <purchase_order>.

  • action = Create : crée la commande d'achat. Si la référence existe déjà, l'API retourne une erreur duplicate.
  • action = Replace : remplace la commande d'achat (suppression puis réimport). Si une réception a déjà démarré, l'API retourne une erreur locked.
  • action = Cancel : annule la commande d'achat (si possible). Sinon erreur locked.

Cas particulier historique : pour action = Replace, si status vaut 90 la commande est clôturée ; si status vaut 99 la commande est supprimée (ou clôturée si suppression impossible).

Exemple de requête


$json_request = "{...}";

$ch = curl_init(); 

curl_setopt_array($ch, array(
    CURLOPT_URL            => "https://{account-name}.pms1.net/edi/api/purchase_order", 
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_POSTREDIR	   => true,
    CURLOPT_VERBOSE        => true,
	CURLOPT_POST           => true,
	CURLOPT_POSTFIELDS     => $json_request,
	CURLOPT_HTTPHEADER	   => array(
									'Accept: application/json',                  
									'Content-Type: application/json',
									'Authorization: Basic ' . base64_encode('{account-name}:{password}')
									)
));

$reply = curl_exec ($ch);
curl_close($ch);
$json = json_decode($reply);

Exemple de requête


{
  "action": "Create",
  "purchase_order_ref": "PO-2026-000123",
  "purchase_order_supplier_ref": "ERP-PO-000123",
  "purchase_order_title": "Réassort Mars",
  "purchase_order_date": "2026-02-06",
  "expected_date": "2026-02-15",
  "supplier_ref": "SUP-001",
  "supplier_name": "ACME Supplies",
  "is_transfer": 0,
  "warehouse_ref": "WH-01",
  "products": [
    {
      "sku": "SKU-123",
      "ean": "12345678910",
      "quantity": 10,
      "unit_purchase_price": 4.25
    },
    {
      "sku": "SKU-987",
      "quantity": 2,
      "unit_purchase_price": 19.9
    }
  ]
}
  • purchase_order_ref : identifiant de la commande d'achat dans votre ERP
  • purchase_order_supplier_ref : identifiant de la commande d'achat chez le fournisseur
  • purchase_order_date / expected_date : acceptent YYYY-MM-DD
  • supplier_ref : identifiant du fournisseur dans votre ERP
  • warehouse_ref : identifiant de l'entrepôt de réception dans votre ERP
  • products[].sku : SKU produit

Exemple de réponse


{
  "result": "ok",
  "purchase_order_id": 12345,
  "purchase_order_ref": "PO-2026-000123"
}

Exemple d'erreur


{
  "error": "duplicate"
}