Warenwirtschaft: AP-09 bis AP-13 (Produktbestand, Set-Produkte, Ausschuss, Konzepte)

- AP-09 Produktbestand inkl. Bewegungshistorie (product_stock_movements, ProductStockService)
- AP-10 Rohstoffbestand-Ansicht je Lager (RawMaterialStockController)
- AP-11 Bestandsschwellen / Out-of-Stock-Handling fuer Produkte und Shop
- AP-12 Ausgang/Ausschuss (stock_disposals, StockDisposalController, InventoryService)
- Set-Produkte (product_set_items) inkl. Aufloesung
- Produktentwicklung & Hinweise-Verwaltung (Notices)
- AP-13 Entwicklungskonzept Shop-Bestandsabzug im Plan dokumentiert
- Feature-Tests fuer neue Module + aktualisierter Entwicklungsplan

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin Adametz 2026-06-03 11:04:22 +00:00
parent 78679e0c55
commit 3ee2d756e9
63 changed files with 5968 additions and 901 deletions

124
resources/docs/hinweise.md Normal file
View file

@ -0,0 +1,124 @@
# Hinweise zur Warenwirtschaft & Produktion
> Diese Seite wird laufend gepflegt und zeigt den aktuellen Entwicklungsstand,
> wichtige Hinweise für die Nutzung sowie festgehaltene Entscheidungen, die
> später noch ausgebaut werden können.
>
> **Stand:** 03.06.2026
---
## 1. Überblick / Entwicklungsstand
### Bereits nutzbar
- **Einstellungen → Allgemein:** Umsatzsteuersätze und Lieferzeit-Vorlagen
(inkl. Tageswert) pflegbar.
- **Stammdaten:** Lagerorte, Rohstoffqualität, Verpackungsmaterial,
Lieferanten-Kategorien.
- **Lieferanten:** Bestellweg (E-Mail / Online-Shop), Bestell-Adresse,
Lieferzeit (Freitext + Tage).
- **INCI / Rohstoffe:** mehrere Lieferanten, Umsatzsteuersatz, eigene Lieferzeit.
- **Einkauf & Wareneingang:** zweistufig (bestellt → eingegangen), Charge & MHD,
Netto-/Brutto-Automatik mit USt-Snapshot, Einkauf duplizierbar.
- **Produktion:** rechnet ausschließlich auf Basis der **Hersteller-Rezeptur**.
Fehlt diese, erscheint eine Warnung (kein Rückgriff auf die Produkt-Rezeptur).
Eigenprodukte ohne Rezeptur (z. B. Broschüren, Etiketten) lassen sich über die
Produkt-Option „benötigt keine Rezeptur" ohne Chargen produzieren.
- **Produkt-Klassen:** Einzelprodukt vs. **Set** (Bündel mehrerer Einzelprodukte
mit Menge). Sets werden nicht produziert; optional kann ein Einzelprodukt einem
Hauptprodukt zugeordnet werden.
- **„Nicht vorrätig":** Produkt zeitlich begrenzt (mit Tagesangabe →
„In ca. X Tagen wieder da!") oder auf unbestimmte Zeit als nicht vorrätig
markierbar. Im öffentlichen Shop erscheint nur ein Hinweis, der Kauf bleibt
möglich. In der **internen Bestellliste** ersetzt der rote Hinweis die
Mengen-Buttons dort ist das Produkt also vorübergehend nicht bestellbar.
- **Rohstoffbestand:** Übersicht aller aktiven Rohstoffe mit echtem Restbestand
(Wareneingang abzüglich Produktionsverbrauch), durchschnittlichem Verbrauch
pro Tag, voraussichtlichem „auf Null"-Datum und Hochrechnung für 1/3/6/12
Monate. Suche und Filter „nur kritische anzeigen". Kritische Rohstoffe
(Meldebestand unterschritten) sind rot hervorgehoben; ein Badge in der
Navigation zeigt die Anzahl. Die Detailseite zeigt Bestand je Lagerort und
Charge sowie die zugeordneten Lieferanten mit Bestell-Link (Shop / Per Mail).
**Offene Bestellungen** (bestellt, aber noch nicht eingegangen) werden separat
ausgewiesen (Spalte „Offen bestellt" in der Übersicht, eigener Block in der
Detailansicht). Sie zählen **nicht** zum Bestand; ein kritischer Rohstoff mit
bereits offener Bestellung wird jedoch entschärft („Kritisch · bereits
bestellt") und nicht im Navigations-Badge mitgezählt.
- **Produktbestand:** Übersicht aller Haupt-/Einzelprodukte mit aktuellem
Bestand (Stück). Bestand = Summe aller Eingänge minus aller Ausgänge. Über die
Buttons **`+`/``** lassen sich Bewegungen mit Stückzahl, Grund (z. B.
Initialbestand, Korrektur, Inventur, Retoure, Testervergabe) und Hinweis
buchen; der Button **„Produzieren"** öffnet die Produktion mit bereits
ausgewähltem Produkt. Suche und Filter „nur kritische anzeigen"; bei
unterschrittenem kritischem Bestand ist die Zeile rot, beim Meldebestand gelb
ein Badge in der Navigation zeigt die Anzahl. Schwellwerte werden je Produkt im
Produktformular (Warenwirtschaft) gepflegt.
- **Produktbestand-Historie:** Revisionssichere Liste aller Bewegungen
(Eingang/Ausgang, Stückzahl, Datum, Grund, Hinweis, Mitarbeiter), filterbar
nach Produkt, Richtung, Grund und Zeitraum (Monat/Jahr).
- **Ausgang / Ausschuss:** Erfassung von Rohstoff- und Verpackungs-Abgängen
(z. B. Bruch, Verfall/MHD, Qualitätsmangel, Schwund, Testverbrauch). Pflichtfeld
**Grund**, optionale **Charge** (setzt den Lagerort automatisch), Menge in
Gramm (Rohstoff) bzw. Stück (Verpackung) und Datum. Jeder Ausgang reduziert
sofort den Bestand beim Rohstoffbestand also auch die „auf Null"-Prognose und
den Kritisch-Status.
### In Vorbereitung / geplant
- **Shop-Anbindung** (Bestandsabzug beim Versand),
**Audit-Trail**, **blockbasierte Rechte**, **2FA für Admins**.
- **Produktentwicklung:** Menüpunkt ist als Platzhalter angelegt das genaue
Briefing steht noch aus.
---
## 2. Wichtige Hinweise für die Nutzung
- **Produktion benötigt eine Hersteller-Rezeptur.** Ist für ein Produkt keine
gepflegt, lässt es sich nicht produzieren außer es ist ausdrücklich als
Eigenprodukt ohne Rezeptur markiert.
- **Chargen-Auswahl in der Produktion** zeigt nur Chargen mit Restbestand,
in der Reihenfolge des frühesten Mindesthaltbarkeitsdatums (FEFO).
- **Umsatzsteuersätze** werden beim Einkauf als Snapshot gespeichert. Spätere
Änderungen am Steuersatz verändern bereits erfasste Einkäufe nicht.
- **Rohstoffbestand Verbrauch/Tag** wird aus der Produktionshistorie der
letzten 90 Tage gemittelt. Ein Rohstoff gilt als **kritisch** (rot), wenn der
Restbestand den am Rohstoff gepflegten **Meldebestand** unterschreitet, und als
**„bald nachbestellen"** (gelb), wenn der Bestand voraussichtlich vor Ablauf der
Lieferzeit aufgebraucht ist.
- **Bestand = nur eingegangene Ware.** Ein neuer Einkauf ist zunächst „offen"
(bestellt) und erhöht den Bestand erst, wenn beim Einkauf der **Wareneingang
gebucht** wird (Stufe 2: eingegangen, mit Menge/Charge/MHD). Bis dahin erscheint
die Menge nur unter „Offen bestellt".
- **Produktbestand wächst automatisch durch Produktion.** Jede gebuchte
Produktion erzeugt einen Eingang in Höhe der produzierten Stückzahl; eine
spätere Mengenkorrektur der Produktion wird als Differenz nachgebucht. Manuelle
Korrekturen erfolgen ausschließlich über Gegenbuchungen (`+`/``) Einträge
der Historie werden nicht gelöscht. Verkaufsabgänge folgen mit der
Shop-Anbindung.
---
## 3. Festgehaltene Entscheidungen (mit Ausbaupotenzial)
Diese Punkte sind bewusst zunächst einfach umgesetzt und können bei Bedarf
später erweitert werden:
- **„Nicht vorrätig":** Vorerst nur ein **Hinweis** der Kauf bleibt möglich.
Eine echte **Kauf-Sperre** kann künftig optional ergänzt werden.
- **Bestandsabzug im Shop** erfolgt **beim Versand** (erst mit gebuchtem Versand
gilt die Ware als „aus dem Regal" entnommen). Stornos/Retouren werden als
Gegenbuchung abgebildet.
- **Blockbasierte Rechte** gelten zunächst **nur für Warenwirtschaft und
Produktmanagement**. Bei Bedarf können sie später auf weitere Bereiche
ausgebaut werden.
---
## 4. Offene Briefings
- **Produktentwicklung:** Funktion und Ablauf sind noch nicht final
beschrieben. Sobald ein Briefing vorliegt, wird der Platzhalter durch die
tatsächliche Funktionalität ersetzt.