Aller au contenu principal

Inventaire

Chemin de base : /api/inventory

Produits

GET /inventory/products

Récupérer tous les produits avec les données de catégorie et de fournisseur.

Authentification : Connecté

Paramètres de requête :

ParamètreTypeDescription
searchstringFiltrer par nom de produit
supplier_idintegerFiltrer par fournisseur
pageintegerNuméro de page (active la pagination)
limitintegerÉléments par page (défaut 50)

Réponse : Tableau d'objets produit avec category_name, category_color, supplier_name.

POST /inventory/products

Créer un nouveau produit. Un article_number est généré automatiquement via la séquence ART_PRODUCT. Si aucun vat_rate_id n'est fourni, le taux de TVA par défaut est appliqué automatiquement.

Authentification : Admin

ChampTypeObligatoireDescription
namestringOuiNom du produit
skustringOuiCode de référence (SKU)
pricenumberOuiPrix de vente (>= 0)
purchase_pricenumberOuiPrix d'achat (obligatoire pour les calculs de coût)
quantity_on_handintegerOuiNiveau de stock actuel
low_stock_thresholdintegerNonSeuil d'alerte (défaut 5)
category_idintegerNonID de catégorie de produit
supplier_idintegerNonID du fournisseur
vat_rate_idintegerNonID du taux de TVA (utilise le taux TVA par défaut du système)
ean_codestringNonCode-barres EAN

PUT /inventory/products/:id

Mettre à jour un produit.

Authentification : Admin

Tous les champs sont optionnels. Lorsque purchase_orders_enabled est false dans les paramètres, quantity_on_hand peut être mis à jour directement ici.

DELETE /inventory/products/:id

Supprimer un produit.

Authentification : Admin


Catégories de produits

GET /inventory/categories

Récupérer toutes les catégories de produits triées par position.

POST /inventory/categories

Créer une nouvelle catégorie.

Authentification : Admin

ChampTypeObligatoireDéfaut
namestringOui
colorstring (hex)Non#6e56cf

PUT /inventory/categories/:id

Mettre à jour une catégorie (nom, couleur, position).

Authentification : Admin

DELETE /inventory/categories/:id

Supprimer une catégorie.

Authentification : Admin


Transactions de stock

GET /inventory/transactions

Récupérer les mouvements de stock (livraisons entrantes, ventes, ajustements manuels, consommation interne).

Authentification : Connecté

Paramètres de requête : product_id, from (date), to (date)

Chaque transaction possède un champ delta (positif = entrée de stock, négatif = sortie de stock) et une chaîne reason.


Fournisseurs

Chemin de base : /api/suppliers

GET /suppliers

Lister tous les fournisseurs triés par nom.

Authentification : Connecté

Paramètres de requête : active=true pour filtrer uniquement les fournisseurs actifs ; page, limit pour la pagination.

POST /suppliers

Créer un nouveau fournisseur. Un creditor_number est généré automatiquement via la séquence CRED.

Authentification : Admin

ChampTypeObligatoire
namestringOui
contact_personstringNon
emailstringNon
phonestringNon
addressstringNon
notesstringNon
websitestringNon

GET /suppliers/:id

Récupérer un fournisseur avec ses 20 commandes d'achat les plus récentes.

PUT /suppliers/:id

Mettre à jour un fournisseur.

Authentification : Admin

Champ supplémentaire : active (booléen) pour désactiver un fournisseur.

DELETE /suppliers/:id

Supprimer un fournisseur.

Authentification : Admin


Commandes d'achat

Chemin de base : /api/suppliers (les endpoints de commande d'achat sont sous la route suppliers)

GET /suppliers/orders

Lister toutes les commandes d'achat avec le nom du fournisseur et le nombre d'articles.

Authentification : Connecté

Paramètres de requête : status pour filtrer par statut ; page, limit pour la pagination.

GET /suppliers/orders/:id

Récupérer une commande d'achat avec toutes ses lignes.

Authentification : Connecté

POST /suppliers/orders

Créer une nouvelle commande d'achat. Un order_number est généré automatiquement via la séquence IO. Les nouvelles commandes ont le statut created.

Authentification : Admin

ChampTypeObligatoireDescription
supplier_idintegerOuiID du fournisseur
staff_idintegerNonMembre du personnel assigné (par défaut l'utilisateur courant)
notesstringNonNotes de commande
order_datedateNonDate de commande (par défaut aujourd'hui)
expected_datedateNonDate de livraison prévue

Réponse (201) : Objet commande avec tableau items vide.

PUT /suppliers/orders/:id/items

Définir en masse les lignes d'une commande d'achat. Remplace tous les articles existants. Uniquement autorisé lorsque le statut est created ou ordered.

Authentification : Admin

{
"items": [
{ "product_id": 5, "quantity": 10, "unit_cost": 4.50 },
{ "product_id": 8, "quantity": 2, "unit_cost": 12.00 }
]
}

PUT /suppliers/orders/:id

Mettre à jour le statut ou les métadonnées d'une commande d'achat.

Authentification : Admin

ChampTypeDescription
statusstringcreated, ordered, received, cancelled
notesstringNotes de commande
order_datedateDate de commande
expected_datedateDate de livraison prévue
received_datedateDate de réception effective
packing_slip_numberstringNuméro de référence du bon de livraison

Lors de la transition vers received, le stock est automatiquement incrémenté pour chaque ligne et des lignes inventory_transactions sont créées. received_date est défini à aujourd'hui si non fourni.

POST /suppliers/orders/:id/packing-slip

Téléverser un fichier bon de livraison (PDF, image) pour une commande reçue. Max 10 Mo. Le fichier est enregistré avec un nom structuré : {order_number}_{creditor_number}_{received_date}.

Authentification : Admin

Content-Type : multipart/form-data

ChampTypeObligatoire
filefichierOui

Réponse : { "ok": true, "filename": "IO2601_CRED001_20260325.pdf" }

GET /suppliers/orders/:id/packing-slip

Télécharger le fichier bon de livraison d'une commande.

Authentification : Connecté

GET /suppliers/packing-slips/zip

Télécharger tous les bons de livraison d'une année donnée sous forme d'archive ZIP.

Authentification : Admin

Paramètres de requête : year (par défaut l'année en cours)

DELETE /suppliers/orders/:id

Supprimer une commande d'achat. Fonctionne pour tous les statuts.

Authentification : Admin

Comportement selon le statut :

Statut de la commandeEffet sur le stock
createdAucune modification du stock
orderedAucune modification du stock
receivedLe stock est décrémenté pour tous les articles reçus ; des lignes inventory_transactions inverses sont créées ; le fichier bon de livraison est supprimé
cancelledAucune modification du stock

Réponse : { "ok": true }

Statuts des commandes d'achat

StatutDescription
createdCommande créée, articles en cours d'ajout
orderedCommande envoyée au fournisseur
receivedMarchandises reçues ; stock mis à jour
cancelledCommande annulée

Numérotation automatique

Préfixe de séquenceEntitéExemple
IOCommandes d'achatIO2601, IO2602
CREDNuméros de créancier fournisseurCRED001, CRED002
ART_PRODUCTNuméros d'article produitART_PRODUCT001

Les séquences se réinitialisent annuellement (les deux derniers chiffres de l'année font partie du numéro).