April 2026 waren Wirtschaft Feedback
This commit is contained in:
parent
02f2a4c23e
commit
9ce711d6b2
167 changed files with 25278 additions and 8518 deletions
239
dev/product management /konzept.md
Normal file
239
dev/product management /konzept.md
Normal file
|
|
@ -0,0 +1,239 @@
|
|||
|
||||
## Feedback zum Briefing
|
||||
|
||||
### A) INCI-Handling
|
||||
|
||||
* **Kopierfunktion:** Das ist ein klassischer Bug im `replicate()`-Prozess von Laravel. Wenn die INCIs über eine Pivot-Tabelle verknüpft sind, müssen die Relationen explizit mitkopiert werden.
|
||||
* **Sortierung:** Die Idee, erst zu sortieren und dann "global" zu speichern, schont die Datenbank. Ich empfehle hier **SortableJS**. Es ist performant und erlaubt flüssiges Drag & Drop.
|
||||
* **Dropdown-Logik:** Technisch muss hier sichergestellt werden, dass die Datenbank die `order`-Spalte nicht nach Alphabet, sondern nach der `timestamp` oder `index` des Klicks speichert. Das ist ein wichtiger Hinweis für die Backend-Logik!
|
||||
|
||||
### B) & D) Warenwirtschaft & Eingang
|
||||
|
||||
* **Datenmodell:** Wir brauchen eine klare Trennung zwischen **"Bestellung/Pending"** und **"Eingang/Gebucht"**.
|
||||
* **Autosuggest:** Bei über 200 Rohstoffen ist eine Bibliothek wie *Select2* oder *TomSelect* sinnvoll, damit Ivonne nicht scrollen muss, sondern tippen kann.
|
||||
* **Alarm-Funktion:** Das Feld für die Mindestmenge (z.B. 5.000g) sollte direkt am **Stammdaten-Objekt des Rohstoffs** hängen, nicht nur im Wareneingang, damit der Alarm global funktioniert.
|
||||
|
||||
### C) Rezepturen & Faktoren
|
||||
|
||||
* **Der "Verschleiß-Faktor":** Das ist ein extrem wichtiger Punkt für die Kalkulation.
|
||||
* *Berechnungslogik:* Wenn die Rezeptur 100g vorsieht und der Faktor 1,1 ist, zieht das System bei der Produktion automatisch 110g aus dem Bestand ab. Das ist sauber gelöst.
|
||||
|
||||
|
||||
* **Dichte-Thematik (Öl/Wasser):** Da du sagst, ihr rechnet konsequent in **Gramm**, ist die Dichte für die reine Bestandsführung im System egal – solange ihr beim Wiegen an der Waage bleibt. Das System rechnet einfach: `Eingang (g) - Verbrauch (g) * Faktor`.
|
||||
|
||||
### E) Produktion & Chargen-Tracking
|
||||
|
||||
* **FIFO-Prinzip:** Da Ivonne die letzten 3 Chargen sieht, ist das System perfekt für die Rückverfolgbarkeit (wichtig für Kosmetik-Verordnungen!).
|
||||
* **Mehrfachauswahl bei Chargen:** Das ist klug, falls eine Charge während der Produktion leer geht und die nächste angebrochen wird.
|
||||
|
||||
### F) Bestand & UI
|
||||
|
||||
* **Menü-Badges:** Die roten Zahlen im Menü (z.B. "Bestand Rohstoffe (2)") sind ein hervorragender Trigger. Technisch lösen wir das über einen `View Composer` in Laravel, damit die Zahl auf jeder Seite aktuell bleibt.
|
||||
|
||||
### G) Ausgang (Ausschuss)
|
||||
|
||||
* **Logging:** Da du "Wer" (User-ID) und "Warum" abfragst, ist das ein vollwertiges Korrekturjournal. Das ist für Audits Gold wert.
|
||||
|
||||
---
|
||||
|
||||
----------
|
||||
|
||||
|
||||
### 1. Die "Stückliste" (BOM - Bill of Materials)
|
||||
|
||||
Du erweiterst das System von einer reinen Rezeptur (INCIs) zu einer vollständigen **Stückliste**. Das bedeutet, ein "Produkt" besteht in Laravel nun aus zwei Relationen:
|
||||
|
||||
* **Rezeptur:** (Rohstoffe in Gramm * Faktor)
|
||||
* **Packaging:** (Tiegel, Deckel, Etikett, Umkarton in Stück)
|
||||
|
||||
**Wichtig für die Logik:** Im Gegensatz zu den Rohstoffen brauchen Verpackungen keinen "Schwund-Faktor" von 1,1, sondern werden meist als **Ganzzahlen** (Stück) abgezogen. Es sei denn, du hast auch hier nennenswerten Ausschuss (z.B. Etiketten, die beim Bekleben kaputtgehen) – dann sollte der Faktor auch hier optional zuschaltbar sein.
|
||||
|
||||
### 2. Der Workflow: Erst Definition, dann Zuordnung
|
||||
|
||||
Dein Ansatz ist vollkommen richtig:
|
||||
|
||||
1. **Stammdaten:** Erst legst du unter "Warenwirtschaft > Bestand Verpackungen" den Artikel an (z.B. "Glastiegel 40ml").
|
||||
2. **Produkt-Konfiguration:** Beim Produkt (z.B. Tattoocreme) sagst du nun: "Dieses Produkt verbraucht pro Einheit 1x Glastiegel 40ml".
|
||||
3. **Produktions-Trigger:** Sobald Ivonne 500 Einheiten produziert, zieht das System im Hintergrund automatisch 500 Tiegel vom Bestand ab.
|
||||
|
||||
### 3. Visualisierung der Datenstruktur
|
||||
|
||||
Damit die Datenbank sauber bleibt, empfehle ich folgende Struktur für die Produktanlage:
|
||||
|
||||
| Ebene | Typ | Einheit | Besonderheit |
|
||||
| --- | --- | --- | --- |
|
||||
| **A (Rohstoffe)** | INCI / Rohstoff | Gramm | Inkl. Faktor (1,1) & Chargen-Tracking |
|
||||
| **B (Primärpackung)** | Tiegel / Flasche | Stück | Zwingend für Produktion nötig |
|
||||
| **C (Sekundärpackung)** | Karton / Beipackzettel | Stück | Optional, falls im System geführt |
|
||||
|
||||
### 4. Usability-Tipp für die Verpackungsliste
|
||||
|
||||
Da die Verpackungen oft für viele Produkte gleich sind (der gleiche Tiegel für 5 verschiedene Cremes), sollte die Auswahl im Backend über eine **Suche/Dropdown-Kombination** erfolgen, genau wie bei den INCIs.
|
||||
|
||||
### 5. Der "Bestand-Alarm" für Verpackungen
|
||||
|
||||
Da Verpackungen oft lange Lieferzeiten haben, solltest du hier die gleiche **Alarm-Logik** (Mail an Service) wie bei den Rohstoffen implementieren, sobald der "Meldebestand" unterschritten wird.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
# neues erweitertes Briefing: Erweiterung Web-CRM „Warenwirtschaft & Produktion“
|
||||
|
||||
## 1. Überarbeitung INCI-Management (Produkte)
|
||||
|
||||
Ziel ist eine intuitivere Verwaltung der Inhaltsstoffe.
|
||||
|
||||
* **Kopierfunktion:** Beim Duplizieren eines Produkts müssen alle verknüpften INCIs (Pivot-Daten) mitkopiert werden.
|
||||
* **Drag & Drop Sortierung:** INCIs innerhalb eines Produkts müssen manuell sortierbar sein (z. B. via SortableJS). Speicherung der Reihenfolge erfolgt erst beim Klick auf „Speichern“ (kein Live-DB-Ping pro Verschiebung).
|
||||
* **Selektions-Logik:** Die Mehrfachauswahl im Dropdown muss alphabetisch sortiert sein, die Übernahme in die Produktliste erfolgt jedoch in der **Reihenfolge der Auswahl (Klicks)**.
|
||||
|
||||
## 2. Stammdaten & Menüstruktur „Warenwirtschaft“
|
||||
|
||||
Ein neuer Hauptmenüpunkt „Warenwirtschaft“ mit folgenden Unterpunkten wird erstellt:
|
||||
|
||||
1. **Eingang:** Verwaltung von Bestellungen und Lieferungen (Status: Pending/Grün).
|
||||
2. **Ausgang:** Erfassung von Ausschuss (Schrottliste) mit Grund, User-Log und Datum.
|
||||
3. **Produktion:** Protokollierung der Herstellungsprozesse.
|
||||
4. **Lieferanten:** Verwaltung inkl. Kategorien (Rohstoffe, Tiegel, Verpackung etc.).
|
||||
5. **Bestand (Getrennte Views):**
|
||||
* Bestand Rohstoffe
|
||||
* Bestand Packaging (Hardware: Tiegel, Deckel)
|
||||
* Bestand Etiketten (Produktbezogen)
|
||||
* Bestand Versand & Office
|
||||
|
||||
|
||||
|
||||
## 3. Rezeptur & Kalkulations-Logik (Backend-Specs)
|
||||
|
||||
Um Rundungsfehler zu vermeiden, wird intern mit erhöhter Präzision gerechnet:
|
||||
|
||||
* **Datentypen:** Preise in **Milli-Cent** (Integer), Gewichte in **Milli-Gramm** (Integer oder Decimal 12,4).
|
||||
* **Verbrauchs-Faktor:** Jedes Produkt erhält pro INCI ein Feld für die Grammzahl und einen **Schwund-Faktor** (Default 1,1).
|
||||
* *Berechnung:* `Soll-Menge (g) * Faktor = Tatsächlicher Bestandsabzug`.
|
||||
|
||||
|
||||
* **Haltbarkeit:** Auswahl pro Produkt via Radio-Button:
|
||||
* a) Symbol „12M-Tiegel“ (PAO - Period After Opening).
|
||||
* b) Festes MHD (Auswahl: 6, 12, 18, 24, 30, 36 Monate).
|
||||
|
||||
|
||||
|
||||
## 4. Workflow: Wareneingang (Zwei-Stufen-System)
|
||||
|
||||
1. **Stufe 1 (Einkauf):** Erfassung von Lieferant, Inhaltsstoff (Autosuggest), Kaufdatum, Menge (g) und Netto-Preis/kg. Status steht auf **„Pending“ (Orange)**.
|
||||
2. **Stufe 2 (Ivonne/Eingang):** Bei Erhalt der Ware Ergänzung von Eingangsdatum, tatsächlicher Menge (g), **Chargen-Nummer** und **MHD**. Status wechselt auf **„Eingebucht“ (Grün)**.
|
||||
3. **Bestands-Alarm:** Pro Artikel (Rohstoff/Verpackung) wird ein Schwellenwert definiert. Bei Unterschreitung erscheint ein **roter Badge (Zahl)** am Menüpunkt und eine E-Mail geht an den Service.
|
||||
|
||||
## 5. Workflow: Produktion & Bestandsabzug
|
||||
|
||||
Bei einer neuen Produktion (z.B. 500 Einheiten Tattoocreme):
|
||||
|
||||
* **Rohstoff-Abzug:** Das System listet alle hinterlegten INCIs auf. Ivonne wählt pro INCI aus den **letzten 3 Chargen** (FIFO-Prinzip) die verwendeten aus.
|
||||
* **Chargen-Splitting:** Es muss möglich sein, zwei Chargen für einen Rohstoff zu wählen, falls eine leer wird.
|
||||
* **Packaging-Abzug:** Automatische Reduktion der verknüpften Hardware (Tiegel/Deckel) und des spezifischen Etiketts um die produzierte Stückzahl.
|
||||
* **MHD-Check:** Warnmeldung, falls ein Rohstoff-MHD kürzer ist als das geplante Produkt-MHD.
|
||||
|
||||
## 6. Etiketten-Sonderlogik
|
||||
|
||||
Etiketten werden wie Packaging behandelt, aber:
|
||||
|
||||
* Sie sind fest an eine **Produkt-ID** gebunden.
|
||||
* Wareneingang erfolgt meist manuell nach einem Druckauftrag (z.B. 500 Stück).
|
||||
* Der Bestand zeigt den Restbestand nach Produktion an (wichtig für Nachbestellungen).
|
||||
|
||||
## 7. Rollen & Sicherheit
|
||||
|
||||
* **Berechtigung:** Einführung einer Rolle „Redakteur“ (Ivonne). Diese darf Bestände buchen und Produktionen eintragen, aber keine System-Stammdaten oder sensible Einkaufspreise löschen/ändern (falls konfiguriert).
|
||||
* **Logging:** Jede Bestandsveränderung (Eingang, Produktion, Ausschuss) wird mit der `user_id` protokolliert.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
Das sind hervorragende und extrem praxisnahe Ergänzungen! Besonders die **LUCID-Verpackungsregister-Thematik** (Abfallwirtschaft) und die **Multi-Lager-Logik** (Köln & Waldbröl) heben das System von einem einfachen CRM zu einem echten, professionellen ERP-System (Enterprise Resource Planning) auf.
|
||||
|
||||
Diese Punkte greifen tief in die Datenbankstruktur ein, lassen sich mit Laravel aber sehr sauber abbilden.
|
||||
|
||||
Hier ist das **aktualisierte, vollständige Briefing (Version 2.0)**, das du 1:1 an deinen Entwickler weitergeben kannst. Die neuen Punkte sind nahtlos in die Architektur integriert.
|
||||
|
||||
---
|
||||
|
||||
# Entwickler-Briefing V2.0: Web-CRM „Warenwirtschaft, Produktion & Bestände“
|
||||
|
||||
*(Empfohlener Tech-Stack für interaktive Module: Laravel + Livewire + Bootstrap)*
|
||||
|
||||
## 1. Überarbeitung INCI-Management (Produkte)
|
||||
|
||||
* **Kopierfunktion:** Beim Duplizieren (`replicate()`) eines Produkts müssen alle verknüpften INCIs (Pivot-Daten) zwingend mitkopiert werden.
|
||||
* **Drag & Drop Sortierung:** INCIs innerhalb eines Produkts müssen manuell sortierbar sein (z. B. via *SortableJS* + Livewire). Speicherung der Reihenfolge erfolgt erst beim Klick auf „Speichern“.
|
||||
* **Selektions-Logik:** Die Mehrfachauswahl im Dropdown ist alphabetisch sortiert. Die Übernahme in die Produktliste erfolgt jedoch exakt in der **Reihenfolge der Klicks**.
|
||||
|
||||
## 2. Stammdaten & Menüstruktur „Warenwirtschaft“
|
||||
|
||||
Das System wird um neue Stammdaten-Tabellen erweitert, die vorab verwaltbar sein müssen. Neues Menü:
|
||||
|
||||
1. **Stammdaten (Neu):**
|
||||
* **Lagerorte:** Anlage von Standorten (z.B. Köln, Waldbröl).
|
||||
* **Qualitäten/Sorten:** Anlage von Rohstoff-Klassifizierungen (z.B. *konventionell, bio kaltgepresst, bio raffiniert, konventionell kaltgepresst, konventionell raffiniert*).
|
||||
* **Verpackungs-Materialien:** Anlage von Wertstoffen für die Abfallwirtschaft (z.B. *Glas, Holz/Bambus, Pappe/Papier, Kunststoff*).
|
||||
* **Lieferanten Kategorien:** (z.B. *Rohstoffe, Tiegel, Verpackung*).
|
||||
* **Lieferanten:** (inkl. Zuweisung einer Kategorie).
|
||||
|
||||
|
||||
2. **Eingang:** Verwaltung von Bestellungen und Lieferungen.
|
||||
3. **Ausgang:** Erfassung von Ausschuss (Schrottliste) mit Grund, User-Log und Datum.
|
||||
4. **Produktion:** Protokollierung der Herstellungsprozesse.
|
||||
5. **Bestand (Getrennte Views & Multi-Lager fähig):**
|
||||
* Bestand Rohstoffe
|
||||
* Bestand Packaging (Hardware: Tiegel, Deckel)
|
||||
* Bestand Etiketten
|
||||
* Bestand Versand & Office
|
||||
|
||||
|
||||
|
||||
## 3. Architektur: Datenmodell & Kalkulations-Logik
|
||||
|
||||
Um Rundungsfehler und ungenaue Meldungen (LUCID/Verpackungsregister) zu vermeiden:
|
||||
|
||||
* **Präzision:** Preise in **Milli-Cent** (Integer), Gewichte in **Milli-Gramm** (Integer oder Decimal 12,4).
|
||||
* **Rohstoff-Verbrauch (Rezeptur):** Jedes Produkt hat Pivot-Felder für Grammzahl und einen **Schwund-Faktor** (Default 1,1). Berechnung: `Soll-Menge (g) * Faktor`.
|
||||
* **MHD-Logik (Produkt):** Auswahl via Radio-Button: a) „12M-Tiegel“ (PAO) oder b) Festes MHD (6, 12, 18, 24, 30, 36 Monate).
|
||||
|
||||
### NEU: Packaging & Abfallwirtschaft (BOM - Bill of Materials)
|
||||
|
||||
Wenn ein Produkt angelegt wird und Packaging zugewiesen bekommt (z.B. Glastiegel, Bambusdeckel, Umverpackung), zieht das System seine Daten aus der Packaging-Datenbank.
|
||||
|
||||
* **Stammdaten Packaging:** Jeder Artikel (z.B. "Glastiegel 50ml") bekommt zwei Pflichtfelder:
|
||||
1. **Material:** (Dropdown aus den zuvor angelegten Verpackungs-Materialien, z.B. *Glas*).
|
||||
2. **Gewicht:** (Eingabefeld in Gramm).
|
||||
|
||||
|
||||
* **Nutzen:** Das System kann so auf Knopfdruck einen Report generieren: *"Für 500 produzierte Pechsalben wurden X kg Glas und Y kg Pappe in Verkehr gebracht."*
|
||||
|
||||
## 4. Workflow: Wareneingang & Multi-Lager
|
||||
|
||||
1. **Stufe 1 (Einkauf / Pending):** * Erfassung von: Lieferant, Inhaltsstoff (Autosuggest), Kaufdatum, Menge (g), Netto-Preis/kg, **Lagerort (Dropdown: Köln/Waldbröl)**. Status steht auf **„Pending“ (Orange)**.
|
||||
2. **Stufe 2 (Eingangsbuchung / Grün):** * Bei Erhalt ergänzt der User (z.B. Ivonne): Eingangsdatum, tatsächliche Menge (g), Chargen-Nummer, MHD und **Qualität/Sorte** (Dropdown: *bio kaltgepresst, konventionell etc.*). Status wechselt auf **„Eingebucht“ (Grün)**.
|
||||
3. **Bestands-Ansicht & Alarme:** * Bestände müssen nun **pro Lagerort** sowie als **Gesamtsumme** darstellbar sein.
|
||||
* Unterschreitet der Gesamtbestand den Schwellenwert, erscheint ein roter Badge am Menüpunkt + E-Mail-Alarm.
|
||||
|
||||
|
||||
|
||||
## 5. Workflow: Produktion & Bestandsabzug
|
||||
|
||||
Bei einer neuen Produktion (z.B. Tattoocreme):
|
||||
|
||||
* **Rohstoff-Abzug & Chargen-Splitting:** Das System listet die INCIs. Der User wählt aus den **letzten 3 Chargen**. Es muss möglich sein, Mengen auf zwei Chargen aufzuteilen, wenn eine Charge leer wird.
|
||||
* **Lager-Logik:** Bei der Produktion muss angegeben werden, **an welchem Standort** (Köln oder Waldbröl) produziert wird, damit das System die Rohstoffe vom richtigen Lager abzieht.
|
||||
* **Packaging-Abzug:** Automatische Reduktion der verknüpften Hardware (Tiegel/Deckel) und Etiketten am jeweiligen Standort.
|
||||
* **MHD-Check:** Warnmeldung, falls ein Rohstoff-MHD kürzer ist als das geplante Produkt-MHD.
|
||||
|
||||
## 6. Rollen & Sicherheit (Activity Logging)
|
||||
|
||||
* **Berechtigung („Redakteur“):** Darf Bestände buchen und Produktionen eintragen, aber keine System-Stammdaten (Materialien, Qualitäten, Lagerorte) oder Preise bearbeiten/löschen.
|
||||
* **Audit Trail:** Jede Bestandsveränderung (Eingang, Produktion, Ausgang/Schrott) wird zwingend mit `user_id`, `timestamp` und Begründung protokolliert.
|
||||
|
||||
---
|
||||
Loading…
Add table
Add a link
Reference in a new issue