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 enregistrer tout flux physique comme mouvement de stock
stock_movedaté, horodaté, typé (entrée/sortie/transfert) et rattaché à son document d’origine. » - Justification : convergence (
pirates:analyses/transversales/matrice-fonctionnelle-globale.md §3stock_move/§5). Odoostock.move; Dolibarrllx_stock_mouvement; modèle de mouvements équivalent observé chez un ERP propriétaire du marché des PME industrielles. - Critères d’acceptation :
- CA-01 — Chaque mouvement porte date, quantité, article, localisation source/cible et origine. La date métier peut être antérieure à l’enregistrement pour refléter le mouvement physique réel ; l’horodatage réel de saisie est conservé séparément et non modifiable. La politique de rétroactivité est choisie par un paramètre de l’organisation : A, date de verrouillage explicite fixée par un utilisateur habilité, interdisant tout nouveau mouvement daté à cette date ou avant ; B, délai glissant paramétrable en nombre entier de jours calendaires positif ou nul : date métier entre le jour courant moins ce nombre de jours et le jour courant, bornes incluses, dans le fuseau de l’organisation ; week-ends et jours fériés inclus, 0 limité au jour courant, valeurs négatives ou non entières refusées (DEC-0238) ; C, aucune limite temporelle supplémentaire. Ce choix est commun à l’organisation, pas par utilisateur ou mouvement. Les trois modes conservent les autres contrôles métier, l’audit et l’horodatage réel immuable ; A ne vaut pas clôture comptable. Avant le premier mouvement, choix obligatoire sans présélection : date renseignée pour A, durée renseignée pour B, aucune borne à saisir pour C. Sans choix ou valeur requise, le premier enregistrement est bloqué avec signalement du paramétrage manquant, y compris pour un mouvement issu d’un document métier. Aucune valeur implicite ni répétition par utilisateur une fois configuré (DEC-0237). Le délai glissant est réglé par DEC-0238 ; un utilisateur habilité peut durcir ou assouplir la politique et ses paramètres. Si des dates interdites redeviennent admissibles, avertissement sur l’effet possible des nouvelles saisies sur l’historique et confirmation explicite avant application ; sans confirmation, aucun assouplissement. Les changements sont audités (auteur, horodatage, avant/après), sans modification automatique des mouvements existants ni contournement des autres contrôles métier (DEC-0239). La date des mouvements correcteurs est fixée par DEC-0240 et CA-03 ; QF-0054 est fonctionnellement résolue (DEC-0236). Le principe de date métier antérieure est acquis par DEC-0235. La localisation du stock identifie l’entrepôt seul ou l’entrepôt et son emplacement interne, selon le cas ; l’absence d’emplacement interne n’interdit pas un mouvement sur du stock localisé directement dans l’entrepôt (DEC-0221).
- CA-02 — Transferts inter-entrepôts en deux mouvements liés. La préparation d’expédition permet en option de déplacer les produits préparés vers un autre dépôt (DEC-0230), sans valoir départ client ni contourner les réservations bloquantes. Si l’option est activée, le dépôt de destination doit être choisi avant confirmation de la fin de préparation ; cette confirmation enregistre le transfert par deux mouvements liés. La réservation accompagne les produits et reste affectée à la même préparation, sans remise dans le disponible ni augmentation du total de stock. Sans option, les produits restent dans leur dépôt d’origine ; le simple choix de l’option ou du dépôt ne déclenche rien (DEC-0231). L’annulation de la préparation libère les réservations non expédiées dans le dépôt actuel, sans retour automatique au dépôt d’origine ni obligation de retour pour terminer l’annulation. Le transfert déjà réalisé reste tracé ; un déplacement ultérieur nécessite un transfert distinct (DEC-0232).
- CA-03 — Historique de stock reconstituable à une date donnée. Un mouvement enregistré est non modifiable et non supprimable. Son annulation crée un mouvement inverse lié sans effacer l’original ; sa correction passe par cette annulation puis un nouvel enregistrement correct, relié à la chaîne de correction. Original, contre-passation et correction restent consultables dans l’historique, avec datation, horodatage, origine et audit. Ce mécanisme ne contourne ni les réservations bloquantes ni les contrôles du stock déjà consommé, et ne vaut pas modification ou annulation implicite du document d’origine. Le principe de date métier antérieure est acquis par DEC-0235 ; la politique est paramétrable par organisation selon DEC-0236 et CA-01 ; le choix initial sans présélection est acquis par DEC-0237 ; le délai glissant est réglé par DEC-0238 ; les changements dans les deux sens sont réglés par DEC-0239 ; l’inverse neutralise l’original à sa date métier, le nouvel enregistrement porte la date réelle du flux. En cas d’erreur de dépôt sans erreur de date, les deux reprennent la date d’origine ; en cas d’erreur de date, l’inverse reprend la date erronée et le nouveau mouvement la date réelle. Toutes les dates nécessaires doivent être autorisées par la politique en vigueur, sinon la correction est bloquée, sans report au jour courant ni assouplissement automatique. Les horodatages réels de saisie et les liens sont conservés. Un déplacement physique effectué aujourd’hui reste un nouveau transfert daté d’aujourd’hui (DEC-0240). QF-0054 est fonctionnellement résolue (DEC-0234).
- Requiert : EXG-04-001.