Warenwirtschaft: Einkäufe auch nach Buchung korrigierbar, mit Änderungsprotokoll

Bisher ließen sich nur offene Bestellungen bearbeiten; ein Tippfehler in
einem gebuchten Wareneingang war nicht korrigierbar (Anforderung 14.09.2026).

- Bearbeiten/Korrigieren für gebuchte Eingänge (Admin): Bestell- und
  Eingangsdaten (Menge, Datum, Charge, MHD, Qualität, Preise, Lieferant,
  Lagerort). Menge wirkt sofort auf den Bestand; ml-Eingänge werden in ml
  korrigiert und über die gespeicherte Dichte in Gramm gebucht.
- Schutz: Menge nicht unter den bereits verbrauchten Anteil (Rohstoff je
  Eingang, Verpackung je Artikel); bei Verbrauch sind Art und Rohstoff/
  Artikel gesperrt (Formular + Server).
- Änderungsprotokoll (stock_entry_changes): wer/wann/Grund + geänderte
  Felder alt → neu; Anzeige auf der Detailseite. Grund bei gebuchten
  Eingängen Pflicht, bei offenen optional. Speichern ohne Änderung
  erzeugt keine Zeile.
- Tests (6 neue), In-App-Doku (Hinweise + Leitfaden 3.2) nachgezogen.

Migration: 2026_09_14_110000_create_stock_entry_changes_table.
Suite: 396 grün.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-09-14 14:51:27 +00:00
parent be1d8fdc39
commit 736cb087ae
14 changed files with 783 additions and 37 deletions

View file

@ -310,10 +310,26 @@ dadurch für die Bedienung ändert:
- **iPad:** Das Notizfeld der Produktion wächst beim Tippen automatisch mit und lässt
sich vergrößern; die Zwischenspeichern-Buttons sind über die Seite verteilt.
### Neu 14.09.2026 (Einkauf: Einheit, Dichte, Korrekturen)
- **Einheit als Pflichtfeld:** Beim Rohstoff-Einkauf steht die Einheit (g/ml) als
eigenes Feld **über** der Menge und muss bewusst gewählt werden („Bitte wählen“).
Bei ml zeigt das Mengenfeld live „ml × Dichte = g“.
- **Dichte selbsterklärend:** Hilfetexte am Rohstoff trennen Schwundfaktor (Rezeptur)
und Dichte (nur ml-Einkauf); Live-Vorschau „1 ml = x g“.
- **Korrigieren mit Änderungsprotokoll:** Einkäufe lassen sich jetzt **auch nach der
Buchung** korrigieren (Liste → Stift, Detailseite → **„Korrigieren“**): Menge,
Eingangsdatum, Charge, MHD, Qualität, Preise, Lieferant, Lagerort. Der **Grund ist
Pflicht**; jede Änderung landet mit Datum, Bearbeiter und „alt → neu“ im
**Änderungsprotokoll** unten auf der Detailseite. Schutz: Die Menge darf nicht unter
den bereits verbrauchten Anteil fallen, und bei Verbrauch sind Art und
Rohstoff/Artikel gesperrt. Auch Änderungen an offenen Bestellungen werden
protokolliert (Grund dort optional).
### In Vorbereitung / geplant
- **Versand im System** (DHL-Etiketten per API, AP-32 — bis dahin gilt die
Brückenlösung „DHL-Label aus dem Shop", s. o.), **Audit-Trail**,
Brückenlösung „DHL-Label aus dem Shop", s. o.), **Audit-Trail** (für Einkäufe seit 14.09. als Änderungsprotokoll vorhanden),
**blockbasierte Rechte**, **2FA für Admins**,
**WaWi-Einstellungsseite** (Schwellwerte/Defaults zentral).
- **Produktentwicklung:** Menüpunkt ist als Platzhalter angelegt – das genaue

View file

@ -1,6 +1,6 @@
# Testleitfaden Warenwirtschaft — Version 3.1
# Testleitfaden Warenwirtschaft — Version 3.2
> **Stand:** 09.09.2026
> **Stand:** 14.09.2026
> Dieser Leitfaden führt einmal durch die Funktionen der Warenwirtschaft — in der Reihenfolge eines typischen Arbeitsablaufs, sodass jede Stelle direkt im Browser nachgeschaut und getestet werden kann.
> Die fachlichen Erklärungen dazu stehen wie gewohnt in der App unter den **[Hinweisen zur Warenwirtschaft](/admin/inventory/notices)**.
>
@ -423,10 +423,23 @@
---
## 27. Einkauf korrigieren mit Änderungsprotokoll (14.09.2026)
**Neu:** Einkäufe/Wareneingänge sind auch **nach der Buchung** korrigierbar (Tippfehler, Lieferschein nachgetragen). Jede Korrektur hält **wer/wann/warum** und die geänderten Werte **alt → neu** fest.
**So testen:**
1. Gebuchten Eingang öffnen → **„Korrigieren“** (Liste: Stift-Symbol). Menge 900 → 850 g ändern, Grund eintragen, speichern → Rohstoffbestand sinkt um 50 g; unten auf der Detailseite erscheint das **Änderungsprotokoll** mit Grund und „900,00 g → 850,00 g“.
2. Ohne Grund speichern → Fehlermeldung, nichts geändert.
3. Aus einem Eingang 400 g verbrauchen (Produktion/Ausschuss), dann Menge auf 300 g korrigieren → abgelehnt mit Hinweis auf den Verbrauch; 400 g geht durch. Rohstoff wechseln → abgelehnt (gesperrt).
4. ml-Eingang: Formular zeigt die Mengen in ml, Korrektur wird über die gespeicherte Dichte in Gramm gebucht (Live-Vorschau am Feld).
5. Offene Bestellung bearbeiten → ebenfalls Protokollzeile, Grund dort optional.
---
## Hinweis am Rande
Die Listen **Einkauf & Wareneingang**, **Produktionen** und die **Produktbestand-Historie** zeigen aus Performance-Gründen die neuesten 500 Einträge; darüber erscheint ein Link **„Alle anzeigen"**. Offene Bestellungen sind immer vollständig gelistet.
## Was bewusst noch nicht dabei ist (nachgelagert)
Versand im System (DHL-Etiketten per API), Audit-Trail, 2FA, blockbasierte Rechte und die WaWi-Einstellungsseite folgen in der nächsten Runde.
Versand im System (DHL-Etiketten per API), ein systemweiter Audit-Trail (für Einkäufe siehe Abschnitt 27), 2FA, blockbasierte Rechte und die WaWi-Einstellungsseite folgen in der nächsten Runde.