Warenwirtschaft: OPT-6 Bestandswahrheit — Ausschuss in Chargen-Restmengen (Audit H-1, M-5)
- consumedByStockEntry(): chargen-bezogener Ausschuss zählt jetzt als Verbrauch — entsorgte Chargen verschwinden aus Rohstoff-Detail, Produktions-FEFO/Dropdown und AP-27-Batch-Check. - Rohstoff-Detail: Kopfwert aus remainingByIngredient() (identisch zur Index-Seite, inkl. Ausschuss ohne Chargenbezug). - Aggregationen iterieren über die Key-Vereinigung (received ∪ consumed ∪ disposed) — negative Bestände werden nicht mehr als 0 maskiert. - Standort-Aggregation: Chargen-Ausschuss zählt am Standort der Charge (COALESCE), nicht am frei gewählten Formular-Standort. Tests: neuer ChargeDisposalConsistencyTest (5). Suite: 219 grün, 795 Assertions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
46a832f2be
commit
84450385e3
4 changed files with 193 additions and 13 deletions
|
|
@ -77,7 +77,9 @@ class RawMaterialStockController extends Controller
|
|||
|
||||
// AP-27: Chargen je batch_number zusammengeführt (jeder Einkauf bleibt eigener stock_entry).
|
||||
$chargeGroups = $this->inventoryService->chargeGroupsForIngredient($ingredient->id);
|
||||
$remaining = round((float) $chargeGroups->sum('remaining'), 2);
|
||||
// Audit H-1: Kopfwert aus der Gesamt-Aggregation (zieht auch Ausschuss
|
||||
// ohne Chargenbezug ab) — identisch zur Index-Seite, nicht Chargen-Summe.
|
||||
$remaining = $this->inventoryService->remainingByIngredient([$ingredient->id])[$ingredient->id] ?? 0.0;
|
||||
|
||||
$remainingByLocation = $this->inventoryService->remainingByLocationForIngredient($ingredient->id);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue