diff --git a/dev/product management /entwicklungsplan-aktualisiert-02-06-2026.md b/dev/product management /entwicklungsplan-aktualisiert-02-06-2026.md index 3b17910..42ec1f0 100644 --- a/dev/product management /entwicklungsplan-aktualisiert-02-06-2026.md +++ b/dev/product management /entwicklungsplan-aktualisiert-02-06-2026.md @@ -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-14–AP-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 `` (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 `
`). 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`. diff --git a/resources/views/admin/inventory/general/index.blade.php b/resources/views/admin/inventory/general/index.blade.php index 3bf455a..ec10dc8 100644 --- a/resources/views/admin/inventory/general/index.blade.php +++ b/resources/views/admin/inventory/general/index.blade.php @@ -1,118 +1,123 @@ @extends('layouts.layout-2') @section('content') - @include('admin.inventory.partials.table-actions-style') + @include('admin.inventory.partials.wawi-ui') -
-
- {{ __('Umsatzsteuersätze') }} - {{ __('Neu anlegen') }} -
-
- - - - - - - - - - - - @forelse($taxRates as $taxRate) - - - - - - - - @empty - - - - @endforelse - -
 {{ __('Name') }}{{ __('Satz') }}{{ __('Status') }}
- - - - {{ $taxRate->name }}{{ number_format($taxRate->percent, 2, ',', '.') }} % - @if ($taxRate->active) - - @else - - @endif - -
- @csrf - @method('DELETE') - -
-
- {{ __('Noch keine Umsatzsteuersätze angelegt.') }}
+
+
+
+

{{ __('Einstellungen') }}

+

{{ __('Umsatzsteuersätze und Lieferzeit-Vorlagen') }}

+
-
-
-
- {{ __('Lieferzeit-Vorlagen') }} - {{ __('Neu anlegen') }} -
-
- - - - - - - - - - - - @forelse($deliveryTimes as $deliveryTime) +
+
+ {{ __('Umsatzsteuersätze') }} + {{ __('Neu anlegen') }} +
+
+
 {{ __('Bezeichnung') }}{{ __('Tage') }}{{ __('Status') }}
+ - - - - - + + + + + - @empty + + + @forelse($taxRates as $taxRate) + + + + + + + + @empty + + + + @endforelse + +
- - - - {{ $deliveryTime->label }}{{ $deliveryTime->days !== null ? $deliveryTime->days : '–' }} - @if ($deliveryTime->active) - - @else - - @endif - -
- @csrf - @method('DELETE') - -
-
 {{ __('Name') }}{{ __('Satz') }}{{ __('Status') }}
+ + + + {{ $taxRate->name }}{{ number_format($taxRate->percent, 2, ',', '.') }} % + @if ($taxRate->active) + {{ __('Aktiv') }} + @else + {{ __('Inaktiv') }} + @endif + +
+ @csrf + @method('DELETE') + +
+
{{ __('Noch keine Umsatzsteuersätze angelegt.') }}
+
+
+ +
+
+ {{ __('Lieferzeit-Vorlagen') }} + {{ __('Neu anlegen') }} +
+
+ + - + + + + + - @endforelse - -
- {{ __('Noch keine Lieferzeit-Vorlagen angelegt.') }} {{ __('Bezeichnung') }}{{ __('Tage') }}{{ __('Status') }}
+ + + @forelse($deliveryTimes as $deliveryTime) + + + + + + + {{ $deliveryTime->label }} + {{ $deliveryTime->days !== null ? $deliveryTime->days : '–' }} + + @if ($deliveryTime->active) + {{ __('Aktiv') }} + @else + {{ __('Inaktiv') }} + @endif + + +
+ @csrf + @method('DELETE') + +
+ + + @empty + +
{{ __('Noch keine Lieferzeit-Vorlagen angelegt.') }}
+ + @endforelse + + +
@endsection diff --git a/resources/views/admin/inventory/locations/index.blade.php b/resources/views/admin/inventory/locations/index.blade.php index 1a400d3..6347eee 100644 --- a/resources/views/admin/inventory/locations/index.blade.php +++ b/resources/views/admin/inventory/locations/index.blade.php @@ -1,14 +1,21 @@ @extends('layouts.layout-2') @section('content') - @include('admin.inventory.partials.table-actions-style') -
-
- {{ __('Lagerorte') }} - {{ __('Neu anlegen') }} -
-
- + @include('admin.inventory.partials.wawi-ui') +
+
+
+

{{ __('Lagerorte') }}

+
+ +
+
+
+
@@ -28,9 +35,9 @@
 {{ $value->name }} @if($value->active) - + {{ __('Aktiv') }} @else - + {{ __('Inaktiv') }} @endif @@ -47,6 +54,7 @@
+