- 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>
- Chargen-Existenz-Check beim Buchen (JSON-Endpoint batch-check): Hinweis
„Charge bereits im Haus" + Vorbelegung MHD/Qualität aus dem letzten Eingang
- Rohstoffbestand-Detail: Chargen je batch_number summiert
(InventoryService::chargeGroupsForIngredient), Einkäufe als Unterzeilen
- Produktion: Charge-Dropdown je Charge mit Summen-Rest (batches im
Recipe-Payload), Verbrauch wird per expandBatchLines FEFO auf die
Einzel-Einkäufe der Charge verteilt; Service-API bleibt je stock_entry
- Jeder Einkauf bleibt eigener stock_entry (Preis/Datum/Audit)
- Hinweise-Doku + Plan V6.0 §6 fortgeschrieben
Tests: StockEntryChargeMergeTest (7 neu); Suite 193 grün, 698 Assertions
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- ingredients.exclude_from_stock (Checkbox im INCI-Formular, z. B. Allergene):
erscheint nie im Rohstoffbestand und nicht im Kritisch-Badge
- Rohstoffbestand-Uebersicht: Umschalter "Alle" / "Nur aus Herstellerrezepturen"
(?scope=recipe, nutzt scopeUsedInActiveRecipes aus AP-21)
- Fix: AP-21-Migrationen hatten identischen Timestamp (add_storage lief vor
create_storage und scheiterte auf MySQL am FK) - umbenannt auf 120753,
Teilreste bereinigt, Migrationen sauber ausgefuehrt
- Hinweise-Doku fortgeschrieben
Tests: RawMaterialStockTest +2 (volle Suite 172 gruen, 624 Assertions)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>