# Inventaire

L'API Inventory suit les stocks dans plusieurs emplacements physiques (entrepôts, magasins ou succursales), avec l'historique des mouvements et la traçabilité des lots.

## Concepts

- **Emplacements** : lieux de stockage avec name, code facultatif (ex. WH-01) et association possible à un account_id vendeur.
- **Stock** : chaque annonce a une quantité par emplacement (inventory_stock), égale à la somme des lots. Elle est mise à jour lors de chaque réception, transfert ou ajustement.
- **Lots** : une livraison physique possède son lot_number et expiry_date. Plusieurs lots d'une annonce peuvent coexister. Le tri FEFO place d'abord les dates de péremption les plus proches.
- **Mouvements** : chaque réception, transfert, ajustement, vente ou retour crée une ligne immuable dans inventory_movements, associée au lot, à l'emplacement et à l'utilisateur.
- **Transferts** : le stock est retiré immédiatement de la source à la création (in_transit), puis ajouté à la destination à réception. L'annulation avant réception remet le stock à la source.
- **Commandes fournisseur** : les PO permettent les réceptions partielles. Chaque ligne suit quantity_ordered et quantity_received. La réception crée des mouvements et peut créer ou incrémenter un lot.

## États du stock

| État | Signification |
|---|---|
| En emplacement | Quantité de lot/stock supérieure à zéro sur place. |
| En transit | Stock retiré de la source, transfert non reçu. |
| Endommagé | Ajustement négatif avec motif damage. |

## Authentification

Tous les points de terminaison exigent un accès administrateur (admin: 1 transmis par la passerelle à partir de user_roles du JWT). Envoyez tenant_id dans chaque requête.
