- resources/docs/hinweise.md: Abschnitt „Neu / geändert 08./09.09.2026“ (alle nutzerrelevanten Nachbesserungen + AP-52), Spalte „Lagerort“, Entwurfsregeln, Versand nur versandfertig, Köln-Default auch im Ausschuss. - resources/docs/testleitfaden.md: Version 3 mit Teil C (Abschnitte 19–25). - README: Deployment-Checkliste (Migrationen 2026_09_08_* auf Dev-DB gelaufen), In-App-Doku als maßgebliche Nutzerdoku; docs/testleitfaden V1 als Archiv markiert. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
456 lines
31 KiB
Markdown
456 lines
31 KiB
Markdown
# 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:** 09.09.2026 — ein geführter Rundgang durch die neuen Funktionen
|
||
> steht unter **Einstellungen → Leitfaden** (aktuell **Version 3**: Runde V7.0
|
||
> plus Nachbesserungen und Nachtrag vom 08./09.09.2026).
|
||
|
||
---
|
||
|
||
## 1. Überblick / Entwicklungsstand
|
||
|
||
### Bereits nutzbar
|
||
|
||
- **Einstellungen → Allgemein:** Umsatzsteuersätze, Lieferzeit-Vorlagen
|
||
(inkl. Tageswert), **Ausschuss-Gründe** sowie die Lagerort-Bausteine
|
||
**Räume, Regale und Fächer** pflegbar. Die Ausschuss-Gründe
|
||
erscheinen im Ausschuss-Formular (nur aktive, in gepflegter Reihenfolge).
|
||
- **Stammdaten:** Lagerorte (Standorte), Rohstoffqualität, Verpackungsmaterial,
|
||
Lieferanten-Kategorien.
|
||
- **Lieferanten:** Bestellweg (E-Mail / Online-Shop), Bestell-Adresse,
|
||
Lieferzeit (Freitext + Tage).
|
||
- **INCI / Rohstoffe:** mehrere Lieferanten **je mit eigener Bestell-URL**
|
||
(leer = per Mail), **Alternativer Name** (Handelsname), **Lagerort
|
||
Raum | Regal | Fach**, Umsatzsteuersatz, eigene Lieferzeit, Häkchen
|
||
**„Kein Rohstoffbestand"** und Listen-Filter **„nur aktive"**.
|
||
- **Einkauf & Wareneingang:** zweistufig (bestellt → eingegangen), Charge & MHD,
|
||
Netto-/Brutto-Automatik mit USt-Snapshot, Einkauf duplizierbar. Beim Buchen
|
||
erkennt die Maske **bereits vorhandene Chargen** und belegt MHD/Qualität vor.
|
||
- **Produktion:** rechnet ausschließlich auf Basis der **Hersteller-Rezeptur**
|
||
(inkl. **Rezeptur-Phasen** mit Notizen). Die Maske zeigt die INCI-Liste mit
|
||
Alternativname und Regal; gebucht wird der Produktbestand aus dem
|
||
**Produktionsergebnis** (auch mehrere Produkte je Produktion), die geplante
|
||
Stückzahl ist nur Planung. Chargen-Nrn. werden aus dem **Produkt-Präfix +
|
||
Produktionsdatum** vorbelegt. Fehlt die Hersteller-Rezeptur, 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. Umschalter **„Alle" / „Nur aus Herstellerrezepturen"**, 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 (**je Chargennummer summiert**, Einzel-Einkäufe als Unterzeilen)
|
||
sowie die zugeordneten Lieferanten mit Bestell-Link (Shop / Per Mail) und
|
||
dem **letzten Einkaufspreis (Netto/kg)** je Lieferant.
|
||
**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.
|
||
- **Bestell-Abwicklung — Versand nur versandfertig (seit 08.09.2026):** „Versendet"
|
||
ist nur für bezahlte Bestellungen (bzw. Rechnung/API) möglich; „Konfektioniert"
|
||
auch vorher. Siehe „Neu / geändert 08./09.09.2026".
|
||
- **Rohstoffbestand — kritische außerhalb der Rezepturen (Hinweis, 20.07.2026):**
|
||
Die Standardansicht zeigt „Nur aus Herstellerrezepturen", das Sidebar-Badge
|
||
zählt aber **alle** aktiven kritischen Rohstoffe. Liegt ein kritischer
|
||
Rohstoff außerhalb der Rezepturen (z. B. Neuentwicklung), erscheint über der
|
||
Liste ein Hinweis mit „Alle anzeigen", damit Badge und Liste nicht
|
||
auseinanderlaufen.
|
||
- **Shop-Bestandsabzug beim Versand (neu 16.07.2026):** Wird eine Bestellung
|
||
auf **„versendet"** oder **„abgeschlossen"** gesetzt, bucht das System je
|
||
Bestellposition automatisch einen Abgang im **Produktbestand** (Grund
|
||
„Verkauf", mit Verweis auf die Bestellung). **Sets** werden dabei in ihre
|
||
Einzelprodukte aufgelöst (auch verschachtelt). Wird der Versandstatus
|
||
zurückgesetzt oder die Bestellung **storniert**, führt eine automatische
|
||
**Gegenbuchung** den Bestand zurück – auch beim automatischen Storno durch
|
||
die Zahlungserinnerung. Doppelte Statuswechsel buchen nie doppelt.
|
||
Gilt für **alle Bestellquellen** (WooCommerce-Fulfillment, Whitelabel-Shop,
|
||
direkt im Partnercenter angelegte Bestellungen). **Alt-Bestellungen**, die
|
||
vor dem 16.07.2026 versendet wurden, sind geschützt: erneutes Speichern
|
||
ihres Status zieht nicht rückwirkend vom heutigen Bestand ab. Der Schutz ist
|
||
seit 20.07.2026 als **unveränderliches Merkmal** an der Bestellung hinterlegt
|
||
(einmalig beim Update gesetzt) und übersteht damit auch Storno und erneutes
|
||
Versenden einer Alt-Bestellung.
|
||
- **API-Bestellungen (neu 16.07.2026):** Unterpunkt von **Bestellungen** in der
|
||
Warenwirtschaft. Jede über die Partnercenter-API eingehende
|
||
Bestell-Übertragung (WooCommerce-Fulfillment) wird protokolliert – auch
|
||
abgelehnte. Kann eine Position **keinem Produkt zugeordnet** werden
|
||
(WP-Nummer/SKU unbekannt), ist der Eintrag **rot markiert**; ein Klick auf
|
||
**„Ansehen"** öffnet den Inhalt der Übertragung (SKU, Produkt, Menge, Preis,
|
||
Meldung je Position). Zusätzlich warnt die Seite bei **doppelten WP-Nummern**
|
||
aktiver Produkte und listet aktive Produkte **ohne WP-Nummer** auf.
|
||
- **Bestell-Abwicklung (neu 16.07.2026):** Menü **Bestellungen → Abwicklung** —
|
||
kompakte Tagesübersicht für Versand-Mitarbeiter. Vier Kacheln als Filter
|
||
(**Heute eingegangen / Zu konfektionieren / Versandfertig / Heute
|
||
versendet**), je Bestellung eine Zeile mit aufklappbarer **Packliste** (Sets
|
||
mit Einzelkomponenten), Gewicht, Zahlstatus, **Dokumenten** und den Aktionen
|
||
**„Konfektioniert"** (→ in Bearbeitung) und **„Versendet"** (→ bucht den
|
||
Bestandsabzug). **Versandfertig = bezahlt:** Zahlart Rechnung gilt sofort,
|
||
Vorkasse erst nach Zahlungseingang, API-Bestellungen immer.
|
||
**Dokumente:** Rechnung + Lieferschein werden per Klick erstellt (ohne
|
||
E-Mail-Versand) und als PDF geöffnet — einzeln oder kombiniert zum Druck.
|
||
**API-Bestellungen bekommen keine Rechnung im System** – der Link zur
|
||
externen Shop-Rechnung wird angezeigt. Das Board erlaubt nur
|
||
Vorwärts-Schritte; Storno/Zurücksetzen läuft weiter über **Verkäufe**.
|
||
**Sammel-Druck:** Über die Checkboxen mehrere Bestellungen auswählen (Haken
|
||
im Tabellenkopf = alle sichtbaren) und mit **„Lieferscheine drucken"** bzw.
|
||
**„+ Rechnungen"** ein einziges PDF für den Stapeldruck erzeugen — fehlende
|
||
Dokumente werden dabei automatisch miterstellt (ohne E-Mail).
|
||
- **DHL-Label aus dem Shop (Brückenlösung, neu 17.07.2026, überarbeitet
|
||
20.07.2026):** Wird das Versandetikett im WooCommerce-Shop erstellt (Plugin
|
||
„DHL for WooCommerce") und die Bestellung danach übertragen, kommen **Label
|
||
und Sendungsnummer mit**: Der Shop-Connector (ab **Version 1.5.0**) schickt
|
||
die **Label-PDF direkt mit** (der Label-Ordner im Shop ist zugriffsgeschützt,
|
||
daher kein Link/Download über die Shop-URL); das System speichert eine
|
||
**eigene Kopie** (bleibt verfügbar, auch wenn das Label im Shop gelöscht
|
||
wird) und zeigt in der Abwicklung und den Bestell-Details einen
|
||
**„Label"-Download** plus die Sendungsnummer. Wird das Label im Shop erst
|
||
später (neu) erstellt, reicht der Shop es automatisch nach. Die
|
||
Sendungsnummer wird über die Status-Abfrage auch an den Shop zurückgemeldet
|
||
(Tracking-Link für den Endkunden). **Wichtig fürs Deployment:** Das Label
|
||
kommt erst an, wenn im Shop der Connector 1.5.0 installiert ist. Die
|
||
vollständige DHL-Anbindung im Partnercenter (Labels direkt hier erzeugen,
|
||
AP-32) bleibt geplant.
|
||
|
||
### Neu in Runde V7.0 (26.–28.08.2026)
|
||
|
||
Aus der Testphasen-Rückmeldung 26.08.2026 umgesetzt:
|
||
|
||
- **Produktionsmengen auf das Füllgewicht skaliert (AP-35):** Die Hersteller-Rezeptur
|
||
wird als **Anteil in %** geführt; die Soll-Gramm in der Produktion ergeben sich
|
||
aus **Anteil % × Füllgewicht × Stückzahl**. Am Produkt gibt es dafür das optionale
|
||
Feld **„Füllgewicht (g)"** (leer = Menge = Gramm, also 1 g/ml). Vorher wurde immer
|
||
auf 100 g gerechnet.
|
||
- **Abwiegen mit Ist-Wert & ±5-%-Ampel (AP-39):** Je Charge wird die tatsächlich
|
||
entnommene Menge eingetragen; der Bestandsabzug kommt aus diesem Ist-Wert. Die
|
||
Ampel je Rohstoff: **orange** = nichts eingetragen, **grün** = Wert vorhanden und
|
||
höchstens **±5 %** vom Soll, **rot** = Abweichung über 5 % (Schutz vor Zahlendreher).
|
||
- **INCI-Tabelle: Bestand & Differenz (AP-40):** Rechts zwei neue Spalten —
|
||
aktueller **Bestand** des Rohstoffs und **Differenz** (Bestand − Soll; negativ rot,
|
||
positiv grün). Spaltenkopf für den Lagerplatz heißt seit 09.09.2026 einheitlich
|
||
**„Lagerort"** (vorher „Regal"/„Ablage").
|
||
- **Verpackungs-Vorschau oben + Phasen-Gramm (AP-41):** Die Box „Verpackung
|
||
(Vorschau)" steht direkt unter der INCI-Tabelle; je Phase steht die **Gesamt-Gramm-Summe**
|
||
in Klammern hinter dem Namen (zeigt die nötige Rührgefäß-Größe).
|
||
- **Rohstoff-Dichte / ml-Erfassung (AP-42):** Am Rohstoff kann eine **Dichte (g/ml)**
|
||
hinterlegt werden. Im Wareneingang lässt sich die Menge dann in **ml** erfassen und
|
||
wird über die Dichte in **Gramm** umgerechnet (kanonisch wird weiter in Gramm
|
||
geführt). Ohne Dichte bleibt die Erfassung in Gramm.
|
||
- **Verpackungsverbrauch aus dem Ergebnis (AP-45):** Verpackung (Tiegel/Etikett) wird
|
||
aus dem **Produktionsergebnis** gebucht (je Ergebnisprodukt eigene Stückliste ×
|
||
Ergebnismenge), nicht mehr aus der Planmenge.
|
||
- **INCI-Liste nach Konzentration (AP-46):** Die INCI-Anzeige oben ist nach **Anteil
|
||
absteigend** sortiert; die Phasen-/Chargenreihenfolge bleibt unverändert.
|
||
- **„Produktionsrelevant"-Flag (AP-47):** Am Produkt steuerbar; das Produktions-Dropdown
|
||
und die Rohstoffbestand-Box „Enthalten in" zeigen nur noch produktionsrelevante
|
||
Produkte (blendet z. B. reine Handelsware/Varianten aus).
|
||
- **Buchungsgründe getrennt & pflegbar (AP-48):** Produktbestand-Bewegungen haben jetzt
|
||
**getrennte Listen für Eingang und Ausgang**, beide unter **Einstellungen → Allgemein**
|
||
pflegbar. Beim Buchen erscheint je Richtung die passende Liste.
|
||
- **Lieferanten-Dropdown gefiltert (AP-49):** Am Inhaltsstoff werden nur noch
|
||
**Rohstoff-Lieferanten** (Kategorie „Kosmetikrohstoffe") angeboten.
|
||
- **Lagerorte übernehmbar + Köln-Default (AP-50):** Ein belegter Lagerort lässt sich
|
||
löschen, indem seine Buchungen auf einen **Ziel-Lagerort übernommen** werden;
|
||
**Köln** ist in Wareneingang, Produktion **und Ausschuss** als Standort vorbelegt
|
||
(nur solange Köln aktiv ist). Die Standort-Funktion bleibt für künftige Standorte
|
||
erhalten.
|
||
- **Lagerplatz für Produkte & Verpackung (AP-51):** Die Lagerplatz-Zuordnung
|
||
**Raum / Regal / Fach** gibt es jetzt auch bei **Produkten** und
|
||
**Verpackungsartikeln** (gleiche Bausteine wie beim Rohstoff). Angezeigt im
|
||
Produktbestand und in der Produktverpackungs-Übersicht.
|
||
- **Produktion zwischenspeichern (Entwurf) (AP-43):** Neben **„Produktion abschließen"**
|
||
gibt es **„Zwischenspeichern (Entwurf)"** — seit 09.09.2026 an drei Stellen
|
||
(oben, vor dem Produktionsergebnis, unten). Ein Entwurf sichert den kompletten
|
||
Arbeitsstand und **bucht keinen Bestand**; Pflicht sind nur Produkt, Standort,
|
||
Datum und Planmenge. Erst „abschließen" prüft vollständig und bucht. Entwürfe sind
|
||
mit einem Badge markiert. Details unter „Neu / geändert 08./09.09.2026".
|
||
- **Rezeptur-Darstellung aufgehübscht (AP-44):** Phasenkästen leicht hinterlegt, kein
|
||
innerer Kasten mehr um die Chargen, einheitliche Schrift, iPad-taugliche (größere)
|
||
Eingabefelder, formatierte Phasenbeschreibung.
|
||
- **Varianten-/Duplikat-Zuordnung (AP-34):** Bestellungen mit Produktvarianten werden
|
||
korrekt zugeordnet (siehe Abschnitt „Wichtige Hinweise → Varianten & Aktions-Kopien").
|
||
*Benötigt das aktualisierte Shop-Connector-Plugin (v1.6.0).*
|
||
- **WooCommerce-Ampel (AP-38):** Der Status-Abgleich im Shop läuft wieder; das
|
||
Status-Mapping ist vollständig (Wartestellung, Abholung, Storno). *Details im
|
||
Connector-README; benötigt v1.6.0.*
|
||
|
||
### Neu / geändert 08./09.09.2026 (Nachbesserungen + Nachtrag AP-52)
|
||
|
||
Nach der unabhängigen Prüfung der V7-Umsetzung wurden alle Befunde behoben. Was sich
|
||
dadurch für die Bedienung ändert:
|
||
|
||
- **Verpackungs-Vorschau mit Bestand, Differenz und Lagerort (AP-52, Kundennachtrag):**
|
||
Die Box „Verpackung (Vorschau)" in der Produktion zeigt je Verpackungsartikel
|
||
**Stück gesamt**, **Lagerort** (Raum | Regal | Fach), **Bestand** und **Differenz**
|
||
(Bestand − Bedarf; rot = fehlt, grün = reicht) — genau wie bei den Rohstoffen
|
||
darüber. So sieht man schon bei der Planung, ob alles da ist und wo es liegt. Die
|
||
Vorschau folgt dem **Produktionsergebnis** (Produkte, Stückzahlen, Zeilen) und
|
||
aktualisiert sich live.
|
||
- **Spalte „Lagerort":** Der Lagerplatz heißt in der INCI-Tabelle und in der
|
||
Verpackungs-Vorschau einheitlich **„Lagerort"** (statt „Ablage"/„Regal").
|
||
- **Entwurf sichert alles:** Ein Entwurf speichert **jede** Chargenzeile — auch mit
|
||
eingetragener Menge, aber noch ohne gewählte Charge, oder mit gewählter Charge ohne
|
||
Menge — und Ergebniszeilen auch ohne Stückzahl. Ist eine im Entwurf gewählte Charge
|
||
beim Wiederöffnen nicht mehr verfügbar, wird sie **rot markiert** (statt still zu
|
||
verschwinden); der Abschluss verlangt dann eine andere Charge. Entwürfe **blockieren
|
||
keine Chargen** mehr für andere Produktionen oder den Ausschuss.
|
||
- **Eingaben bleiben nach einer Fehlermeldung erhalten:** Lehnt „Produktion
|
||
abschließen" etwas ab (z. B. Abweichung über 5 %), stehen alle Chargen und
|
||
Ist-Mengen unverändert im Formular.
|
||
- **Rohstoff in mehreren Phasen:** Wird derselbe Rohstoff in zwei Phasen verwendet,
|
||
bleibt beim Wiederöffnen die Ist-Menge **je Phase** erhalten (vorher wurde die
|
||
Gesamtmenge in jeder Phase eingesetzt). Auch das Speichern des Artikels
|
||
(Umbenennen, Umsortieren, Einfügen von Phasen) ändert diese Zuordnung nicht mehr.
|
||
- **Ergebnisprodukte:** Im Produktionsergebnis sind **alle aktiven Einzelprodukte**
|
||
wählbar — auch nicht produktionsrelevante (z. B. die 5-ml-Variante aus der
|
||
50-ml-Masse). Der Filter „produktionsrelevant" gilt nur für die Planung oben.
|
||
- **Historischer Verpackungsverbrauch:** Wird eine bereits gebuchte Produktion
|
||
nachträglich bearbeitet (Notiz, Datum, Chargen-Nr., Aufteilung auf mehrere Zeilen bei
|
||
gleicher Gesamtstückzahl), bleibt der beim Buchen gespeicherte Verpackungsverbrauch
|
||
erhalten — auch wenn die Stückliste am Produkt inzwischen geändert wurde. Nur eine
|
||
echte Änderung der Ergebnisprodukte oder -stückzahlen berechnet ihn mit der aktuellen
|
||
Stückliste neu. Die Vorschau zeigt in diesem Fall den gespeicherten Verbrauch.
|
||
- **Füllgewicht mit Nachkommastellen:** z. B. **39,5 g** (50 ml × Dichte 0,79) — vorher
|
||
wurde auf ganze Gramm gekürzt.
|
||
- **Ausschuss ohne Charge:** Wird kein bestimmter Wareneingang gewählt, prüft das
|
||
System gegen den Bestand des **gewählten Lagerorts** und verteilt die Menge — wie der
|
||
Produktionsverbrauch — **nach frühestem MHD auf die Chargen** dieses Lagerorts (je
|
||
Charge eine Buchung). Gesamt-, Standort- und Chargenbestand stimmen damit überein;
|
||
ältere Ausschussbuchungen ohne Chargenbezug werden für die Chargenverfügbarkeit
|
||
rechnerisch genauso angerechnet.
|
||
- **Versand nur mit Zahlungsfreigabe:** In der Bestell-Abwicklung lässt sich
|
||
**„Versendet"** nur buchen, wenn die Bestellung **versandfertig** ist (bezahlt;
|
||
Rechnung und API-Bestellungen gelten sofort). Der Button ist sonst ausgegraut, ein
|
||
direkter Aufruf wird abgelehnt. **„Konfektioniert"** bleibt vor Zahlungseingang
|
||
möglich.
|
||
- **Einkaufspreise nur für Admins:** Der letzte Einkaufspreis je Lieferant auf der
|
||
Rohstoff-Detailseite ist — wie in Einkauf & Wareneingang — nur für Admins sichtbar.
|
||
- **„Enthalten in" (Rohstoff-Detail):** zeigt je Produkt den **Anteil in %** und den
|
||
**Verbrauch in g je Stück** (Anteil × Füllgewicht × Faktor; netto in Klammern),
|
||
Phasen summiert. Ohne Füllgewicht steht „—".
|
||
- **Verbrauch/Monat:** Versand → Rücksetzung/Storno → erneuter Versand zählt nur einmal
|
||
(Gegenbuchungen werden verrechnet).
|
||
- **Produktbestand-Historie:** zeigt die Gesamtzahl und einen Link **„Alle anzeigen"**,
|
||
wenn mehr als 500 Buchungen zum Filter passen.
|
||
- **ml-Einkauf kopieren:** Die Kopie einer in **ml** erfassten Bestellung bleibt eine
|
||
ml-Bestellung (Menge in ml, Dichte übernommen) — auch beim anschließenden Bearbeiten
|
||
und Wareneingang. Ein Wareneingang „100" bucht also 79 g, nicht 100 g.
|
||
- **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.
|
||
|
||
### 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**,
|
||
**blockbasierte Rechte**, **2FA für Admins**,
|
||
**WaWi-Einstellungsseite** (Schwellwerte/Defaults zentral).
|
||
- **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 buchen automatisch beim Versand** (siehe
|
||
Shop-Bestandsabzug) und zählen in „Verbrauch/Monat" mit.
|
||
- **Positionen ohne Produktzuordnung fehlen in Bestellung und Bestandsabzug:**
|
||
Überträgt WooCommerce eine SKU, die im Partnercenter keinem Produkt
|
||
zugeordnet ist, wird die Position **nicht** übernommen – die Bestellung
|
||
entsteht ohne sie. Solche Fälle sind unter **API-Bestellungen** rot markiert
|
||
und sollten zeitnah geprüft werden (WP-Nummer am Produkt ergänzen, Position
|
||
ggf. manuell nachpflegen).
|
||
- **Partner-Eigenversand berührt das Lager nicht:** Bestellungen, die Partner
|
||
selbst versenden, übertragen keinen Warenkorb ins Partnercenter und erzeugen
|
||
bewusst keinen Bestandsabzug – der Partner versendet aus eigenem Bestand
|
||
(Kundenentscheid 16.07.2026: bestätigt).
|
||
- **Versand-Mail enthält immer den Lieferschein (Fix 16.07.2026):** Die
|
||
Logistik-Mail („Rechnung/Lieferschein an den Versand") hängt jetzt **immer**
|
||
Rechnung **und** Lieferschein an — unabhängig davon, ob die Bestellung
|
||
White-Label-/Logo-Produkte enthält. Vorher fehlte der Lieferschein bei
|
||
Bestellungen ohne eigenes Etikett, was zu Fehlversänden an die
|
||
Rechnungsadresse führen konnte. Fehlt eine der beiden PDF-Dateien auf dem
|
||
Server (Altdaten), wird sie beim Mailversand automatisch mit der
|
||
bestehenden Rechnungsnummer neu erzeugt.
|
||
- **Status-Vorrang der Warenwirtschaft (Kundenentscheid 16.07.2026 — wichtig):**
|
||
Das Öffnen einer Bestell-Detailseite setzt eine offene Bestellung bislang
|
||
automatisch auf „in Bearbeitung". **Sobald der Status einmal über die
|
||
Bestell-Abwicklung (Warenwirtschaft) gesetzt wurde, greift dieser
|
||
Automatismus für diese Bestellung nicht mehr** – der WaWi-Status hat Vorrang
|
||
und wird von den Detailseiten nicht überschrieben. Bewusste manuelle
|
||
Statuswechsel über das Verkäufe-Modal (z. B. Storno) bleiben möglich.
|
||
- **Produktions-Maske:** zeigt die Hersteller-Rezeptur als **INCI-Liste** mit
|
||
Alternativname, Qualität, Anteil %, Gesamt-Gramm und **Lagerort** (Raum | Regal | Fach);
|
||
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 –
|
||
**„Nur aus Herstellerrezepturen"** (aktiver Produkte, **Standard** seit
|
||
17.07.2026) und **„Alle"** (auch Rohstoffe ohne Rezeptur-Bezug, z. B. für
|
||
Neuentwicklungen eingekauft). 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.
|
||
- **Soll-Mengen = Anteil % × Füllgewicht (V7.0):** Die Rezeptur-Werte sind
|
||
**Anteile in Prozent**. Die Soll-Gramm einer Produktion ergeben sich aus
|
||
**Anteil % × Füllgewicht des Produkts × Stückzahl**. Das **Füllgewicht (g)**
|
||
wird am Produkt gepflegt; ist es leer, gilt „Menge = Gramm" (1 g/ml). Die
|
||
**Abwiege-Ampel** je Rohstoff ist grün, wenn die eingetragene Ist-Menge
|
||
höchstens ±5 % vom Soll abweicht.
|
||
- **Rohstoff-Dichte für ml-Einkäufe (V7.0):** Wird ein Rohstoff in **ml**
|
||
eingekauft (z. B. eine Tinktur), aber in **Gramm** geführt, hinterlegt man am
|
||
Rohstoff die **Dichte (g/ml)**. Im Wareneingang kann dann die Einheit **ml**
|
||
gewählt werden; gespeichert wird der über die Dichte errechnete Gramm-Wert.
|
||
Ohne hinterlegte Dichte ist keine ml-Erfassung möglich.
|
||
- **Produktion: Entwurf vs. Abschließen (V7.0):** **„Zwischenspeichern (Entwurf)"**
|
||
sichert eine Produktion **ohne Bestandsbuchung** und ohne fachliche Prüfung —
|
||
ideal, um mitten in der Erfassung zu pausieren. Pflicht sind nur Produkt, Standort,
|
||
Datum und Planmenge; Chargen- und Ergebniszeilen dürfen unvollständig sein und
|
||
bleiben komplett erhalten. Ein Entwurf taucht **nirgends im Bestand** auf (auch
|
||
nicht in der Chargenverfügbarkeit) und ist mit „Entwurf" markiert. Erst
|
||
**„Produktion abschließen"** prüft Rezeptur/Chargen/Ergebnis vollständig und bucht
|
||
Roh-/Produkt-/Verpackungsbestand. Eine bereits abgeschlossene Produktion kann
|
||
**nicht** zurück in den Entwurf (die Buchungen würden sonst verwaisen).
|
||
- **Varianten & Aktions-Kopien (V7.0, AP-34):** Zwei bewusst unterschiedene Fälle:
|
||
**(1)** Physisch verschiedene Produkte (z. B. 50 ml vs. 5 ml, mit/ohne Natron) sind
|
||
im Shop **eigene Produkte mit eigener Artikelnummer** und werden je auf ihr eigenes
|
||
Warenwirtschafts-Produkt gebucht (eigener Bestand). **(2)** Kopiert ein Anwender ein
|
||
Produkt für eine Aktion / ein neues Bild, verlangt WooCommerce eine eindeutige SKU
|
||
→ Konvention **Kernnummer + Suffix** (`100500`, `100500-a`, `100500-b`). Das ist
|
||
derselbe Artikel und wird auf die **Kernnummer** gebucht. **Wichtig:** Jede
|
||
verkaufbare Variante braucht im Shop ihre **eigene Artikelnummer**; fehlt sie,
|
||
taucht die Position unter **API-Bestellungen** als „nicht zugeordnet" auf. Eine
|
||
Aktions-Kopie mit abweichendem Preis wird trotzdem korrekt gebucht (nur ein
|
||
informativer „different price"-Vermerk im Protokoll). *Voraussetzung: Connector v1.6.0
|
||
im Shop.*
|
||
- **Lagerplatz für Produkte/Verpackung (V7.0):** Neben Rohstoffen haben jetzt auch
|
||
Produkte und Verpackungsartikel eine Lagerplatz-Zuordnung **Raum | Regal | Fach**
|
||
(gleiche zentral gepflegten Bausteine). Ein Lagerbaustein lässt sich nicht löschen,
|
||
solange er noch verwendet wird.
|
||
|
||
---
|
||
|
||
## 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. **So umgesetzt (16.07.2026)** – am Versand-Statuswechsel,
|
||
Sets werden über ihre Komponenten aufgelöst.
|
||
- **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).
|
||
So umgesetzt: Präfix im Produktformular (Karte Warenwirtschaft), Vorbelegung
|
||
je Ergebniszeile der Produktion.
|
||
|
||
---
|
||
|
||
## 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.
|