gruene-seele/tests/Feature
Kevin Adametz abd202a02e Warenwirtschaft: AP-43 — Produktion zwischenspeichern (Entwurf) + „abschließen"
Der Speicher-Button heißt jetzt „Produktion abschließen"; daneben gibt es
„Zwischenspeichern (Entwurf)". Ein Entwurf sichert den Stand ohne Pflichtfeld-
und ohne Bestandsprüfung und bucht KEINEN Bestand (Roh-/Produkt-/Verpackung).
Erst „abschließen" prüft vollständig und bucht.

- Migration: productions.status (default 'completed'; Bestand ist bereits gebucht).
- Production-Model: STATUS_DRAFT/COMPLETED, isDraft(), scopeBooked().
- InventoryService: Entwürfe fallen aus allen Verbrauchs-/Bestandsjoins heraus
  (status != draft an den 4 productions-Joins).
- ProductionService store()/updateProduction() bekommen $draft: Entwurf
  überspringt Rezeptur-/Mengen-/Bestandsprüfung + Buchungen, sichert nur
  vollständige Chargen-Zeilen (filterCompleteLines) und die angegebenen Outputs.
  Ein abgeschlossene Produktion kann NICHT zurück in den Entwurf (sonst
  verwaisen die Buchungen) — Guard wirft ValidationException.
- StoreProductionRequest: save_mode=draft => nur Kopfdaten Pflicht, Chargen/
  Ergebnis optional; validatedPayload filtert unvollständige Zeilen/Outputs.
- Controller: Entwurf löst Chargen tolerant auf (nicht auflösbare Chargen werden
  übersprungen, Entwurf ist immer speicherbar) und leitet zur Bearbeitung zurück.
- Views: create/edit „abschließen" + „Zwischenspeichern"-Button (nur solange
  Entwurf); Entwurf-Badge in Liste + Bearbeiten-Kopf.

Tests: 5 neue (kein Produktbestand, kein Rohstoffverbrauch, Abschluss bucht,
Rück-Entwurf verboten, HTTP-Entwurf ohne Ergebnis ok / Abschluss erzwingt
Ergebnis). Migration auf Dev-/Live-DB. Suite 336 grün.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-28 09:59:42 +00:00
..
ApiOrderLogTest.php Warenwirtschaft: AP-34 — Varianten-Artikelnummer korrekt zuordnen 2026-08-28 09:32:51 +00:00
BatchPrefixTest.php Warenwirtschaft: AP-24 Chargen-Nr.-Praefix auf Produktebene 2026-07-06 12:09:41 +00:00
ChargeDisposalConsistencyTest.php Warenwirtschaft: OPT-6 Bestandswahrheit — Ausschuss in Chargen-Restmengen (Audit H-1, M-5) 2026-07-15 12:42:46 +00:00
DeliveryTimeSettingsTest.php Warenwirtschaft: AP-00 bis AP-08 + aktualisierter Entwicklungsplan 2026-06-02 16:30:42 +00:00
DisposalReasonSettingsTest.php Warenwirtschaft: Anforderungsrunde 12.06. — Plan V5.0 + AP-26/AP-25/AP-22 2026-06-12 16:28:45 +00:00
ExampleTest.php Warenwirtschaft: OPT-1 Quick Wins + Entwicklungsplan V6.0 2026-07-06 09:54:24 +00:00
IngredientActiveRecipeFilterTest.php Warenwirtschaft: AP-21 INCI-Erweiterungen 2026-07-06 11:36:28 +00:00
IngredientDensityTest.php Warenwirtschaft: AP-42 — Rohstoff-Dichte (g/ml) für ml-Erfassung im Wareneingang 2026-08-28 09:05:07 +00:00
IngredientOrderFieldsTest.php Warenwirtschaft: AP-50 — Lagerort löschbar (Buchungen übernehmen) + Köln als Default 2026-08-28 09:17:28 +00:00
IngredientSupplierFilterTest.php Warenwirtschaft: AP-49 — INCI-Lieferanten-Dropdown nur Rohstoff-Lieferanten 2026-08-28 09:13:42 +00:00
InventoryDeletionTest.php Warenwirtschaft: AP-50 — Lagerort löschbar (Buchungen übernehmen) + Köln als Default 2026-08-28 09:17:28 +00:00
InventoryNoticesTest.php Warenwirtschaft: Menüpunkt „Leitfaden" (Einstellungen) rendert testleitfaden.md 2026-07-07 10:14:42 +00:00
InventoryPhase2Test.php 13-05-2026 Waren Wirtschaft 2026-05-13 18:09:20 +02:00
InventoryPhase3Test.php 13-05-2026 Waren Wirtschaft 2026-05-13 18:09:20 +02:00
InventoryUrlFieldsTest.php Warenwirtschaft: AP-00 bis AP-08 + aktualisierter Entwicklungsplan 2026-06-02 16:30:42 +00:00
LocationDeletionTest.php Warenwirtschaft: AP-50 — Lagerort löschbar (Buchungen übernehmen) + Köln als Default 2026-08-28 09:17:28 +00:00
LogisticMailTest.php Warenwirtschaft: Logistik-Mail regeneriert auch fehlende Rechnungs-PDF 2026-07-16 13:19:12 +00:00
OrderFulfillmentTest.php Warenwirtschaft: Review-Fix — Abwicklungs-Board (Copyreader-Links, 500er-Cap, Details) 2026-07-20 12:40:03 +00:00
ProductionDraftTest.php Warenwirtschaft: AP-43 — Produktion zwischenspeichern (Entwurf) + „abschließen" 2026-08-28 09:59:42 +00:00
ProductionHardeningTest.php Warenwirtschaft: N-1 — Chargen-Gruppierung je Lieferant (Kundenentscheid 15.07.2026) 2026-07-15 13:25:35 +00:00
ProductionManufacturerRecipeTest.php Warenwirtschaft: AP-28 Neue Produktions-Maske + Produktionsergebnis 2026-07-06 14:02:54 +00:00
ProductionOutputTest.php Warenwirtschaft: AP-28 Neue Produktions-Maske + Produktionsergebnis 2026-07-06 14:02:54 +00:00
ProductionPhase5Test.php Warenwirtschaft: AP-09 bis AP-13 (Produktbestand, Set-Produkte, Ausschuss, Konzepte) 2026-06-03 11:04:22 +00:00
ProductionScalingTest.php Warenwirtschaft: AP-45 + AP-47 — Verpackung aus Produktionsergebnis, Produktionsrelevant-Flag 2026-08-28 08:38:59 +00:00
ProductOutOfStockTest.php Warenwirtschaft: Anforderungsrunde 12.06. — Plan V5.0 + AP-26/AP-25/AP-22 2026-06-12 16:28:45 +00:00
ProductPhase0Test.php April 2026 waren Wirtschaft Feedback 2026-04-10 17:14:38 +02:00
ProductPhase1Test.php April 2026 waren Wirtschaft Feedback 2026-04-10 17:14:38 +02:00
ProductPhase4Test.php 13-05-2026 Waren Wirtschaft 2026-05-13 18:09:20 +02:00
ProductPhase51Test.php Warenwirtschaft: OPT-9 AuthZ/CSRF-Härtung (Audit M-2, M-3, M-6, M-7, M-10) 2026-07-15 12:55:11 +00:00
ProductSetTest.php Warenwirtschaft: OPT-9 AuthZ/CSRF-Härtung (Audit M-2, M-3, M-6, M-7, M-10) 2026-07-15 12:55:11 +00:00
ProductStockTest.php Warenwirtschaft: Anforderungsrunde 12.06. — Plan V5.0 + AP-26/AP-25/AP-22 2026-06-12 16:28:45 +00:00
ProductWpNumberTest.php Warenwirtschaft: WP-Nummer aus Artikelnummer ableiten, wenn leer 2026-07-21 09:17:53 +00:00
RawMaterialStockTest.php Warenwirtschaft: AP-37 — Rohstoffbestand „Enthalten in" nicht mehr doppelt 2026-08-27 13:56:56 +00:00
RecipePhaseTest.php Warenwirtschaft: AP-36 — Rezeptur-Textphasen ohne Rohstoffe anzeigen 2026-08-27 13:59:51 +00:00
RecipeRobustnessTest.php Warenwirtschaft: OPT-8 Rezeptur-Robustheit (Audit H-4, H-5, M-8, N-11/12/14) 2026-07-15 12:48:55 +00:00
SalesShippedStatusTest.php Warenwirtschaft: SalesController::store() gehärtet (Validierung, Transaktion, Lock) 2026-07-16 07:44:21 +00:00
SaleStockDeductionTest.php Warenwirtschaft: Review-Fix — Mahnwesen-Storno über OrderStatusService::setShipped 2026-07-20 09:47:20 +00:00
StockDisposalTest.php Warenwirtschaft: OPT-1 Quick Wins + Entwicklungsplan V6.0 2026-07-06 09:54:24 +00:00
StockEntryChargeMergeTest.php Warenwirtschaft: N-1 — Chargen-Gruppierung je Lieferant (Kundenentscheid 15.07.2026) 2026-07-15 13:25:35 +00:00
StockEntryPriceTest.php Warenwirtschaft: OPT-9 AuthZ/CSRF-Härtung (Audit M-2, M-3, M-6, M-7, M-10) 2026-07-15 12:55:11 +00:00
StockMovementReasonTest.php Warenwirtschaft: AP-48 — Produktbestand-Buchungsgründe pflegbar, getrennt Ein/Aus 2026-08-28 09:22:32 +00:00
StorageAssignmentTest.php Warenwirtschaft: AP-51 — Lagerplatz-Felder für Produkte & Verpackung 2026-08-28 09:46:40 +00:00
StorageSettingsTest.php Warenwirtschaft: AP-31 Löschen mit Soft-Delete + Abhängigkeitsprüfung 2026-07-15 12:31:11 +00:00
SupplierDetailsTest.php Warenwirtschaft: AP-00 bis AP-08 + aktualisierter Entwicklungsplan 2026-06-02 16:30:42 +00:00
SupplierOrderFieldsTest.php Warenwirtschaft: AP-00 bis AP-08 + aktualisierter Entwicklungsplan 2026-06-02 16:30:42 +00:00
TaxRateSettingsTest.php Warenwirtschaft: AP-00 bis AP-08 + aktualisierter Entwicklungsplan 2026-06-02 16:30:42 +00:00
WpLabelTransferTest.php Warenwirtschaft: Review-Fix — AP-32-Label als Base64 übertragen (Connector 1.5.0) 2026-07-20 10:06:39 +00:00