Catalogue
Wino est le logiciel de caisse et de back-office des boutiques qui l'utilisent. Le catalogue est ce qu'une boutique vend : ses produits, leurs variantes, leurs prix et leur stock. Cette page explique comment ces entités s'articulent. Chaque champ est décrit dans le schéma GraphQL.
Boutiques
Une Shop est un magasin ou un entrepôt d'un compte Wino. Presque tout appartient à une boutique : produits, prix, taxes, catégories, appareils. Avec une clé pour plusieurs boutiques, chaque boutique a sa propre copie du catalogue.
Produits et variantes
- Un
Productest l'article tel que le commerçant le décrit : une cuvée de vin, une bière, un fromage. Il a uneTaxet peut avoir uneCategory. - Une
Variantest l'article réellement vendu : le même produit dans un millésime, une contenance ou un conditionnement donnés. Un produit a une ou plusieurs variantes. L'application Wino les appelle « articles ».
Le vin Samorens est un seul produit : son producteur, son pays et sa couleur sont les mêmes quelle que soit la façon dont il est vendu. Vendu en bouteille de 0,75 L et en BIB de 10 L, il a deux variantes, chacune avec son propre stock et ses propres prix.
Pour une boutique en ligne ou une marketplace, traitez chaque variante comme un produit à part entière : listez le catalogue avec la requête variants plutôt que products.
Chaque produit a un type (kind), et chaque type a ses propres champs. Tout produit nécessite name, kind, country, shopId et taxId. Certains types en demandent davantage :
| Kind | Pour | Également requis à la création |
|---|---|---|
WINE | Vins | color, wineType, region, designation |
BEER | Bières | color, beerType |
SPIRITUOUS | Spiritueux : whisky, vodka, armagnac… | family |
SIMPLE | Tout le reste : jus, fromages, accessoires… | rien de plus |
Les champs qui ne s'appliquent pas au type valent null. Les champs qui commencent par formatted (formattedName…) sont prêts à afficher : ne les analysez pas.
Variantes en vrac
Une variante est vendue soit à l'unité, soit en vrac, au poids ou au volume (bulk: true). Un fromage peut être vendu en pièce entière, en morceau de 0,15 kg, ou à la coupe au kilo : trois variantes du même produit.
- En vrac :
capacityUnitetcapacityPrecisionsont renseignés. Les quantités sont des entiers multipliés par10^capacityPrecision: aveccapacityPrecision: 3et l'unitékg, une quantité brute de1500signifie 1,5 kg. - À l'unité :
capacityValueetcapacityUnitdonnent la contenance d'un article, quand le commerçant la renseigne, par exemple0.75etL. bulkne peut être défini qu'à la création de la variante.
Stock
Chaque variante a son propre stock dans sa boutique : calculez avec stock.rawQuantity, affichez stock.formattedQuantity. Le stock ne change que par des mouvements de stock (StockActivity) : ventes, remboursements, pertes, livraisons, transferts, inventaires. Chaque mouvement est enregistré par un appareil (voir Votre boutique et votre appareil). Les types de mouvement sont listés dans le Glossaire.
stock.state est calculé à partir des seuils de la variante :
OK: au-dessus du seuil de réapprovisionnement.ALERT: au-dessus du seuil minimum, et au niveau ou en dessous du seuil de réapprovisionnement (stockOrderTriggerThreshold, 5 s'il n'est pas défini).DANGER: au niveau ou en dessous du seuil minimum (minStockThreshold, 0 s'il n'est pas défini).
Les variantes en vrac en cl, g, L ou kg n'utilisent pas les seuils : DANGER à 0 ou moins, ALERT en dessous de 100 (cl ou g) ou en dessous de 1 (L ou kg), OK à partir de 100 ou de 1.
Prix et prix de vente des variantes
Une boutique a des prix (Price), comme « Tarif Boutique » ou « Tarif Ecommerce ». Une variante a un prix de vente (VariantPrice) dans chaque prix où elle est vendue.
- Chaque
VariantPricedonnevalueIncludingTaxetvalueExcludingTax. Le champtaxIncludeddu prix indique lequel fait référence :truesignifie que les prix sont saisis TTC. - Dans un même prix, une variante peut avoir des paliers de quantité : plusieurs
VariantPriceavecfromQuantityettoQuantity, par exemple 14 € de 1 à 5 bouteilles, puis 13,50 € à partir de 6 (toQuantity: -1signifie sans limite supérieure).
Actif et archivé
- Une variante peut être inactive (
active: false) : le commerçant l'a retirée de la vente. Elle apparaît toujours dans les listes. - L'API n'a pas de suppression : les enregistrements sont archivés à la place (
archivedAt). La plupart des listes masquent les enregistrements archivés par défaut : ajoutezfilterBy: { archived: INCLUDED }pour les obtenir aussi.