gruene-seele/resources/docs/hinweise.md
Kevin Adametz 99a6c92e6c Warenwirtschaft: AP-28 Neue Produktions-Maske + Produktionsergebnis
- production_outputs (Migration inkl. idempotentem Backfill): eine Produktion
  kann mehrere Output-Produkte erzeugen (z. B. 40x50 ml + 50x5 ml)
- ProductStockService bucht je Output-Produkt (idempotenter Diff, append-only);
  die geplante Stückzahl bucht nichts mehr, entfernte Outputs werden rückgebucht
- ProductionService store/update mit outputs[] (leer = Fallback auf Planung
  inkl. suggestedBatchNumber — Backfill-Semantik, Alt-Aufrufer stabil)
- Maske: INCI-Liste (Alternativname/Qualität/Anteil/Gramm/Regal), Chargen-
  Erfassung nach Rezeptur-Phasen mit Notiz + Status-Ampel, Produktionsergebnis-
  Repeater mit Chargen-Nr.-Vorbelegung (Präfix + ttmmjj), Planungs-Hinweis
- Show: Produktionsergebnis-Karte; Index: Ergebnis-Spalte
- Hinweise-Doku + Plan V6.0 §6 fortgeschrieben (nächster Schritt: AP-13)

Tests: ProductionOutputTest (8 neu); Suite 201 grün, 731 Assertionen

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 14:02:54 +00:00

184 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:** 12.06.2026
---
## 1. Überblick / Entwicklungsstand
### Bereits nutzbar
- **Einstellungen → Allgemein:** Umsatzsteuersätze, Lieferzeit-Vorlagen
(inkl. Tageswert) und **Ausschuss-Gründe** pflegbar. Die Ausschuss-Gründe
erscheinen im Ausschuss-Formular (nur aktive, in gepflegter Reihenfolge).
- **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 **Datum** „Wieder
lieferbar ab" → der Hinweis „In ca. X Tagen wieder da!" zählt täglich
automatisch herunter) oder auf unbestimmte Zeit als nicht vorrätig
markierbar. Es erscheint **überall nur ein Hinweis** – im öffentlichen Shop
**und** in der internen Bestellliste bleibt der Kauf möglich; der
Vertriebspartner entscheidet selbst, ob er die Ware später bekommt.
- **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. Die Übersicht ist standardmäßig
nach **Dringlichkeit** sortiert (kritische Produkte oben, Klick auf „Status"
dreht die Reihenfolge), alle vier Status-Kacheln oben sind als Filter
anklickbar, und die Spalte **„Verbrauch/Monat"** zeigt den Durchschnitt der
Abgänge der letzten 6 Monate. Produkte ohne Lagerführung (z. B. Abrechnung
Druckkosten, Logo-Etiketten) lassen sich über die Produkt-Option
**„Im Produktbestand anzeigen"** aus der Übersicht ausblenden.
- **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). Die
Gründe sind selbst pflegbar unter **Einstellungen → Allgemein →
Ausschuss-Gründe**. 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).
- **Gleiche Charge wird zusammengeführt (Wareneingang):** Kommt eine bereits
vorhandene Charge (gleiche Chargennummer, gleicher Rohstoff) erneut, weist
die Buchungsmaske darauf hin („Charge bereits im Haus") und belegt MHD und
Qualität aus dem letzten Eingang vor (überschreibbar). Der **Einkaufsvorgang
bleibt trotzdem separat erfasst** (eigener Eintrag mit Preis/Datum) –
zusammengeführt werden nur Anzeige und Restbestand: Rohstoffbestand-Detail
und Chargen-Auswahl der Produktion zeigen die Charge **einmal mit
Summen-Rest** (Einzel-Einkäufe als Unterzeilen bzw. Vermerk „x Einkäufe").
Der Verbrauch einer Produktion wird automatisch **FEFO auf die einzelnen
Einkäufe der Charge verteilt**.
- **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 — aus dem
Produktionsergebnis.** Die Stückzahl oben in der Produktions-Maske ist **nur
Planung** und bucht nichts. Ganz unten unter **„Produktionsergebnis"** wird
erfasst, was real entstanden ist — auch **mehrere Produkte** je Produktion
(z. B. Plan 50×50 ml → Ergebnis 40×50 ml + 50×5 ml). Jede Ergebniszeile hat
eine **Chargen-Nr.**, die aus Produkt-Präfix + Produktionsdatum (`ttmmjj`)
vorbelegt wird und editierbar bleibt. Eine spätere Korrektur des Ergebnisses
wird je Produkt 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.
- **Produktions-Maske:** zeigt die Hersteller-Rezeptur als **INCI-Liste** mit
Alternativname, Qualität, Anteil %, Gesamt-Gramm und **Regal** (Lagerort);
die Chargen-Zuordnung ist nach **Rezeptur-Phasen** gegliedert (inkl.
Phasen-Notiz), mit Status-Ampel je Rohstoff (grün = Soll erfüllt). Der
**Rohstoffbestand** berechnet sich unverändert aus den je Charge
eingetragenen Ist-Mengen — unabhängig vom Produktionsergebnis.
- **Bestellweg je INCI-Lieferant:** Am Inhaltsstoff wird pro Lieferant eine
Shop-URL gepflegt („+ weiteren Lieferanten anlegen"). Ist die URL **leer**,
gilt für diesen Lieferanten **Bestellung per Mail** – der Rohstoffbestand
zeigt entsprechend „Zum Shop" (mit der hinterlegten URL) oder „Per Mail".
- **Alternativer Name am INCI:** Handelsname der Packung (z. B. LECITHIN →
Phospholipon 80 H), sichtbar in der INCI-Liste und im Rohstoffbestand-Detail,
damit Mitarbeiter den Rohstoff finden.
- **Lagerorte** folgen dem Schema **Raum | Regal | Fach/Buchstabe**. Die
Bausteine werden zentral unter **Einstellungen → Allgemein** gepflegt und am
INCI ausgewählt; Änderungen an einem Baustein wirken übergreifend.
- **INCI-Liste „nur aktive":** Der Filter zeigt nur Inhaltsstoffe, die in der
**Hersteller-Rezeptur mindestens eines aktiven Produkts** vorkommen – nicht zu
verwechseln mit dem Aktiv-Häkchen am INCI selbst.
- **Rohstoffbestand-Filter:** Die Übersicht kennt zwei Modi – **„Alle"** (auch
Rohstoffe ohne Rezeptur-Bezug, z. B. für Neuentwicklungen eingekauft) und
**„Nur aus Herstellerrezepturen"** (aktiver Produkte). INCI mit dem Häkchen
**„Kein Rohstoffbestand"** (z. B. Allergen-Angaben) erscheinen nie im
Rohstoffbestand und zählen nicht im Kritisch-Badge.
- **Rezeptur-Phasen:** Die Hersteller-Rezeptur ist in Phasen gegliedert
(Phase A, B …) — je Phase Rohstoffe mit Anteil %, eine optionale Notiz
(z. B. „auf 70 °C erhitzen") und Drag-&-Drop-Sortierung; Rohstoffe lassen
sich auch zwischen Phasen verschieben. Die **Gesamtsumme über alle Phasen**
muss 100 % ergeben. Bestehende Rezepturen ohne Phasen funktionieren
unverändert weiter; das Kopieren eines Produkts übernimmt die
Phasenstruktur. Für Soll-Mengen der Produktion sind Phasen rein
darstellend — gerechnet wird wie bisher über alle Zeilen.
---
## 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.
- **Chargen-Nr.-Format (Kundenentscheid 06.07.2026):** Präfix auf Produktebene
(Kategorie-Kürzel + Produkt-Nr., z. B. `TP1`) + Produktionsdatum als
`ttmmjj` – Beispiel `TP1150626` = Charge vom 15.06.2026. Die Chargen-Nr. wird
in der Produktion vorbefüllt, bleibt aber editierbar (alte Etiketten).
Umsetzung folgt mit dem Chargen-Präfix-Paket (AP-24).
---
## 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.