# Warenwirtschaft — Projektübersicht & Entwicklungsplan > **Stand:** 09.09.2026 > **Status:** Modul ist **live** und in der **Kundentestphase** (Dev-Container mit eingespielter Live-Datenbank inkl. Testdaten). > **Testsuite:** 378 Tests grün (1.554 Assertions, 0 Failures). Dieses Dokument ist der Einstieg in den Ordner. Es skizziert den Gesamtstand, listet die erledigten und die noch offenen Arbeitspakete und verweist auf die Detaildokumente. Die maßgebliche, aktuellste Aufwands-/Leistungssicht ist die [Leistungsübersicht 23.07.2026](03-status-und-vorschlaege/leistungsuebersicht-warenwirtschaft-23-07-2026.md). --- ## Ordnerstruktur | Ordner | Inhalt | |---|---| | [`00-konzept/`](00-konzept/) | Ausgangs-Briefings, Fachkonzept, frühes Feedback (März–April 2026) | | [`01-entwicklungsplaene/`](01-entwicklungsplaene/) | Versionierte Entwicklungspläne — maßgeblich ist die neueste Fassung [`entwicklungsplan-V7-2026-08-26.md`](01-entwicklungsplaene/entwicklungsplan-V7-2026-08-26.md) (V7.0); V6.0 = `entwicklungsplan-aktualisiert-2026-07-06.md` | | [`02-audit/`](02-audit/) | Qualitäts- & Sicherheits-Audit vom 15.07.2026; [Umsetzungsprüfung 08.09.2026](02-audit/umsetzungspruefung-2026-09-08.md) (18 Befunde) [Nachprüfung der Behebung](02-audit/nachpruefung-befundbehebung-2026-09-08.md) (6 Restbefunde) und [Gegenprüfung 09.09.2026](02-audit/gegenpruefung-restbefunde-2026-09-09.md) (2 Randfälle) — alle umgesetzt | | [`03-status-und-vorschlaege/`](03-status-und-vorschlaege/) | Aktuelle Leistungsübersicht, AP-32-Brückenlösung, Vorschlag Deckel-Varianten | | [`screens/`](screens/) | Screenshots / Mockups zu Beständen, Rezeptur-Phasen, Produktion | > Hinweis: Der Ordnername `product management ` trägt ein **abschließendes Leerzeichen**. > Das ist fehleranfällig (Shell/Tooling). Empfehlung: bei Gelegenheit in > `product-management` umbenennen — nicht ohne Rücksprache erledigt, da evtl. > externe Verweise darauf zeigen. --- ## Was das Modul kann (Ist-Stand, live) Eine vollständige Warenwirtschaft im Admin-Bereich des Partnercenters: - **Stammdaten:** Lieferanten (Bestellweg, Lieferzeit, Land-Default DE), Rohstoffe/INCI (Mehrfach-Lieferanten inkl. URL, Qualität, Alternativname, Lagerort Raum/Regal/Fach), Verpackungsartikel, Set-Produkte, konfigurierbare Einstellungen (USt-Sätze, Lieferzeit-Vorlagen, Ausschuss-Gründe). - **Einkauf & Wareneingang:** Bestellungen mit Netto/Brutto-Automatik & Duplizieren, Chargen-/MHD-Erfassung, Zusammenführen gleicher Chargen (FEFO). - **Produktion:** Rezeptur auf Hersteller-Basis mit **Phasen** (Drag & Drop), Chargen-Nr. mit Präfix + Auto-Generierung (`TP1` + `ttmmjj`), neue Produktionsmaske mit **Produktionsergebnis-Repeater** (mehrere Ergebnis-Produkte je Charge, FEFO-Chargenwahl). - **Bestände:** Rohstoffbestand (Restmengen je Charge, Verbrauchsprognose, Kritisch-Warnungen), Produktbestand (revisionssichere Historie, manuelle Buchungen, Dringlichkeits-Sortierung, Kacheln), Ausschuss-Erfassung. - **Shop-Anbindung (API):** automatischer **Bestandsabzug beim Versand** inkl. Set-Auflösung und Storno-Rückbuchung, Protokoll-Seite „API-Bestellungen", Stichtags-Schutz für Altbestellungen. - **Abwicklung:** iPad-optimiertes **Fulfillment-Board** „Bestellungen" mit Versand-Sperre, Sammel-PDF (Lieferscheine/Rechnungen einer Auswahl als ein Dokument). - **DHL-Versand (Brückenlösung):** Label wird im WooCommerce-Shop erzeugt und per Connector 1.5.0 (Base64) ins Partnercenter übernommen; Anzeige von Label-Download + Sendungsnummer. Details: [AP-32-Brückenlösung](03-status-und-vorschlaege/ap-32-brueckenloesung-connector-update.md). --- ## Erledigte Arbeitspakete Alle folgenden APs sind umgesetzt, committet und durch die Testsuite abgedeckt: - **AP-00–AP-12, AP-18, AP-19** — V4.0-Basis: Bugfixes, Stammdaten, Einkauf, Produktion, Bestände, Ausschuss, WaWi-UI, integrierte Doku. - **AP-20** Rohstoffbestand-Filter + „Kein Rohstoffbestand"-Flag (Default „nur Rezeptur"). - **AP-21** INCI-Erweiterungen (Lieferanten-Repeater + URL, Alternativname, Lagerort-CRUDs). - **AP-22** Produktbestand-Erweiterungen (Sortierung, Kacheln, Verbrauch/Monat). - **AP-23** Rezeptur-Phasen (Drag & Drop). - **AP-24** Chargen-Nr.-Präfix mit Auto-Generierung. - **AP-25** Lieferbestand „Wieder lieferbar ab"-Datum. - **AP-26** Ausschuss-Gründe konfigurierbar. - **AP-27** Wareneingang: Charge zusammenführen (FEFO). - **AP-28** Neue Produktions-Maske + Produktionsergebnis. - **AP-31** Löschen: Soft-Delete + Abhängigkeitsprüfung (`DeletionGuard`). - **AP-13** Shop-Bestandsabzug bei Versand (Sets, Gegenbuchungen, Stichtags-Schutz) + API-Protokoll. - **AP-33a/b** Fulfillment-Board + Sammel-Dokumente. - **OPT-1–OPT-4** Code-Optimierungen (N+1-Fix, Settings-CRUD-Basisklasse, Pagination, `show()`-Refactoring). - **OPT-6–OPT-9** Behebung aller Audit-Befunde (siehe unten). ### Audit 15.07.2026 — vollständig abgearbeitet 5 hohe, 10 mittlere, 16 niedrige Befunde; alle behoben oder per Kundenentscheid gelöst. Kern-Fixes: Ausschuss in Chargen-Restmengen (H-1), Härtung gegen Doppel-/Negativbuchungen (H-2/H-3), transaktionssicherer Rezeptur-Neuaufbau inkl. Phasen (H-4/H-5), CSRF-/AuthZ-Härtung (M-2/3/6/7/10). Audit bestätigte: solide Architektur, kein SQLi/XSS, kein falscher Plan-Status. Details: [Audit-Bericht](02-audit/audit-bericht-15-07-2026.md). ### Review vor Live-Release (20.07.2026) — abgefangene Risiken - Stichtags-Schutz auf unveränderliches Flag `sale_stock_exempt` umgestellt (verhinderte rückwirkenden Abzug bei Storno+Wiederversand von Altbestellungen). - Auto-Storno im Mahnwesen über zentralen `OrderStatusService::setShipped()` geführt (verhinderte zahlbare Provision auf versendete, nie bezahlte Bestellung). - AP-32-Brücke auf Base64/Connector 1.5.0 gehärtet (kein 403/SSRF/Timeout mehr). --- ## Testphasen-Feedback 26.08.2026 → Plan V7.0 Aus der laufenden Testphase kam eine neue Feedback-/Bug-Runde. Alle Punkte sind am Code **und** an der Live-DB verifiziert und in einen Umsetzungsplan überführt: **[Entwicklungsplan V7.0](01-entwicklungsplaene/entwicklungsplan-V7-2026-08-26.md)** (9 bestätigte Bugs + Erweiterungen, ca. 15–26 PT, AP-34…AP-51). Wichtig: die WooCommerce-Ampel ist voraussichtlich **kein** Partnercenter-Fehler, sondern shopseitig (Status-Cron/Auth). Rohfassung des Feedbacks: [entwicklungsplan-aktualisiert-2026-08-26.md](01-entwicklungsplaene/entwicklungsplan-aktualisiert-2026-08-26.md). Offene Klärungspunkte (D-1…D-6) im Plan blockieren den Start einzelner Pakete. **Stand 09.09.2026:** AP-34…AP-51 sind umgesetzt (siehe Umsetzungsstand in V7.0); Kundennachträge **AP-52** (Verpackungs-Vorschau in der Produktion mit Bestand, Differenz und „Lagerort", einheitlich mit der INCI-Tabelle) und **AP-53** (Gramm-Mengen mit drei Nachkommastellen in Produktion, Wareneingang und Ausschuss) ebenfalls umgesetzt; AP-47-Häkchen in die Karte „Warenwirtschaft" verschoben und ausformuliert („In der Produktion anzeigen"). ## Umsetzungsprüfung 08.09.2026 → Nacharbeit Die unabhängige Prüfung der V7-Umsetzung ([umsetzungspruefung-2026-09-08.md](02-audit/umsetzungspruefung-2026-09-08.md)) fand 18 Befunde (5×P1, 11×P2, 2×P3) — u. a. Entwürfe blockierten Chargen, Entwurfszeilen gingen verloren, Rohstoffe in zwei Phasen wurden beim Wiederöffnen vervielfacht, historische Verpackungs-Snapshots wurden überschrieben, Versand ohne Zahlungsfreigabe und Einkaufspreise für Copyreader. **Alle 18 Befunde sind umgesetzt** (je ein Commit mit Regressionstest, Abschnitt 9 des Berichts). Eine anschließende [Nachprüfung](02-audit/nachpruefung-befundbehebung-2026-09-08.md) fand sechs Restfehler (N-01…N-06: Entwurfsmenge ohne Charge, Phasenverlust beim Artikelspeichern, Chargensplit vs. Snapshot, Vorschau vs. Snapshot, Alt-Ausschuss ohne Charge, ml-Kopie im Bearbeiten), die ebenfalls behoben sind (Abschnitt 6 dort); die Gegenprüfung vom 09.09.2026 fand zu N-02/N-04 zwei Randfälle (R-01 stabile Phasen-IDs, R-02 leerer Snapshot), ebenfalls behoben. Drei neue Migrationen (`2026_09_08_*`) sind auf der Dev-DB (Live-Kopie) gelaufen und müssen beim Deploy auf der Live-DB ausgeführt werden. Weiterhin offen: die im Bericht (Abschnitte 4.3/4.4/5) genannten nachgelagerten Pakete, Optimierungen, Connector-Rollout v1.6.0 und die Browser-/iPad-Abnahme. ## Offene / nachgelagerte Pakete (nach Kundentestphase) Kundenentscheid 16.07.2026: erst nach der Testphase. Grober Restaufwand **ca. 28–42 PT**. | Paket | Inhalt | Schätzung | Abhängigkeit | |---|---|---|---| | **AP-32 (voll)** | DHL-Etiketten direkt im System per API erstellen | 3–5 PT | Braucht Kundenklärung: DHL-Geschäftskundenkonto (EKP), Versandprodukte, Paketmaße/-gewichte, Druck-Setup, Retouren-/Zolllabel (CH als Drittland) | | **AP-33c** | Etiketten-Stapeldruck + Automatik-Option | 1 PT | mit AP-32 | | **AP-14** | Audit-Trail (lückenlose Änderungshistorie) | 2–3 PT | — | | **AP-16** | 2-Faktor-Authentifizierung für Admins | 2–3 PT | sinnvoll vor AP-15 | | **AP-15** | Blockbasierte Rechte (sehen/bearbeiten je Bereich) | 4–6 PT | nach AP-16 | | **AP-17** | Zentrale WaWi-Einstellungsseite | 1–2 PT | — | **Entfällt:** OPT-5 (Horizont-Filter serverseitig) — clientseitig ausreichend (Kundenentscheid 06.07.). ### Neue Anforderung in Klärung — Deckel-Varianten (White Label) Deocreme & Co.: eine Charge, danach unterschiedliche Deckel-Farben nach Bedarf. Analyse ergab: Chargen-Szenario ist bereits abgedeckt (AP-28). **Empfehlung V1** (kein Umbau) — nur zwei kleine optionale Ergänzungen: Deckel als Verpackungsartikel führen (OPT-V1a, 0 Entwicklungstage) und Deckelfarbe in der Packliste des Boards anzeigen (OPT-V1b, ~0,5–1 Tag). Varianten-Bestand je Farbe (V2, 3–5 PT) nur, falls fertig konfektionierte Tiegel je Farbe gezählt werden sollen. Offene Kundenfragen im Dokument. Details: [Vorschlag Deckel-Varianten](03-status-und-vorschlaege/vorschlag-deckel-varianten-produktion-23-07-2026.md). --- ## Deployment-Checkliste (Stand 09.09.2026, Paket V7.0 + Nachbesserungen + AP-52/AP-53) 1. **Code:** `master` bis Commit der Doku-Aktualisierung 09.09.2026 (siehe `git log`). 2. **Migrationen:** `php artisan migrate` — vier neue Migrationen `2026_09_08_100000` (batch_key, stock_entry_id nullable), `2026_09_08_110000` (recipe_phase_id), `2026_09_08_120000` (fill_weight decimal), `2026_09_09_100000` (AP-53: Chargenverbrauch, Bestell-/Eingangsmenge, Ausschussmenge → decimal(12,3)). Alle auf der Dev-DB (Live-Kopie, MySQL) am 09.09.2026 erfolgreich ausgeführt; bestehende Zeilen bleiben unverändert (neue Spalten NULL, dritte Nachkommastelle 0). 3. **In-App-Doku:** `resources/docs/hinweise.md` (Stand 09.09.2026) und `resources/docs/testleitfaden.md` (Version 3.1, Teil C) sind aktualisiert und werden ohne Build ausgeliefert (Einstellungen → Hinweise / Leitfaden). 4. **Kein Frontend-Build nötig:** alle Änderungen liegen in Blade/Inline-JS; Laravel Mix ist nicht betroffen. 5. **Nach dem Deploy (Pflicht):** `php artisan optimize:clear` und anschließend `php artisan route:cache` / `config:cache` / `view:cache` neu aufbauen. Live cached Routen — ein veralteter Route-Cache führte am 09.09.2026 zu einem 500er unter `/admin/inventory/general` (`Route [admin.inventory.stock-movement-reasons.create] not defined`, Route aus AP-48 seit 28.08.2026 im Code). Danach Testleitfaden Teil C mit dem Kunden durchgehen (insb. Abschnitte 19–21 auf dem iPad). 6. **Getrennt davon:** Connector-Plugin **v1.6.0** im WooCommerce-Shop einspielen (AP-34/AP-38), siehe `dev/partnercenter-api/README.md`. > Die In-App-Doku unter `resources/docs/` ist die **maßgebliche Nutzerdokumentation**; `docs/testleitfaden-wawi-2026-07-06.md` ist die archivierte Version 1. ## Bekannte, bewusst akzeptierte Grenzen - **Parallelität** ist per Pest (SQLite) nicht belastbar testbar; die entscheidenden Übergänge (Board-Status, Wareneingang, Ausschuss, Produktion) prüfen ihre Vorbedingungen seit F-16 innerhalb von `lockForUpdate()`-Transaktionen. Ein MySQL-Integrationstest mit zwei Verbindungen steht weiterhin aus (geringes Risiko im Ein-Personen-Admin-Betrieb). - **Self-Shipping** durch Partner erzeugt bewusst keinen Bestandsabzug (Partner versendet aus eigenem Lager). - Board-gesetzte Versandstatus dürfen nicht von der Detailseiten-Automatik überschrieben werden (Sperr-Flag `shipped_status_locked`) — in der Hinweise-Doku hinterlegt. - Bestellpositionen tragen keine Attribut-/Varianten-Dimension (relevant nur für Deckel-Varianten V2).