Warenwirtschaft: einheitliches UI-Design (AP-19)

- Zentrale, wiederverwendbare Design-Partial wawi-ui.blade.php (gescoptes Inline-CSS, kein Build noetig)
- Bausteine: Seitenkopf, Kennzahlen-Kacheln, Karten, Toolbar/Suche, aufgeraeumte Tabellen, Status-Pills, Datenblatt-Definitionsliste, Name-Zelle mit fester Icon-Spalte, Leer-Zustaende
- Umgestellt: alle Uebersicht-/Listen- und Detailseiten unter admin/inventory
- Responsive: Detail-Datenblaetter brechen unter 768px gestapelt um (Label oben, Wert linksbuendig); Icon-Spalte verhindert Versatz bei Zeilenumbruch
- Entwicklungsplan um AP-19 + UI-Konvention ergaenzt

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin Adametz 2026-06-03 13:09:55 +00:00
parent 3ee2d756e9
commit a8f6fef38e
21 changed files with 1609 additions and 955 deletions

View file

@ -508,7 +508,7 @@ Pro `shopping_order_item` Produkt laden:
## 6. Empfohlene Sofort-Reihenfolge (nächste Schritte)
**Erledigt:** AP-00, AP-01, AP-04 (+ AP-04.1), AP-05, AP-06 (+ Nachtrag), AP-07 (+ AP-07.1), AP-08, AP-09 (+ AP-09.1), AP-02 (Sets via Pivot), AP-03 („Nicht vorrätig"), AP-10 (Rohstoffbestand), AP-11 (Produktbestand + Historie), AP-12 (Ausgang / Ausschuss), AP-18 (Platzhalter, laufend zu pflegen).
**Erledigt:** AP-00, AP-01, AP-04 (+ AP-04.1), AP-05, AP-06 (+ Nachtrag), AP-07 (+ AP-07.1), AP-08, AP-09 (+ AP-09.1), AP-02 (Sets via Pivot), AP-03 („Nicht vorrätig"), AP-10 (Rohstoffbestand), AP-11 (Produktbestand + Historie), AP-12 (Ausgang / Ausschuss), AP-18 (Platzhalter, laufend zu pflegen), AP-19 (UI-Vereinheitlichung Warenwirtschaft).
**➡️ Hier geht es weiter:**
1. **AP-13** (Shop-Anbindung: Bestandsabzug beim Versand inkl. Sets) **Entwicklungskonzept liegt vor** (siehe AP-13 in §4). Kernbefund: Bestellungen liegen bereits im System (`shopping_orders`/`shopping_order_items`, Mapping über `products.wp_number`), Versandstatus wird zentral in `SalesController@store` gesetzt → Abzug kann ohne neue Tabelle auf der AP-11-Infrastruktur aufsetzen. **Vorab nur noch zu bestätigen:** Szenario A (Versand wird im Backend gebucht empfohlen, kein neuer Woo-Eingriff) vs. Szenario B (WooCommerce meldet Versand per Webhook/REST-Pull zurück) sowie die Varianten-/Hauptprodukt-Detailfrage. Danach Folge-APs (AP-14AP-17).
@ -516,9 +516,26 @@ Pro `shopping_order_item` Produkt laden:
---
### AP-19 — UI-Vereinheitlichung Warenwirtschaft (Darstellung)
> **Status:** Erledigt (03.06.2026). Rein gestalterisch, keine fachliche Logik geändert.
Ein einheitliches, modernes Erscheinungsbild für alle Warenwirtschafts-Seiten. Zentrale, wiederverwendbare Design-Partial **`resources/views/admin/inventory/partials/wawi-ui.blade.php`** (per `@once` eingebundenes, auf `.wawi-page` gescoptes Inline-CSS **kein** SCSS-Build/`npm run` nötig).
**Bausteine:** Seitenkopf (`wawi-page-head`, Titel + Untertitel + Aktionsbereich), Kennzahlen-Kacheln (`wawi-stats`/`wawi-stat`, teils klickbar als Filter), Karten (`wawi-card` + `wawi-card__header`/`__footer`), Toolbar mit Such-Feld (`wawi-toolbar`/`wawi-search`), aufgeräumte Tabellen (`wawi-table` mit Uppercase-Köpfen, Hover, schmaler Status-Akzentleiste links), Status-Pills (`wawi-pill--ok/--warning/--danger`), Datenblatt-Definitionsliste (`wawi-deflist`/`wawi-deflist__item`), Name-Zelle mit fester Icon-Spalte (`wawi-name-cell`), einheitlicher Leer-Zustand (`wawi-empty`).
**Responsive:** Detail-Datenblätter brechen unter 768 px auf einspaltig um Label klein oben, Wert linksbündig darunter. Die Name-Zelle hält das Icon in eigener Spalte, damit umgebrochener Text nicht unter das Icon rutscht.
**Umgestellt:** alle Übersicht-/Listen- und Detailseiten unter `admin/inventory` (Produktbestand + Historie, Rohstoffbestand inkl. Detail, Ausgang/Ausschuss, Einkauf & Wareneingang inkl. Detail, Produktion inkl. Detail, Hinweise, Produktentwicklung, Einstellungen sowie die Stammdaten-Listen Lieferanten, Lieferanten-Kategorien, Verpackungsmaterial/-artikel, Materialqualität, Lagerorte).
**Offen (bewusst):** Die reinen **Formularseiten** (Anlegen/Bearbeiten) nutzen noch den alten `h4`-Kopf; Angleichung an `wawi-page-head` als Folgeaufgabe vorgemerkt.
---
## 7. Pflege dieses Dokuments
- Jedes abgeschlossene AP hier mit Datum + Kurzbeschreibung + Test-Status protokollieren (analog Umsetzungsprotokoll in `entwicklungsplan.md`).
- Bei DB-Änderungen: Migration-Dateinamen referenzieren; bei Modellen Casts in `casts()`-Methode pflegen (L11-Konvention).
- Vor jedem Commit: `vendor/bin/pint --dirty` und betroffene Tests (`php artisan test --filter=...`).
- **UI-Konvention Datumsfelder:** Datumsfelder in Formularen immer als `<input type="text" class="form-control datepicker-base" value="dd.mm.yyyy">` (kein natives `type="date"`). Der Datepicker wird global über `public/js/custom.js` auf `.datepicker-base` gebunden (Format `dd.mm.yyyy`, deutsche Locale). Modellwerte mit `->format('d.m.Y')` ausgeben; Backend parst `d.m.Y` über `Carbon::parse` bzw. die `date`-Validierungsregel.
- **UI-Konvention Warenwirtschaft (AP-19):** Neue Seiten unter `admin/inventory` verwenden das Design-System aus `resources/views/admin/inventory/partials/wawi-ui.blade.php` (`@include('admin.inventory.partials.wawi-ui')` + Inhalt in `<div class="wawi-page">`). Bausteine: `wawi-page-head`, `wawi-stats`/`wawi-stat`, `wawi-card`, `wawi-toolbar`/`wawi-search`, `wawi-table`, `wawi-pill`, `wawi-deflist`, `wawi-name-cell`, `wawi-empty`. Status immer über `wawi-pill` (ok/warning/danger) statt Bootstrap-`badge-pill`.