Warenwirtschaft: Anforderungsrunde 12.06. — Plan V5.0 + AP-26/AP-25/AP-22

Neue Anforderungen (docs/) interpretiert und als Entwicklungsplan V5.0
(AP-20 bis AP-28) aufgenommen; erste drei Pakete umgesetzt:

AP-26 Ausschuss-Gründe konfigurierbar:
- Stammdaten-Tabelle disposal_reasons + CRUD unter Einstellungen → Allgemein
- StockDisposalController liest aktive DB-Gründe statt hartkodierter Liste
- Seeder übernimmt die bisherigen 6 Gründe idempotent

AP-25 Lieferbestand — Datum statt Tage:
- "Nicht vorrätig" wird über Datepicker "Wieder lieferbar ab" gepflegt;
  Resttage-Hinweis zählt täglich automatisch herunter
- Interne Bestellliste wieder kaufbar: Hinweis erscheint zusätzlich zu
  den Mengen-Buttons (VP entscheidet selbst)

AP-22 Produktbestand-Erweiterungen:
- Default-Sortierung nach Dringlichkeit, Status-Kopf toggelt
- Alle vier Status-Kacheln als Filter klickbar
- Neue Spalte "Verbrauch/Monat" (Ø Abgänge der letzten 6 Monate)
- Produkt-Flag "Im Produktbestand anzeigen" (products.show_in_product_stock)

Tests: 77 grün (DisposalReasonSettings 8, ProductOutOfStock 8,
ProductStock 13 + Regression). Hinweise-Doku + Plan-Protokoll fortgeschrieben;
nächster Schritt laut Plan: AP-21 (INCI-Erweiterungen).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-06-12 16:28:45 +00:00
parent a8f6fef38e
commit e53201f229
32 changed files with 1377 additions and 94 deletions

View file

@ -1,35 +1,6 @@
@once
<style>
/* AP-04: iPad-taugliche Aktions-Buttons in Warenwirtschafts-Tabellen */
.wawi-table1 td .btn {
min-width: 42px;
min-height: 42px;
padding: 0.5rem 0.65rem !important;
font-size: 1.05rem;
line-height: 1.2;
margin: 0.15rem 0.55rem 0.15rem 0;
vertical-align: middle;
}
.wawi-table1 td .btn:last-child {
margin-right: 0;
}
.wawi-table1 td form.d-inline {
display: inline-block;
margin: 0;
}
.wawi-table1 td .btn .far,
.wawi-table1 td .btn .fa,
.wawi-table1 td .btn span {
font-size: 1.05rem;
line-height: 1;
}
.wawi-table td .btn {
margin: 0.15rem 0.65rem 0.45rem 0;
vertical-align: middle;
}