fix(stock): plafond strict capacite (stock <= 100%) sur toutes les voies d'ecriture #116

Merged
Corentin merged 1 commit from fix/stock-over-capacity-clamp into dev 2026-06-29 12:46:50 +02:00
Owner
No description provided.
fix(stock): plafond strict capacite (stock <= 100%) sur toutes les voies d'ecriture
All checks were successful
CI / secret-scan (pull_request) Successful in 11s
CI / static-tests (push) Successful in 56s
CI / js-tests (push) Successful in 40s
CI / php-lint (pull_request) Successful in 28s
CI / static-tests (pull_request) Successful in 1m1s
CI / js-tests (pull_request) Successful in 30s
CI / secret-scan (push) Successful in 12s
CI / php-lint (push) Successful in 24s
c5dbe378be
Un ingredient pouvait afficher > 100 % : restock() ajoutait des packs sans plafond (ex. 350/300 = 117 %). Capacite = plafond STRICT (decision metier).

- clampToCapacity() : source unique du plafond (borne haute ; survente negative preservee).
- restock / inventoryCount / create : ecriture absolue plafonnee ; le stock_movement porte le delta REELLEMENT applique (reconcilie avec le ledger RG-T08).
- cancel() re-credit : meme clamp (cas vente -> restock a fond -> annulation).
- validateThresholds : la capacite ne peut pas tomber sous le stock courant (plafond cote DENOMINATEUR ; refus + invitation a inventorier d'abord).
- Migration 0008 : normalise les lignes deja > capacite (idempotent).

Tests : clamp unitaire + restock/inventaire/create (vraie base) + re-credit annulation + refus capacite<stock. 474 unit / 49 integ / PHPStan L6 verts. Revue adversariale bmad-compliance : must_fix garde denominateur integre.
Corentin scheduled this pull request to auto merge when all checks succeed 2026-06-29 12:44:34 +02:00
Sign in to join this conversation.
No reviewers
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AcadeNice/corentin_wakdo!116
No description provided.