Cycle de vie d'une opération¶
Une opération n'agit pas sur le stock au moment où vous l'écrivez. Elle traverse trois états, et chacun donne des droits que le précédent n'avait pas et retire des libertés que le suivant n'aura plus.
Les trois états¶
| Statut | Ce qu'il autorise | Ce qu'il interdit |
|---|---|---|
| Brouillon | Modifier l'en-tête et les lignes, supprimer, valider | Aucun effet sur le stock |
| Validé — affiché « À faire » | Exécuter | Modifier l'en-tête, valider à nouveau |
| Exécuté | Consulter, annuler par une opération de retour | Modifier, supprimer, exécuter à nouveau |
Le module connaît un quatrième statut, Annulée, hérité de l'ancien modèle. Dans les faits, une opération exécutée n'est jamais rétrogradée : son annulation prend la forme d'une contre-opération, décrite plus bas.
Brouillon¶
Le brouillon est le seul moment où l'opération vous appartient encore. C'est là que le partenaire, le document source, la date prévue, l'emplacement source, l'emplacement de destination et les lignes d'article se décident. Toute tentative de modification après le brouillon est refusée.
Les emplacements sont vérifiés dès l'enregistrement, et non à l'exécution : la source doit différer de la destination, un emplacement parent ne peut servir ni de source ni de destination, et le couple source/destination doit respecter la catégorie du type d'opération — virtuel vers interne pour une entrée, interne vers interne pour un transfert, interne vers virtuel pour une sortie.
Un brouillon se supprime librement. Une opération exécutée, jamais.
Validation¶
Valider ne bouge aucun stock. C'est une déclaration : l'opération est prête, ce qui reste à faire est physique. Le module vérifie qu'au moins un des deux emplacements est interne — une opération qui n'entre ni ne sort de chez vous n'aurait rien à enregistrer — puis fait basculer le statut.
Une opération déjà validée ne peut plus être validée, ni modifiée.
Exécution¶
L'exécution est le seul moment où le stock change. Elle n'est possible que sur une opération validée, et pour chaque ligne d'article elle :
- enregistre un ou plusieurs mouvements de stock, avec leur quantité, leur coût, leur emplacement réel de départ et d'arrivée, et leur auteur ;
- crée un lot si l'opération est une entrée, ou consomme les lots existants si c'est une sortie ou un transfert, selon les règles décrites dans Lots et mouvements ;
- met à jour la quantité disponible de l'article dans les emplacements concernés, et le coût moyen de l'article s'il s'agit d'une entrée.
Une sortie qui demanderait plus que le stock disponible est refusée en bloc : rien n'est écrit à moitié.
Une exécution ne se défait pas
Une opération exécutée ne se modifie plus et ne se supprime plus. Elle a laissé des mouvements, et ces mouvements sont la mémoire du stock. La seule manière de revenir en arrière est d'écrire l'inverse.
Annulation par contre-opération¶
Annuler une opération, c'est en créer une seconde qui la renverse. Le module s'y refuse tant que trois conditions ne sont pas réunies :
- l'opération à annuler est exécutée — un brouillon se supprime, il ne s'annule pas ;
- son type d'opération déclare un type de retour ;
- aucune annulation n'existe déjà pour elle.
La contre-opération reprend alors le même partenaire et les mêmes lignes, avec la source et la destination inversées, les lots d'origine et les coûts d'origine. Elle est validée et exécutée dans la foulée, et reste rattachée à l'opération qu'elle annule. Les deux documents subsistent : l'histoire n'est pas effacée, elle est complétée.
Annuler un seul lot
Une réception entière n'est pas toujours en cause. Un lot reçu peut être renvoyé seul, à condition que rien n'y ait encore été consommé ; le reste de la réception demeure en stock. Voir Lots et mouvements.
Les refus rencontrés à chaque étape portent un code stable, listé dans Codes d'erreur.
Changelog¶
- 1.0 (18 août 2026) : création du document.