Aller au contenu principal

Connecter un ERP

Connectez un ERP ou un logiciel de gestion à Wino : l'ERP gère le catalogue, les achats et les niveaux de stock, et Wino vend dans les boutiques. Ce guide présente les principaux flux. Adaptez-les à ce que gère votre ERP.

Développez sur staging avec une clé de staging (voir Environnements), et lisez d'abord Catalogue.

Fonctionnement​

  1. Envoyez le catalogue depuis l'ERP : produits, variantes et leurs prix.
  2. Mettez à jour le stock : livraisons et inventaires.
  3. Récupérez les ventes dans l'ERP.

Conservez une correspondance entre les identifiants de votre ERP et les id de Wino : chaque écriture renvoie l'id de l'enregistrement, et vous en avez besoin pour le mettre à jour plus tard. Avec plusieurs boutiques, chaque boutique a sa propre copie du catalogue : créez le produit et ses variantes dans chaque boutique.

1. Envoyer le catalogue​

Créez le produit avec createProduct, puis chaque variante avec createVariant, avec ses prix de vente dans les prix de la boutique (listez-les avec prices). Les champs requis de chaque kind de produit sont dans Catalogue.

mutation CreateVariant($input: InputCreateVariant!, $prices: [InputCreateVariantPrices!]!) {
createVariant(input: $input, variantPricesInput: $prices) {
id
formattedName
}
}
{
"input": { "productId": "<product id>", "shopId": "<shop id>", "name": "75 cl", "stockKeepingUnit": "ERP-000123" },
"prices": [{ "priceId": "<price list id>", "valueIncludingTax": 18, "valueExcludingTax": 15 }]
}

Les deux valeurs doivent correspondre à la taxe du produit : ici, 15 € HT avec une TVA de 20 % font 18 € TTC.

Ensuite, mettez-les à jour avec updateProduct et updateVariant. Pour modifier les prix, envoyez variantPricesInput avec updateVariant : la modification envoie alors une notification webhook VariantPrice aux abonnés de la boutique. createOrUpdateVariantPrice définit aussi un prix, mais n'envoie aucune notification.

L'API n'a pas de suppression : quand un article sort du catalogue, archivez-le avec archiveVariant ou archiveProduct.

2. Mettre à jour le stock​

Enregistrez les changements de stock avec createStockActivity et votre propre appareil (voir Votre boutique et votre appareil) :

  • DELIVERY pour les marchandises que vous avez reçues : il s'ajoute au stock.
  • RESET après un inventaire : sa quantité devient le nouveau niveau de stock.
mutation StockCount($variantId: String!, $shopId: String!, $deviceId: String!) {
createStockActivity(
input: { kind: RESET, quantity: 24, comment: "Inventory 2026-11", variantId: $variantId, shopId: $shopId, deviceId: $deviceId }
) {
id
kind
quantity
}
}

Un mouvement de stock ne peut pas être supprimé : envoyez chacun une seule fois. Pour une variante en vrac, envoyez aussi capacityUnit et capacityPrecision, avec une quantité mise à l'échelle (voir Variantes en vrac). Les autres types de mouvement sont listés dans le Glossaire.

3. Récupérer les ventes​

  • Pour suivre le stock, abonnez-vous aux webhooks StockActivity : chaque vente en caisse envoie une notification.
  • Pour importer les ventes elles-mêmes (tickets, factures, remboursements), lisez-les régulièrement : voir Connecter un outil d'analyse.

Les fournisseurs et les clients peuvent aussi être écrits : createSupplier, updateSupplier, createCustomer, updateCustomer. Chaque input est décrit dans le schéma GraphQL.