# Testleitfaden Warenwirtschaft — Version 2 > **Stand:** 28.08.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) — **neu in Runde V7.0** (Testphasen-Rückmeldung 26.–28.08.2026). Wer nur die neuen Punkte prüfen will, springt direkt zu **Teil B**. --- # 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, „produktionsrelevant", 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". - **„Produktionsrelevant" (AP-47):** Schalter; nur produktionsrelevante Produkte erscheinen im Produktions-Dropdown und in der Rohstoffbestand-Box „Enthalten in". - **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 Handels-/Nebenprodukt **„produktionsrelevant" abwählen** → es verschwindet aus dem Produktions-Dropdown (Schritt 15). 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 lässt sich die Einheit **g oder ml** wählen; bei **ml** wird über die Dichte in Gramm umgerechnet und **als Gramm gespeichert**. **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). --- ## 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", „Regal" → „Ablage" (AP-40).** - **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). Kopf heißt **„Ablage"**. 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)"**. **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**. --- ## Hinweis am Rande Die Listen **Einkauf & Wareneingang** und **Produktionen** 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.