459 lines
32 KiB
Markdown
459 lines
32 KiB
Markdown
# Testleitfaden Warenwirtschaft — Version 3.3
|
||
|
||
> **Stand:** 17.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)**.
|
||
>
|
||
> - **Teil A** (Abschnitte 1–11) — die Basis-Funktionen der Warenwirtschaft (Runde 12.06.2026, Stand 16.07.2026). Unverändert gültig.
|
||
> - **Teil B** (Abschnitte 12–18) — Runde V7.0 (Testphasen-Rückmeldung 26.–28.08.2026).
|
||
> - **Teil C** (Abschnitte 19–26) — **neu: Nachbesserungen aus der Umsetzungsprüfung und Nachträge AP-52/AP-53 (08./09.09.2026)**. Wer nur die neuen Punkte prüfen will, springt direkt zu **Teil C**.
|
||
|
||
---
|
||
|
||
# Teil A — Basis-Funktionen (Runde 12.06.2026)
|
||
|
||
## 1. Einstellungen: Lagerort-Bausteine & Ausschuss-Gründe
|
||
|
||
**Wo:** Menü **[Einstellungen → Allgemein](/admin/inventory/general)**
|
||
|
||
**Neu:**
|
||
- Drei neue Karten **Räume**, **Regale**, **Fächer** — die zentralen Bausteine für Lagerorte nach dem Schema *Raum 1 | Regal 3 | A*.
|
||
- Karte **Ausschuss-Gründe** (aus Runde 12.06.): Gründe für Ausgang/Ausschuss selbst anlegen, umbenennen, deaktivieren.
|
||
|
||
**So testen:**
|
||
1. Je einen Raum (z. B. „Raum 1"), ein Regal („Regal 3") und ein Fach („A") anlegen.
|
||
2. Einen Eintrag umbenennen → die Änderung wirkt übergeordnet überall, wo der Baustein verwendet wird.
|
||
3. Einen Ausschuss-Grund anlegen (z. B. „Verkleckert") — der taucht später in Schritt 8 auf.
|
||
|
||
---
|
||
|
||
## 2. INCI-Ebene: Lieferanten mit Bestellweg, Alternativname, Lagerort
|
||
|
||
**Wo:** Menü **[Produkte → Inhaltsstoffe](/admin/product/ingredients)**, einen INCI öffnen (z. B. ZinClear XP)
|
||
|
||
**Neu:**
|
||
- **Lieferanten-Zeilen mit „+ weiteren Lieferanten anlegen":** je Zeile Lieferant + **URL**. URL eingetragen ⇒ Bestellung im Online-Shop; URL leer ⇒ Bestellung per Mail.
|
||
- Feld **Alternativer Name** (Handelsname, z. B. LECITHIN → *Phospholipon 80 H*).
|
||
- Drei Dropdowns **Raum / Regal / Fach** (die Bausteine aus Schritt 1).
|
||
- Checkbox **„Kein Rohstoffbestand"** (für Allergene u. Ä. — wirkt in Schritt 3).
|
||
|
||
**So testen:**
|
||
1. Beim INCI zwei Lieferanten anlegen: einen **mit** URL (z. B. Dragonspice-Shoplink), einen **ohne**.
|
||
2. Alternativnamen und Lagerort (Raum 1 | Regal 3 | A) setzen, speichern.
|
||
3. **Filter „nur aktive"** oben in der INCI-Liste anhaken → es bleiben nur INCI übrig, die in der Herstellerrezeptur mindestens eines aktiven Produkts vorkommen.
|
||
|
||
**Ergebnis prüfen:** In der Rohstoffbestand-Detailansicht (Schritt 3) erscheint je Lieferant der Button **„Zum Shop"** bzw. **„Per Mail"**; Alternativname und Lagerort werden im Kopf angezeigt.
|
||
|
||
---
|
||
|
||
## 3. Rohstoffbestand: Filter & Ausblendungen
|
||
|
||
**Wo:** Menü **[Rohstoffbestand](/admin/inventory/raw-material-stock)**
|
||
|
||
**Neu:**
|
||
- Umschalter **„Alle" / „Nur aus Herstellerrezepturen"** oben in der Übersicht.
|
||
- INCI mit Häkchen **„Kein Rohstoffbestand"** erscheinen gar nicht (auch nicht im roten Kritisch-Zähler).
|
||
|
||
**So testen:**
|
||
1. Auf „Nur aus Herstellerrezepturen" klicken → Rohstoffe, die nur für Neuentwicklungen eingekauft wurden, verschwinden; auf „Alle" sind sie wieder da.
|
||
2. Bei einem Test-INCI „Kein Rohstoffbestand" anhaken → er verschwindet in beiden Modi.
|
||
|
||
---
|
||
|
||
## 4. Produktebene: Rezeptur-Phasen & Chargen-Präfix
|
||
|
||
**Wo:** Menü **[Produkte → Übersicht](/admin/product/show)**, ein Produkt bearbeiten (z. B. Tattoocreme)
|
||
|
||
**Neu:**
|
||
- **Hersteller-Rezeptur in Phasen** (Phase A, B, …): je Phase eigene Rohstoffe, ein **Notizfeld** (z. B. „auf 70 °C erhitzen"), Umbenennen möglich; Rohstoffe lassen sich per Drag & Drop **innerhalb und zwischen Phasen** verschieben. Die 100-%-Summe gilt weiterhin **über alle Phasen zusammen**.
|
||
- Feld **„Chargen-Nr.-Präfix"** in der Warenwirtschaft-Karte (z. B. `TP1` = Tattoopflege + Produkt-Nr. 1).
|
||
- **Lieferbestand** (aus Runde 12.06.): Feld „Wieder lieferbar ab" als **Datum**; das Produkt bleibt kaufbar, im Shop erscheint die tagesaktuell berechnete Anzahl Tage.
|
||
|
||
**So testen:**
|
||
1. In der Hersteller-Rezeptur „+ Neue Phase" klicken, Rohstoffe zuordnen, eine Notiz eintragen, einen Rohstoff in eine andere Phase ziehen → Summe unten muss weiter 100 % ergeben.
|
||
2. Präfix `TP1` eintragen und speichern → wirkt in Schritt 7 (Produktion).
|
||
3. „Wieder lieferbar ab" auf ein Datum in 12 Tagen setzen → Produkt im Shop ansehen: kaufbar, mit Tage-Hinweis.
|
||
4. Produkt **kopieren** → Phasenstruktur wird mitkopiert.
|
||
|
||
---
|
||
|
||
## 5. Einkauf & Wareneingang: gleiche Charge zusammenführen
|
||
|
||
**Wo:** Menü **[Einkauf & Wareneingang](/admin/inventory/stock-entries)**
|
||
|
||
**Neu:**
|
||
- Beim **Buchen des Wareneingangs** (Stufe 2) prüft die Maske beim Eintippen der Chargennummer automatisch, ob diese Charge für den Rohstoff **schon im Haus** ist: Hinweis „Charge bereits im Haus" mit Restbestand, Lagerort und MHD — **MHD und Qualität werden vorbelegt** (bleiben überschreibbar).
|
||
- Der Einkaufsvorgang bleibt trotzdem **separat erfasst** (eigener Eintrag mit Preis und Datum).
|
||
|
||
**So testen:**
|
||
1. Sonnenblumenöl bestellen und mit Charge `XY-123` als eingegangen buchen.
|
||
2. Sonnenblumenöl **erneut** bestellen und beim Buchen wieder `XY-123` eintippen → der blaue Hinweis erscheint, MHD ist vorbelegt.
|
||
3. Danach Schritt 6 ansehen: die Charge erscheint dort **einmal mit summiertem Rest**.
|
||
|
||
---
|
||
|
||
## 6. Rohstoffbestand-Detail: Chargen summiert
|
||
|
||
**Wo:** Menü **[Rohstoffbestand](/admin/inventory/raw-material-stock)**, den Rohstoff aus Schritt 5 anklicken
|
||
|
||
**Neu:** Tabelle **„Verfügbare Chargen"** zeigt je Chargennummer **eine Zeile mit Summen-Rest** und dem Vermerk „2 Einkäufe"; darunter die einzelnen Einkäufe als eingerückte Unterzeilen („Einkauf vom …"). Außerdem: Spalte **„Letzter Einkauf (Netto/kg)"** je Lieferant und die Bestell-Buttons aus Schritt 2.
|
||
|
||
**So testen:** Restbestand der Charge = Summe beider Einkäufe; beide Einkaufszeilen mit eigenem Datum sichtbar.
|
||
|
||
---
|
||
|
||
## 7. Produktion: neue Maske mit Produktionsergebnis
|
||
|
||
**Wo:** Menü **Produktion → Produktionen → [Neue Produktion](/admin/inventory/productions/create)**
|
||
|
||
**Neu (Kernstück der Runde):**
|
||
- Oben nur noch **Planung**: „Geplante Stückzahl (Planung)" — **bucht keinen Bestand**.
|
||
- **INCI-Liste** der Herstellerrezeptur: Name, **Alternativer Name**, Qualität, Anteil %, Gramm gesamt, **Regal** — mit Summenzeile.
|
||
- **Chargen-Zuordnung nach Phasen** gegliedert (inkl. Phasen-Notiz) mit **Status-Ampel** je Rohstoff (grün = eingetragene Menge entspricht dem Soll).
|
||
- Das **Chargen-Dropdown** zeigt zusammengeführte Chargen mit Summen-Rest (z. B. „… — Rest 8.000 g (2 Einkäufe)"); der Verbrauch wird automatisch nach frühestem MHD auf die Einkäufe verteilt.
|
||
- Ganz unten **„Produktionsergebnis"**: Zeilen mit Produkt + produzierte Stückzahl + **Chargen-Nr.** (vorbelegt aus Präfix + Produktionsdatum, z. B. `TP1150626` — editierbar), „+ weitere Ergebniszeile" für **mehrere Output-Produkte**.
|
||
|
||
**So testen (Beispiel aus der Anforderung):**
|
||
1. 50 × „50 ml Deobalm" **planen**, Chargen zuordnen (Ampeln grün).
|
||
2. Im Produktionsergebnis eintragen: **40 × 50 ml** und (zweite Zeile) **50 × 5 ml** — Chargen-Nr. wird je Zeile automatisch vorgeschlagen.
|
||
3. Speichern → Detailseite zeigt die Karte „Produktionsergebnis".
|
||
4. **Produktbestand prüfen** (Schritt 8): 50-ml-Produkt +40, 5-ml-Produkt +50 — **nicht** +50 aus der Planung.
|
||
5. Produktion **bearbeiten**, Ergebnis ändern → der Produktbestand korrigiert sich als Differenz-Gegenbuchung (Historie bleibt vollständig).
|
||
6. Rohstoffbestand (Schritt 6) prüfen: abgezogen wurden die **je Charge eingetragenen Gramm** — unabhängig vom Ergebnis.
|
||
|
||
---
|
||
|
||
## 8. Produktbestand & Ausschuss
|
||
|
||
**Wo:** Menü **[Produktbestand → Übersicht](/admin/inventory/product-stock)** und **[Ausgang / Ausschuss](/admin/inventory/stock-disposals)** (Historie: **[Produktbestand → Historie](/admin/inventory/product-stock/history)**)
|
||
|
||
**Neu:**
|
||
- Übersicht **standardmäßig nach Dringlichkeit sortiert**; alle **vier Status-Kacheln** oben sind klickbare Filter.
|
||
- Spalte **„Verbrauch pro Monat"** (Durchschnitt der letzten 6 Monate).
|
||
- Auf Produktebene Häkchen **„Im Produktbestand anzeigen"** — z. B. Logo-Etiketten-Abrechnungen ausblendbar.
|
||
- Ausschuss-Erfassung nutzt die **selbst gepflegten Gründe** aus Schritt 1; Chargen-Auswahl setzt den Lagerort automatisch.
|
||
|
||
**So testen:** Kacheln durchklicken, ein Produkt per Häkchen ausblenden, einen Ausschuss mit eigenem Grund buchen und in der Historie wiederfinden.
|
||
|
||
---
|
||
|
||
## 9. Shop-Bestandsabzug beim Versand & API-Bestellungen (neu 16.07.2026)
|
||
|
||
**Wo:** Menü **[Verkäufe](/admin/sales)** (Statuswechsel) und **[Bestellungen → API-Bestellungen](/admin/inventory/api-orders)** (Warenwirtschaft)
|
||
|
||
**Neu:**
|
||
- Beim Setzen einer Bestellung auf **„versendet"** oder **„abgeschlossen"** bucht das System je Position automatisch einen **Abgang im Produktbestand** (Grund „Verkauf"). **Sets** werden in Einzelprodukte aufgelöst. Zurücksetzen oder **Storno** bucht automatisch zurück.
|
||
- Menüpunkt **API-Bestellungen**: Protokoll aller über die Partnercenter-API übertragenen Bestellungen. Einträge mit **nicht zuordenbaren Positionen** (unbekannte WP-Nummer) sind **rot markiert**; **„Ansehen"** öffnet den Inhalt der Übertragung. Oben warnt die Seite bei **doppelten WP-Nummern** und listet aktive Produkte **ohne WP-Nummer**.
|
||
|
||
**So testen:** Eine Bestellung mit bekanntem Produkt auf „versendet" setzen → im **[Produktbestand → Historie](/admin/inventory/product-stock/history)** erscheint der Abgang „Verkauf"; Status zurück auf „offen" → Gegenbuchung. Danach unter **API-Bestellungen** eine Übertragung mit unbekannter SKU suchen (rot markiert) und per „Ansehen" die Positionen prüfen.
|
||
|
||
---
|
||
|
||
## 10. Bestell-Abwicklung (neu 16.07.2026)
|
||
|
||
**Wo:** Menü **[Bestellungen → Abwicklung](/admin/inventory/orders)**
|
||
|
||
**Neu:**
|
||
- Kompakte Tagesübersicht mit vier klickbaren Kacheln: **Heute eingegangen / Zu konfektionieren / Versandfertig / Heute versendet** — „versandfertig" heißt bezahlt (Zahlart Rechnung sofort, Vorkasse nach Zahlungseingang, API immer).
|
||
- Je Bestellung: aufklappbare **Packliste** (Sets mit Komponenten), Gewicht, Zahlstatus, **Dokumente** (Rechnung/Lieferschein einzeln oder kombiniert; per Klick erstellbar, ohne E-Mail; API-Bestellungen verlinken die externe Rechnung) und die Buttons **„Konfektioniert"** und **„Versendet"** (bucht den Bestandsabzug).
|
||
- Wurde ein Status über die Abwicklung gesetzt, **überschreibt das Öffnen der Bestell-Details ihn nicht mehr automatisch**.
|
||
- **Sammel-Druck:** mehrere Bestellungen per Checkbox auswählen → **„Lieferscheine drucken"** oder **„+ Rechnungen"** → ein PDF mit allen Dokumenten öffnet sich im neuen Tab; fehlende Dokumente werden automatisch miterstellt.
|
||
|
||
**So testen:** Eine bezahlte offene Bestellung unter „Zu konfektionieren" finden → Packliste aufklappen → „Konfektioniert" → Bestellung wandert zu „Versandfertig" → Dokumente erstellen und drucken → „Versendet" → Kachel „Heute versendet" zählt hoch, Abgang steht in der **[Produktbestand-Historie](/admin/inventory/product-stock/history)**. Danach zwei Bestellungen anhaken und den Sammel-Druck testen.
|
||
|
||
---
|
||
|
||
## 11. DHL-Label aus dem Shop (Brückenlösung, neu 17.07.2026)
|
||
|
||
**Wo:** Menü **[Bestellungen → Abwicklung](/admin/inventory/orders)** und Bestell-Details unter **Verkäufe**
|
||
|
||
**Neu:**
|
||
- Wird das DHL-Etikett **im WooCommerce-Shop** erstellt und die Bestellung danach übertragen, speichert das System eine **eigene Kopie der Label-PDF** und die **Sendungsnummer** an der Bestellung.
|
||
- In der Abwicklung erscheint bei der Bestellung ein **„Label"-Download** (neben dem externen Rechnungslink) samt Sendungsnummer; ebenso in den Bestell-Details.
|
||
- Wird das Label im Shop erst **nach** der Übertragung erstellt (oder neu erstellt), reicht der Shop es automatisch nach — es taucht dann ohne weiteres Zutun in der Abwicklung auf.
|
||
- Voraussetzung: das Update des Verbindungs-Plugins im WooCommerce-Shop auf **Version 1.5.0** ist eingespielt (überträgt die Label-PDF direkt; mit älterem Connector kommt nur die Sendungsnummer an).
|
||
|
||
**So testen:** Im Shop eine Testbestellung mit DHL-Label versehen → Bestellung ins Partnercenter übertragen → in der **Abwicklung** bei der Bestellung auf **„Label"** klicken (PDF öffnet sich) und die Sendungsnummer prüfen. Danach einmal andersherum: Bestellung zuerst übertragen, Label im Shop erst danach erstellen → Seite neu laden, der Label-Download muss nachträglich erscheinen.
|
||
|
||
---
|
||
|
||
---
|
||
|
||
# Teil B — Neu in Runde V7.0 (26.–28.08.2026)
|
||
|
||
> Diese Abschnitte prüfen die Punkte aus der Testphasen-Rückmeldung vom 26.08.2026.
|
||
> Reihenfolge wieder entlang des Arbeitsablaufs (Stammdaten → Produkt → Rohstoff →
|
||
> Wareneingang → Produktion → Versand).
|
||
|
||
## 12. Stammdaten: getrennte Buchungsgründe, Lieferanten-Filter, Lagerorte
|
||
|
||
**Wo:** **[Einstellungen → Allgemein](/admin/inventory/general)**, **[Produkte → Inhaltsstoffe](/admin/product/ingredients)**, **[Stammdaten → Lagerorte](/admin/inventory/locations)**
|
||
|
||
**Neu:**
|
||
- **Buchungsgründe getrennt Ein-/Ausgang (AP-48):** Zwei getrennte, selbst pflegbare Listen für **Eingangs-** und **Ausgangs-Gründe** des Produktbestands.
|
||
- **Lieferanten-Dropdown gefiltert (AP-49):** Am Inhaltsstoff werden nur noch **Rohstoff-Lieferanten** (Kategorie „Kosmetikrohstoffe") angeboten.
|
||
- **Lagerort löschbar + Köln-Default (AP-50):** Ein belegter Lagerort (z. B. „Waldbröl") lässt sich löschen, indem seine Buchungen auf einen **Ziel-Lagerort** übernommen werden.
|
||
|
||
**So testen:**
|
||
1. Unter *Allgemein* je einen neuen **Eingangs-** und **Ausgangs-Grund** anlegen → sie erscheinen später (Schritt 16) je nach Buchungsrichtung getrennt.
|
||
2. Einen INCI öffnen → das Lieferanten-Dropdown zeigt nur Rohstoff-Lieferanten.
|
||
3. Unter *Lagerorte* bei „Waldbröl" als Ziel **„Köln"** wählen und übernehmen → Waldbröl ist weg, seine Buchungen hängen an Köln.
|
||
|
||
---
|
||
|
||
## 13. Produkt: Füllgewicht, „In der Produktion anzeigen", Lagerplatz
|
||
|
||
**Wo:** **[Produkte → Übersicht](/admin/product/show)**, ein Produkt bearbeiten → Karte **Warenwirtschaft**
|
||
|
||
**Neu:**
|
||
- **Füllgewicht (g) (AP-35):** Grundlage für die Produktions-Soll-Mengen (Anteil % × Füllgewicht). Leer = „Menge = Gramm".
|
||
- **„In der Produktion anzeigen (Produkt wird selbst hergestellt)" (AP-47):** Häkchen unter „Im Produktbestand anzeigen" (bis 09.09.2026 „Produktionsrelevant" oben im Formular); nur so markierte Produkte erscheinen in der Produkt-Auswahl der Produktion und in der Rohstoffbestand-Box „Enthalten in". Zukaufartikel (z. B. Aloe-vera-Produkte) abwählen.
|
||
- **Lagerplatz Raum/Regal/Fach (AP-51):** Dieselbe Zuordnung wie beim Rohstoff, jetzt auch am Produkt.
|
||
|
||
**So testen:**
|
||
1. Bei einem Rezeptur-Produkt (z. B. Deocreme 50 ml) **Füllgewicht = 50** eintragen, Lagerplatz setzen, speichern.
|
||
2. Bei einem Zukaufartikel (z. B. „Aloe vera Handcreme") **„In der Produktion anzeigen" abwählen** → es verschwindet aus der Produkt-Auswahl der Produktion (Schritt 15) und aus „Enthalten in"; im Produktbestand bleibt es sichtbar.
|
||
3. Produktbestand (Schritt 8) öffnen → der Lagerplatz erscheint als Zeile unter dem Produktnamen.
|
||
|
||
---
|
||
|
||
## 14. Rohstoff & Wareneingang: Dichte und ml-Erfassung
|
||
|
||
**Wo:** **[Produkte → Inhaltsstoffe](/admin/product/ingredients)** und **[Einkauf & Wareneingang](/admin/inventory/stock-entries)**
|
||
|
||
**Neu (AP-42):**
|
||
- Am Rohstoff optionales Feld **Dichte (g/ml)**.
|
||
- Im Einkauf/Wareneingang ist die **Einheit der bestellten Menge** (g oder ml) ein eigenes **Pflichtfeld über der Menge** („Bitte wählen“, seit 14.09.2026); bei **ml** wird über die Dichte in Gramm umgerechnet und **als Gramm gespeichert** — die Umrechnung erscheint live unter dem Mengenfeld.
|
||
|
||
**So testen:**
|
||
1. Bei einer in ml gekauften Tinktur die **Dichte** hinterlegen (z. B. 0,79).
|
||
2. Einen Wareneingang mit Einheit **ml** erfassen (z. B. 100 ml) → gespeichert/gebucht werden 79 g.
|
||
3. Ohne hinterlegte Dichte ist die ml-Auswahl gesperrt (Prüfung).
|
||
4. Ohne gewählte Einheit lässt sich der Rohstoff-Einkauf nicht speichern (Prüfung).
|
||
|
||
---
|
||
|
||
## 15. Produktion: Soll auf Füllgewicht, Abwiege-Ampel, Bestand/Differenz
|
||
|
||
**Wo:** **Produktion → [Neue Produktion](/admin/inventory/productions/create)**
|
||
|
||
**Neu:**
|
||
- **Soll = Anteil % × Füllgewicht × Stückzahl (AP-35)** statt fix 100 g.
|
||
- **Abwiege-Ist-Wert + Ampel (AP-39):** orange = nichts eingetragen, grün = ±5 % vom Soll, rot = >5 % Abweichung.
|
||
- **INCI-Tabelle: Spalten „Bestand" und „Differenz" (AP-40); Lagerplatz-Spalte heißt „Lagerort" (seit 09.09.).**
|
||
- **Verpackungs-Vorschau direkt unter der INCI-Tabelle + Phasen-Gramm hinter dem Namen (AP-41).**
|
||
- **INCI-Liste nach Konzentration absteigend sortiert (AP-46).**
|
||
- **Verpackung wird aus dem Produktionsergebnis gebucht (AP-45).**
|
||
|
||
**So testen:**
|
||
1. Produkt mit Füllgewicht (Schritt 13) wählen, Stückzahl planen → die Soll-Gramm je Rohstoff entsprechen **Anteil % × Füllgewicht × Stück** (nicht mehr 100 g).
|
||
2. Je Charge eine Ist-Menge eintragen: exakt aufs Soll → **grün**; ~10 % daneben → **rot**; leer → **orange**.
|
||
3. Spalten **Bestand/Differenz** prüfen (Differenz negativ = rot). Lagerplatz-Kopf heißt **„Lagerort"**.
|
||
4. Phasen-Kopf zeigt die **Gesamt-Gramm** in Klammern; die Verpackungs-Vorschau steht direkt unter der INCI-Tabelle.
|
||
5. Ergebnis mit zwei Output-Produkten buchen → die **Verpackung** wird je Ergebnisprodukt × Menge gebucht (Detailseite prüfen).
|
||
|
||
---
|
||
|
||
## 16. Produktion zwischenspeichern (Entwurf)
|
||
|
||
**Wo:** **Produktion → Neue Produktion** / eine Produktion **bearbeiten**
|
||
|
||
**Neu (AP-43):** Neben **„Produktion abschließen"** gibt es **„Zwischenspeichern (Entwurf)"** (seit 09.09. an drei Stellen: oben, vor dem Ergebnis, unten). Die erweiterten Entwurfs-Szenarien stehen in **Teil C, Abschnitt 19**.
|
||
|
||
**So testen:**
|
||
1. Eine neue Produktion nur teilweise ausfüllen (Produkt + Standort + Datum + Menge), **„Zwischenspeichern"** → wird ohne Fehlermeldung gespeichert und in der Liste mit **Badge „Entwurf"** angezeigt.
|
||
2. **Produktbestand & Rohstoffbestand prüfen:** der Entwurf hat **nichts gebucht**.
|
||
3. Den Entwurf öffnen, vervollständigen, **„Produktion abschließen"** → jetzt wird gebucht, das Badge verschwindet.
|
||
4. Optik/iPad (AP-44): Phasenkästen leicht hinterlegt, kein innerer Kasten um die Chargen, auf dem iPad sind die Felder gut mit dem Finger bedienbar.
|
||
|
||
---
|
||
|
||
## 17. Verpackung: Lagerplatz
|
||
|
||
**Wo:** **[Produkte → Verpackung](/admin/inventory/packaging-items?category=packaging)**
|
||
|
||
**Neu (AP-51):** Verpackungsartikel haben jetzt ebenfalls **Raum / Regal / Fach**; in der Übersicht gibt es die Spalte **„Lagerplatz"**.
|
||
|
||
**So testen:** Einen Verpackungsartikel öffnen, Lagerplatz setzen, speichern → er erscheint in der Übersicht in der neuen Spalte.
|
||
|
||
---
|
||
|
||
## 18. Versand & Shop: Varianten-Zuordnung und Ampel
|
||
|
||
**Wo:** **[Versand → API-Bestellungen](/admin/inventory/api-orders)** und der WooCommerce-Shop
|
||
|
||
**Neu:**
|
||
- **Varianten-/Duplikat-Zuordnung (AP-34):** Jede verkaufbare Variante bucht ihr eigenes Warenwirtschafts-Produkt über die **eigene Artikelnummer**; **Aktions-Kopien** desselben Produkts (SKU `100500-a`) buchen auf die **Kernnummer** (`100500`).
|
||
- **WooCommerce-Ampel (AP-38):** Der Status-Abgleich im Shop läuft wieder (Cron), das Mapping ist vollständig (Wartestellung/Abholung/Storno).
|
||
|
||
**Voraussetzung:** Das aktualisierte **Connector-Plugin v1.6.0** muss im Shop installiert sein (Rollout-Anleitung: `dev/partnercenter-api/README.md`). Ohne dieses Update greifen AP-34/AP-38 shopseitig noch nicht.
|
||
|
||
**So testen (nach Connector-Rollout):**
|
||
1. Im Shop eine Bestellung mit einer Variante **und** einer Aktions-Kopie auslösen und ins Partnercenter übertragen.
|
||
2. Unter **API-Bestellungen** die Übertragung öffnen → jede Position ist dem richtigen Produkt zugeordnet (Variante = eigenes Produkt, Aktions-Kopie = Kernnummer). Nicht zugeordnete Positionen wären hier rot markiert (dann fehlt der Variante die eigene Artikelnummer im Shop).
|
||
3. Eine versendete Bestellung im Shop prüfen → die Status-Ampel steht auf **grün**.
|
||
|
||
---
|
||
|
||
---
|
||
|
||
# Teil C — Nachbesserungen & Nachtrag (08./09.09.2026)
|
||
|
||
> Eine unabhängige Prüfung der V7-Umsetzung hat 18 Befunde ergeben; alle sind behoben,
|
||
> dazu der Kundennachtrag **AP-52**. Diese Abschnitte prüfen die spürbaren Änderungen.
|
||
|
||
## 19. Produktion: Entwurf sichert alles, blockiert nichts
|
||
|
||
**Wo:** **Produktion → [Neue Produktion](/admin/inventory/productions/create)**
|
||
|
||
**Geändert:**
|
||
- Der Entwurf speichert **jede** Chargenzeile — auch „Menge ohne Charge" und „Charge ohne Menge" — und Ergebniszeilen ohne Stückzahl.
|
||
- Eine im Entwurf gewählte, inzwischen nicht mehr verfügbare Charge wird beim Öffnen **rot markiert**.
|
||
- Entwürfe **reduzieren keine Chargenverfügbarkeit** (weder für andere Produktionen noch für den Ausschuss).
|
||
- **„Zwischenspeichern (Entwurf)"** gibt es dreimal auf der Seite; das **Notizfeld** wächst beim Tippen mit (iPad).
|
||
- Nach einer Ablehnung durch „Produktion abschließen" bleiben **alle Chargen und Ist-Mengen** im Formular.
|
||
|
||
**So testen:**
|
||
1. Rezeptur-Produkt wählen, bei einem Rohstoff nur **9,8 g** eintragen, **keine** Charge wählen → Zwischenspeichern → Entwurf öffnen: die 9,8 g stehen noch da, Charge ist leer.
|
||
2. Charge ergänzen, bei einem Ergebnisprodukt die Stückzahl leer lassen → Zwischenspeichern → Ergebniszeile bleibt erhalten.
|
||
3. Parallel eine **zweite Produktion** anlegen: die im Entwurf gewählte Charge ist dort in **voller** Menge wählbar.
|
||
4. Beim Abschließen absichtlich **20 g statt 10 g** eintragen → Fehlermeldung; alle Chargen/Mengen stehen unverändert im Formular.
|
||
|
||
---
|
||
|
||
## 20. Produktion: Rohstoff in mehreren Phasen, Ergebnisprodukte
|
||
|
||
**Wo:** Produkt bearbeiten (Hersteller-Rezeptur) und **Produktion → Neue Produktion**
|
||
|
||
**Geändert:**
|
||
- Ein Rohstoff in **zwei Phasen** (z. B. 6 % in A, 4 % in B) behält beim Wiederöffnen je Phase seine Ist-Menge. Auch Speichern des Artikels (Phase umbenennen, neue Phase voranstellen, umsortieren) ändert das nicht.
|
||
- Im **Produktionsergebnis** sind alle aktiven Einzelprodukte wählbar, auch solche ohne „In der Produktion anzeigen" (5-ml-Variante).
|
||
|
||
**So testen:**
|
||
1. Rezeptur mit demselben Rohstoff in Phase A (6 %) und Phase B (4 %) anlegen → Produktion mit 6 g / 4 g als Entwurf speichern → öffnen: **6 g in A, 4 g in B** (nicht 10/10).
|
||
2. Artikel öffnen, Phase „Vorbereitung" (nur Text) **vor** Phase A einfügen, Phase B umbenennen, speichern → Entwurf erneut öffnen: weiterhin 6 g / 4 g in den richtigen Phasen.
|
||
3. Bei der 5-ml-Variante „In der Produktion anzeigen" abwählen → in der Planung oben nicht mehr wählbar, im Ergebnis unten weiterhin.
|
||
|
||
---
|
||
|
||
## 21. Verpackungs-Vorschau: Bestand, Differenz, Lagerort (AP-52) + historischer Verbrauch
|
||
|
||
**Wo:** **Produktion → Neue Produktion** / Produktion bearbeiten
|
||
|
||
**Neu/geändert:**
|
||
- Vorschau-Spalten: **Artikel · Stück gesamt · Lagerort · Bestand · Differenz** (rot/grün wie bei den Rohstoffen). Rechnet aus dem **Produktionsergebnis** und reagiert live auf Produkt-/Mengenänderungen und zusätzliche Ergebniszeilen.
|
||
- Bei einer **bereits gebuchten** Produktion zeigt die Vorschau den **gespeicherten** Verbrauch, solange Ergebnisprodukte und Stückzahlen unverändert sind — auch wenn die Stückliste am Produkt inzwischen anders ist (Differenz dann „—"). Ändert man die Stückzahl, wird mit der aktuellen Stückliste neu gerechnet (Hinweis unter der Tabelle).
|
||
- **Füllgewicht** akzeptiert Nachkommastellen (39,5).
|
||
|
||
**So testen:**
|
||
1. Verpackungsartikel mit Lagerplatz und Wareneingang anlegen → Neue Produktion: Vorschau zeigt Lagerort, Bestand und Differenz; Stückzahl über den Bestand erhöhen → Differenz wird **rot**.
|
||
2. Produktion mit 1 Tiegel je Stück buchen → am Produkt Stückliste auf 2 Tiegel ändern → Produktion bearbeiten: Vorschau zeigt weiter den gespeicherten Verbrauch; nur die Notiz ändern und speichern → Detailseite: Verpackungsverbrauch unverändert. Danach Stückzahl ändern → Neuberechnung.
|
||
3. Am Produkt Füllgewicht **39,5** eintragen → Soll-Gramm in der Produktion skalieren mit 39,5 (nicht 39).
|
||
|
||
---
|
||
|
||
## 22. Ausschuss ohne Charge & Köln-Default
|
||
|
||
**Wo:** **[Ausgang / Ausschuss](/admin/inventory/stock-disposals)**
|
||
|
||
**Geändert:** Ohne gewählte Charge prüft das System gegen den Bestand des **gewählten Lagerorts** und verteilt die Menge nach frühestem MHD auf die Chargen dieses Lagerorts (je Charge eine Buchung). **Köln** ist vorbelegt.
|
||
|
||
**So testen:**
|
||
1. Rohstoff mit zwei Chargen (älteres und jüngeres MHD) am Lagerort Köln; 400 g ohne Charge buchen → in der Ausgangsliste zwei Buchungen (ältere Charge zuerst); Rohstoff-Detail: Chargenrest entsprechend kleiner.
|
||
2. Denselben Rohstoff an einem **leeren** zweiten Lagerort ohne Charge buchen → wird abgelehnt („übersteigt den Restbestand am gewählten Lagerort").
|
||
|
||
---
|
||
|
||
## 23. Bestell-Abwicklung: Versand nur mit Zahlungsfreigabe
|
||
|
||
**Wo:** **[Bestellungen → Abwicklung](/admin/inventory/orders)**
|
||
|
||
**Geändert:** „Versendet" ist nur für **versandfertige** Bestellungen möglich (bezahlt; Rechnung/API sofort). Der Button ist sonst ausgegraut. „Konfektioniert" bleibt vorher möglich.
|
||
|
||
**So testen:** Eine Vorkasse-Bestellung ohne Zahlungseingang → „Versendet" ist deaktiviert, „Konfektioniert" funktioniert. Zahlung eingegangen → „Versendet" buchbar, Abgang in der Produktbestand-Historie.
|
||
|
||
---
|
||
|
||
## 24. Rohstoff-Detail: Preise nur für Admins, „Enthalten in"
|
||
|
||
**Wo:** **[Rohstoffbestand](/admin/inventory/raw-material-stock)**, Rohstoff öffnen
|
||
|
||
**Geändert:**
|
||
- Spalte **„Letzter Einkauf (Netto/kg)"** nur für Admins (Versand-/Produktionsmitarbeiter sehen keine Preise).
|
||
- **„Enthalten in"** zeigt **Anteil (%)** und **Verbrauch (g/Stück)** inkl. Faktor, Phasen summiert.
|
||
|
||
**So testen:** Als Mitarbeiter (Copyreader) anmelden → keine Preisspalte; als Admin → Preis sichtbar. Produkt mit 50 g Füllgewicht und 20 % Anteil (Faktor 1,1) → „20,00 %" und „11,00 g (netto 10,00 g)".
|
||
|
||
---
|
||
|
||
## 25. Einkauf: ml-Kopie, Historie, Verbrauch/Monat
|
||
|
||
**Wo:** **[Einkauf & Wareneingang](/admin/inventory/stock-entries)**, **[Produktbestand → Historie](/admin/inventory/product-stock/history)**, **[Produktbestand](/admin/inventory/product-stock)**
|
||
|
||
**Geändert:**
|
||
- **Kopieren** einer ml-Bestellung erhält Einheit und Dichte — auch nach Bearbeiten und Wareneingang.
|
||
- **Historie** zeigt bei mehr als 500 Treffern die Gesamtzahl und **„Alle anzeigen"**.
|
||
- **Verbrauch/Monat** zählt Versand → Storno → Wiederversand nur einmal.
|
||
|
||
**So testen:**
|
||
1. 100-ml-Bestellung (Dichte 0,79) kopieren → Kopie öffnen: 100,00 **ml** → speichern → Wareneingang „100" → gebucht **79 g**.
|
||
2. Historie eines Produkts mit vielen Buchungen filtern → Hinweis „… von … Buchungen" und „Alle anzeigen".
|
||
3. Bestellung versenden, zurücksetzen, erneut versenden → Verbrauch/Monat steigt nur um die einfache Menge.
|
||
|
||
---
|
||
|
||
## 26. Mengen mit drei Nachkommastellen (AP-53)
|
||
|
||
**Wo:** **[Produktion](/admin/inventory/productions)** (Ist-Menge je Charge), **[Einkauf & Wareneingang](/admin/inventory/stock-entries)** (Bestell-/Eingangsmenge), **[Ausschuss](/admin/inventory/stock-disposals)** (Menge)
|
||
|
||
**Neu:**
|
||
- Gramm-Mengen werden auf **drei Nachkommastellen** (Milligramm) eingegeben, gespeichert, gerechnet und angezeigt — z. B. **0,125 g**. Bisher wurde auf zwei Stellen gerundet (0,125 → 0,13).
|
||
- Anzeige: mindestens zwei Stellen („12,50 g"), die dritte nur wenn belegt („0,125 g"); Chargen-Restbestände im Rohstoff-Detail zeigen sie ebenfalls.
|
||
- Eingabe: **Komma** als Dezimaltrenner. Punkt mit 1–2 Stellen („5.12") oder „0.125" wird als Komma gelesen; „1.500" bleibt 1500 g (Tausenderpunkt).
|
||
- Soll-Ist-Toleranz: 5 % mit Sockel 0,005 g (vorher 0,05 g) — Ampel im Formular und Prüfung beim Abschließen verwenden dieselbe Regel (Nachbesserung 10.09.2026).
|
||
- Mehr als drei Nachkommastellen werden auf drei gerundet (0,1234 → 0,123); weniger als 0,001 g — auch nach ml-Umrechnung — wird abgelehnt.
|
||
|
||
**So testen:**
|
||
1. Rezeptur mit einem Rohstoff zu 0,125 % (bzw. 0,125 g je Stück) anlegen, Produktion für 1 Stück: Ist-Menge **0,125** eintragen → Ampel grün, abschließen → Produktionsdetail zeigt **0,125 g**, Rohstoff-Detail: Chargen-Rest um genau 0,125 g kleiner (auch in der **Hauptzeile** der Charge, nicht nur in den Einkaufs-Unterzeilen).
|
||
2. Denselben Entwurf mit **1,125** speichern und wieder öffnen → im Feld steht **1,125** (nicht 1.125 oder 1,13).
|
||
3. Wareneingang mit **250,375 g** buchen → Detail zeigt 250,375 g; Ausschuss **0,005 g** buchen → geht durch, Restbestand rechnet auf drei Stellen.
|
||
4. Gegenprobe Tausenderpunkt: Ist-Menge **1.500** eingeben → Summe der Phase zeigt 1.500,00 g (nicht 1,5).
|
||
5. Toleranzrand: Soll **0,020 g**, Ist **0,025** → Ampel grün **und** Abschließen geht durch; Ist **0,026** → Ampel rot **und** Abschließen wird abgelehnt. Soll 0,125 g: 0,131 grün, 0,132 rot.
|
||
6. Ausschuss **0,005 g** bei nur 0,004 g Rest → Fehlermeldung nennt **0,005 g** und **0,004 g** (nicht 0,01/0,00).
|
||
|
||
---
|
||
|
||
## 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.
|
||
|
||
---
|
||
|
||
## 28. Rohstoff-Detail: Bestandsrechnung nachvollziehen (17.09.2026)
|
||
|
||
**Wo:** **[Rohstoffbestand](/admin/inventory/raw-material-stock)** → Rohstoff öffnen → unten **„Bestandsrechnung nachvollziehen“** (aufklappen).
|
||
|
||
**Neu:** Alle gebuchten Eingänge – auch aufgebrauchte (Rest 0), die in „Verfügbare Chargen“ nicht mehr stehen – mit Eingang, Produktion, Ausschuss (mit/ohne Chargenbezug) und Rest je Eingang; darunter die Summenzeile bis zum Gesamtbestand und die Liste der Ausschuss-Buchungen ohne Chargenbezug.
|
||
|
||
**So testen:**
|
||
1. Rohstoff mit zwei Eingängen (z. B. 500 g MHD 2027, 1.000 g MHD 2028). Ausschuss **ohne Charge** über 700 g buchen → Chargenansicht zeigt nur noch den zweiten Eingang mit 800 g; im Klappbereich stehen **beide** Eingänge: erster „− 500 g / 0 g, aufgebraucht“, zweiter „− 200 g / 800 g“, Summenzeile „1.500 − 0 − 0 − 700 = 800 g“ = Kopfzahl.
|
||
2. Kopfzeile des Klappbereichs zeigt „2 Eingänge, 1 davon aufgebraucht, 1 Ausschuss ohne Chargenbezug“; die Ausschuss-Buchung steht mit Datum, Grund, Notiz und Bearbeiter darunter.
|
||
3. Aus dem zweiten Eingang 100 g produzieren → Spalte „Produktion“ − 100 g, Rest 700 g, Summenzeile entsprechend.
|
||
4. Auge-Symbol rechts in der Zeile (oder das Datum) anklicken → öffnet die Detailseite des Wareneingangs.
|
||
|
||
---
|
||
|
||
## 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), ein systemweiter Audit-Trail (für Einkäufe siehe Abschnitt 27), 2FA, blockbasierte Rechte und die WaWi-Einstellungsseite folgen in der nächsten Runde.
|