Contexte du document
Stock = pivot de tous les flux (pirates:analyses/transversales/matrice-fonctionnelle-globale.md §4) :
consommé/produit par l’OF, réceptionné par l’achat, expédié par la vente. Triple tête de
référence : ERPNext/Odoo (valorisation multi-méthodes) et un ERP propriétaire du marché des PME
industrielles (colisage UC/UM + SSCC). Objets pivots : product/item, warehouse,
stock_move, lot, serial_number. Aucune reprise de code des ERP étudiés.
Exigence détaillée
- Priorité : Must
- Domaine : DOM-04
- Énoncé : « Elena doit gérer bons de réception et bons d’expédition, avec incoterms, générant les mouvements de stock correspondants et liés aux commandes. »
- Justification : convergence (
pirates:analyses/transversales/matrice-fonctionnelle-globale.md §2). DolibarrmodExpedition/modReception+ incoterms ; Odoodelivery+ routes multi-étapes. - Critères d’acceptation :
- CA-01 — Expédition partielle avec reliquat. Le lancement de la préparation de l’expédition déclenche la réservation du stock physique (DEC-0222) ; une commande validée ne garantit pas une réservation avant ce lancement. La quantité réservée est protégée contre sa réservation ou sa consommation par une autre opération ; sa réaffectation nécessite une libération explicite préalable (DEC-0223). En cas de disponibilité insuffisante, l’écran de sélection permet de choisir : A, proposer les quantités disponibles et manquantes puis demander une confirmation explicite du lancement partiel ; B, bloquer le lancement tant que la totalité demandée n’est pas disponible, avec possibilité de modifier explicitement les quantités sélectionnées avant de relancer ; C, lancer sur le disponible avec avertissement des manquants, sans confirmation supplémentaire du partiel (DEC-0224). Dans tous les modes, les manquants restent visibles et non réservés, sans abandon implicite du reste à livrer ; si rien n’est disponible, aucune préparation physique ne démarre. C ne déclenche pas de préparation avant l’action de lancement. Le dernier mode utilisé est mémorisé par utilisateur et présélectionné, visible et modifiable à chaque nouvelle sélection, sans affecter les autres utilisateurs (DEC-0227). La reprise de C n’ajoute pas de confirmation du partiel et ne lance rien à l’ouverture. À la première utilisation sans historique, aucun mode n’est présélectionné ; un choix explicite est obligatoire avant le lancement, qui est refusé sans mode choisi (DEC-0228). L’annulation autorisée de la préparation, avec effet annoncé et confirmation, libère ses réservations non expédiées dans la même action et conserve la trace des deux effets (DEC-0229). Elle n’annule ni la commande ni son reste à livrer et ne remet pas en stock les quantités déjà expédiées. La validation du bon d’expédition constate le départ et déclenche conjointement la sortie du stock physique et la fin de réservation des quantités expédiées, sans remise dans le disponible (DEC-0230). Une préparation terminée mais non expédiée reste réservée. Le transfert optionnel est enregistré à la confirmation de fin de préparation, destination choisie et réservation maintenue (DEC-0231, EXG-04-002/CA-02). Après annulation de la préparation, les réservations non expédiées sont libérées dans le dépôt actuel, sans transfert inverse automatique ; les mouvements déjà réalisés sont conservés, tout déplacement ultérieur est un transfert distinct (DEC-0232). L’articulation disponible/réservé/attendu est réglée par DEC-0233 ; QF-0053 est fonctionnellement résolue ; le principe d’abandon du reliquat est fixé par DEC-0247. Le reste à livrer est conservé par défaut ; un utilisateur habilité peut l’abandonner par une action explicite, confirmée et tracée, sans expédition fictive ni modification des livraisons déjà réalisées. La portée de l’abandon est fixée par DEC-0250 : sélection explicite de lignes et de quantités, limitée au reste à livrer, sans nouveau traitement d’une quantité déjà livrée ou déjà abandonnée ni dépassement ; le reliquat non sélectionné reste dû. La sélection est présentée avant confirmation. L’abandon ne libère ni ne réserve de stock et ne porte que sur des quantités non réservées : une quantité déjà réservée ou engagée doit d’abord être libérée par une action explicite et distincte (DEC-0251, l’abandon n’annulant ni ne suspendant aucune préparation. La règle est annoncée avant confirmation et la part non abandonnable est signalée sans effet implicite sur les réservations. La fin de la part livraison est constatée automatiquement dès qu’il ne reste ni reste à livrer ni préparation à traiter, en distinguant « soldée » (partie livrée, reste abandonné) de « soldée sans livraison » (tout abandonné), sans annulation ni clôture financière (DEC-0252). Les quantités abandonnées sortent définitivement du reste facturable et aucune écriture n’est produite automatiquement sur les factures, acomptes ou avoirs existants ; la régularisation éventuelle passe par les actions explicites déjà acquises (DEC-0253). QF-0057 est résolue fonctionnellement ; aucune libération ni modification financière automatique n’est déduite de ce principe. La préparation propose une option de transfert des produits préparés vers un autre dépôt, distincte du départ client, selon EXG-04-002/CA-02 (DEC-0230).
- CA-02 — Incoterms sur le document logistique.
- CA-03 — Lien bidirectionnel expédition ↔ commande de vente.
Pour les réceptions fournisseurs, le mouvement entrant correspond à la quantité effectivement acceptée, y compris l’excédent confirmé explicitement par un utilisateur habilité selon EXG-02-001/CA-03 et DEC-0244. L’écart est tracé sans augmentation automatique de la quantité commandée. Le suivi des réceptions de la commande se termine automatiquement lorsque chaque ligne est entièrement reçue ou son reliquat explicitement soldé, sans mouvement de stock supplémentaire ni clôture financière implicite ; reçu et soldé restent distingués (DEC-0246).
- Dépendances : EXG-04-002, EXG-01-003 (commande), EXG-02-001 (réception achat).