13-05-2026 Waren Wirtschaft

This commit is contained in:
Kevin Adametz 2026-05-13 18:09:20 +02:00
parent 9ce711d6b2
commit ca3eb663fe
40 changed files with 1000 additions and 189 deletions

View file

@ -0,0 +1,84 @@
Wichtig ist, dass wir in Zukunft relativ schnell den Produktbestand einpflegen können und den Grundbestand der Inhaltsstoffe (auf Basis der Hersteller Rezept)
Wir müssen also schon mal den Lagerbestand initialisieren können
Wenn wir so etwas haben, benötigen wir ja auch an dieser Stelle einen zusätzliches Feld für einen Eingang oder Ausgang
Anzahl und Grund Muss sie angegeben werden. Hintergrund. Wenn wir ein Lagerbestand hinzufügen, weil es ja noch gar nicht in der Produktion erfasst worden ist, fügen wir XY etc. hinzu und geben das entsprechend an. Weiterhin kann es sein, dass Produkte kaputtgehen zerstört werden etc. die können wir hier auch entsprechend wieder austragen. Somit haben wir die Möglichkeit, den aktuellen Lagerstand immer auf aktuell zu halten.
Produkte Sets
Bei den Produkten ist es notwendig, dass alle Produkte in zwei Klassen unterteilt werden in die klassischen Einzelprodukte, die dann auch die entsprechende Einstellung wie Rezeptur, Verpackungsmaterial, Warenwirtschaft haben. Und es gibt Sets, Wir bauen über den Inhaltsstoffen Rezeptur eine Card ein Standardmäßig ist dort eine Checkbox nicht aktiviert und damit ist es ein Standard Produkt, wird diese Checkbox aktiviert. Handelt es sich um ein Fett, die Cards Rezeptur, Verpackungsmaterial, Warenwirtschaft Werden ausgeblendet und es Wird eine neue Card Eingeblendet die technische funktioniert, wie Rezeptur Nur werden hier Produkte hinzugefügt, gleiches System. Es geht ein Modal Fenster auf wo alle Produkte drin sind. Einzelprodukte kein Set und ich kann diese hinzufügen mit Menge. Wird später ein Set verkauft, weiß das System automatisch, welche Produkte es beinhaltet und kann entsprechend in der Warenwirtschaft die entsprechenden Mengen wieder abziehen. Setz haben auch keine Produktion in dem Sinne. Sie sind ja nur ein Päckchen, was aus unterschiedlichen Produkten zusammen zusammengepackt wird.
Neuer Einkauf
A) Felder für Preise wie folgt:
- Dropdown UST (Auswahl 19%, 7% etc.) -> Muss ich vorab in den Einstellungen definieren können
- Brutto-Preis pro kg
- Netto-Preis pro kg
-> Manche Shops zeigen mir den Netto-Preis an, manche den Brutto-Preis. Ich will da nicht immer rumrechnen. Ich trage entweder den Netto- oder Bruttobetrag ein und das jeweilige leere Feld berechnet sich dann von selbst.
Weiteres betrifft alle seiten
B) Bitte einen ausgefüllten Einkauf duplizierbar machen. Hintergrund: Manchmal kommen Rohstoffe in 2,3 Kanistern mit unterschiedlichen Chargen, dann muss ich das nicht alles nochmal ausfüllen.
c) Bitte die Icons Auge, Stift und Mülleimber in der Übersicht „Einkauf & Wareneingang“ weiter auseinander und ein Stück größer - ist schwer anzuklicken auf dem ipad - bitte bei allen Tabellen in den Menüpunkten
…………….
Lieferanten
A) Hier muss ich ein Kästchen anklicken können, ob ich per Mail oder online in einem Shop bestelle. Hintergrund: Bei manchen Lieferanten muss ich per Mail bestellen, da soll dann in der Liste für den Rohstoffbestand ein Link entweder zu einem Onlineshop oder ins Mailformular mit der richtigen Email-Adresse bereits hinterlegt erscheinen.
B) Ich möchte bei jedem Lieferanten eine Lieferzeit eintragen können, die ich vorher definiere (z. B. 3-5 in Tage). Aber bitte als Textfeld. Zuätzlich benötige ich bei den INCIs auch ein Feld, wo ich eine Lieferzeit eintragen kann (auch als Textfeld). Wenn da was drinsteht, dann überschreibt der Inhalt den vom Feld beim Lieferanten. Hintergrund: Dragonspice z.B. liefert immer prompt nach 3 Tagen. Manche (wenn auch wenige) INCI von denen sind aber nicht immer vorrätig oder müssen vorbestellt werden.
//in der Lieferzeiten
…………….
INCIs
A) Bei jedem INCI muss ich eine Mehrfachauswahl als Dropdown haben, bei welchen Lieferanten ich dieses eine INCI kaufen kann (beziehe nicht immer beim gleichen). Das brauchen wir dann später in der Übersicht Rohstoffbestand.
B) Pro INIC möchte die Höhe der UST hinterlegen über ein Dropdown (7%, 19% etc. -> anzulegen in Einstellungen). // Steuer als Enum kann zukünfig auch geänder werden!
…………
Neue Produktion
A) Bitte weniger Linien - Überschriften Charge und Menge bei den einzelnen Rohstoffen weg - steht ja im Dropdown / Feld (hier noch g hinter die Zahl)
B) Im Dropdown für die Charge steht zusätzlich noch der Lieferant, also „Manske GmbH - DE-170722 - 30.09.2028“ (Datum bitte so in dieser Schreibweise und die Buchstaben MHD raus). Die Charge darf auch nur angezeigt werden, wenn noch was von ihr da ist.
C) Die Basis Ist die Herstellerrezeptur! Daraus berechnen sich die Nötigen Felder.
Es ist ein Fehler drinne bei Charge hinzufügen. Wir werden dann automatisch zwei neue Felder hinzugefügt.
Wenn oben etwas geändert wird wie zum Beispiel die Stückzahl darf sich die Rezeptur nicht mehr ändern. Wenn hier schon Fälle ausgefüllt sind oder Chargen hinzugefügt sind, sollen die so bleiben, soll sich dann nur entsprechend die soll Angaben in Gramm anpassen.
D) Schau Dir mal bitte „Neue Produktion“ auf dem ipad an. Die Felder Produktionsdatum und Produzierte Stückzahl überlappen grafisch.
E) Wir haben die Produktentwicklung noch nicht bedacht, da gehen ja auch Rohstoffe für drauf. Unter dem Menüpunkt „Produktion“ brauchen wir noch einen Menüpunkt Produktentwicklung. Konzept dafür folgt, aber bitte schon mal einfügen, damit wir das nicht vergessen.
…………….
Übersicht Rohstoffeinkauf
Neuer Menüpunkt: Rohstoffbestand
Das ist unsere Übersicht, in der ich sehen kann, welche Rohstoffe im Lager sind. Alles weitere in den Screens anbei.
…………….
Produktbestand
A) Wir haben einen Hauptmenüpunkt: Produktbestand (sh. Screen anbei - hier trage ich Ein und Ausgänge ein - ganz simpel)
Darunter einen weiteren Menüpunkt: Historie (Hier machen wir ein umfangreiches Archiv vor allem fürs Finanzamt, bei dem man jedes einzelne Produkt nachverfolgen kann, wenn nötig. D.h., JEDER Ein- und Ausgang wird hier dokumentiert - sei es durch einen Verkauf über die Shops oder die manuelle Eingabe z. B. durch Verschenken von Testern. Hier gibt es zwei Screens für.
B) Bei dem Produktbestand dürfen nur Hauptprodukte angezeigt werden. Also die „Bio Tattoocreme 15 ml (einzeln)“ ist das Hauptprodukt, das Produkt Bio Tattoocreme 50 Stück als Set ist das „Child-Produkt“ davon. Das muss ich also in den Produkten noch vermerken. Musst Du Dir was überlegen. Aber beim Child-Produkt könnte man das unten im Bereich Verpackung & Material noch mit angeben, dass wir hier 50 x das Hauptprodukt haben.
…………….
2FA - Google Authenticator für die Admins
Wie besprochen
Rechtevergabe - Wir vergeben pro Block ein Zugriffsrecht. Am Ende sind Mitarbeiter Admins, aber ich kann als SuperAdmin anklicken, welchen Block die sehen und bearbeiten können. Also ein Mitarbeitern kann z. B. die Produktliste einsehen, aber nicht bearbeiten oder einsehen UND bearbeiten.
………………
Nicht vorrätig
Brauche die Funktion „Nicht vorrätig“ inkl. Zeitangabe. Ich hake also ein Kästchen im Produkt an „Nicht vorrätig“ und trage dahinter eine Zahl in einem Feld ein (Anzahl Tage). Von da an zählt das System runter und die Zahl aktualisiert sich dann in der Bestellans

View file

@ -0,0 +1,500 @@
# Aktualisierter Entwicklungsplan: Warenwirtschaft, Produktion & Produktbestand
> **Version:** 3.0 - Stand 13.05.2026
> **Prioritaet:** Anpassungsbriefing vom 27.04.2026 zuerst einarbeiten
> **Referenzen:** `entwicklungsplan.md`, `briefing-anpassungen-27-04-2026.md`, `feedback.md`, Screens unter `screens/`
---
## 1. Aktueller Ist-Stand
Laut bestehendem `entwicklungsplan.md` sind die Phasen 0 bis 5.1 umgesetzt:
- **Phase 0:** Bugfixes Produkt/INCI, Sync-Logik, Sortierung, Kopierfehler.
- **Phase 1:** INCI-Erweiterung, Rezepturfelder, Haltbarkeit, Produktkopie.
- **Phase 2:** Stammdaten-Module fuer Lagerorte, Lieferanten, Verpackung, Qualitaeten.
- **Phase 3:** Einkauf & Wareneingang als Zwei-Stufen-Workflow.
- **Phase 4:** Verpackung & Material am Produkt.
- **Phase 5:** Produktion MVP mit Chargen, Rezeptur-API und Packaging-Snapshot.
- **Phase 5.1:** Feedback-Korrekturen zu Menue, Rezeptur, Produktion und Verpackungsartikeln.
Noch offen aus dem alten Plan:
- **Phase 6:** Bestandsuebersichten & Alarme.
- **Phase 7:** Ausgang / Ausschuss.
- **Phase 8:** Rollen, Audit-Trail & Feinschliff.
- **Phase 9:** Einstellungen & Konfiguration.
- Offene Tests aus Phase 5.1, insbesondere Rezeptur/Hersteller-Rezeptur, Produktion kopieren/bearbeiten, aktive Produkte und Menue-Labels.
Das Anpassungsbriefing vom 27.04.2026 erweitert den Scope wesentlich. Deshalb wird vor den alten Phasen 6 bis 9 eine neue priorisierte Phase eingeschoben.
---
## 2. Neue Priorisierung
### Sofortige Reihenfolge
| Prioritaet | Phase | Titel | Status | Abhaengigkeit |
|------------|-------|-------|--------|---------------|
| P0 | 5.2 | Anpassungsbriefing 27.04.2026 | neu, sofort | Phasen 0-5.1 |
| P1 | 6 | Rohstoffbestand & Produktbestand | offen, angepasst | Phase 5.2 |
| P2 | 7 | Ausgang, manuelle Bestandsbewegungen & Historie | offen, erweitert | Phase 6 |
| P3 | 8 | Rechte, 2FA, Audit-Trail | offen, erweitert | Phase 5.2 + 7 |
| P4 | 9 | Einstellungen & Konfiguration | offen, erweitert | Phase 5.2 |
**Wichtig:** Funktionen aus Phase 6-9 duerfen erst final umgesetzt werden, wenn die neuen Stammdatenfelder, Produkt-Set-Logik und Produktbestandslogik aus Phase 5.2 geklaert und umgesetzt sind.
---
## 3. Phase 5.2: Anpassungsbriefing 27.04.2026
> **Ziel:** Alle neuen Anforderungen aus `briefing-anpassungen-27-04-2026.md` in das bestehende Warenwirtschaftsmodell integrieren, bevor Bestandsuebersichten und Historien final gebaut werden.
### 5.2.1 Einstellungen: UST-Saetze und Lieferzeiten
**Anforderungen**
- Neue konfigurierbare UST-Saetze, z. B. 19 %, 7 %.
- UST nicht hart im Code, sondern als Stammdatum/Setting verwalten.
- Lieferzeiten als frei definierbare Textwerte, z. B. `3-5 Tage`.
**Umsetzung**
- Neues Einstellungsmodul oder Erweiterung der bestehenden Warenwirtschafts-Einstellungen:
- `tax_rates`: Name, Prozentwert, aktiv.
- `delivery_times`: Textwert, aktiv, Sortierung.
- UST-Dropdowns in Einkauf und INCI nutzen diese Werte.
- Lieferzeit-Dropdowns/Textfelder bei Lieferant und INCI anbinden.
**Akzeptanzkriterien**
- SuperAdmin kann UST-Saetze und Lieferzeiten pflegen.
- Einkauf und INCI koennen nur aktive UST-Saetze auswaehlen.
- Lieferzeiten bleiben bewusst als Text flexibel.
### 5.2.2 Produkte: Einzelprodukt, Set und Hauptprodukt-Zuordnung
**Anforderungen**
- Produkte werden in zwei Klassen unterschieden:
- **Einzelprodukt:** hat Rezeptur, Hersteller-Rezeptur, Verpackung & Material, Warenwirtschaft.
- **Set:** hat keine eigene Rezeptur/Produktion, sondern besteht aus mehreren Einzelprodukten mit Menge.
- Im Produktformular wird eine Checkbox/Option eingebaut: `Ist Set`.
- Wenn `Ist Set` aktiv ist:
- Karten Rezeptur, Verpackung & Material und Warenwirtschaft ausblenden.
- Neue Karte `Set-Bestandteile` anzeigen.
- Modal mit auswaehlbaren Einzelprodukten, keine Sets.
- Produktbestand darf nur Hauptprodukte anzeigen.
- Child-/Set-Produkte muessen dem Hauptprodukt zugeordnet werden koennen, z. B. `50 x Bio Tattoocreme 15 ml`.
**Umsetzung**
- `products` erweitern:
- `is_set` boolean.
- `main_product_id` nullable FK auf `products`.
- optional `main_product_quantity` fuer Child-Produkte.
- Neue Pivot-Tabelle fuer Sets:
- `product_set_items`: `set_product_id`, `component_product_id`, `quantity`.
- Produktformular:
- Umschaltlogik fuer Einzelprodukt/Set.
- Set-Bestandteile wie bestehende Rezeptur-/Packaging-Modals aufbauen.
- Validierung:
- Set darf keine Sets enthalten.
- Set braucht mindestens einen Bestandteil.
- Einzelprodukt darf Rezeptur/Packaging/Warenwirtschaft pflegen.
**Akzeptanzkriterien**
- Ein Set kann aus mehreren Einzelprodukten bestehen.
- Beim Verkauf eines Sets werden die enthaltenen Einzelprodukte im Produktbestand reduziert.
- Set-Produkte erscheinen nicht als selbst produzierbare Produkte.
- Produktbestand zeigt nur Haupt-/Einzelprodukte, nicht die Child-/Set-Varianten.
### 5.2.3 Einkauf & Wareneingang erweitern
**Anforderungen**
- Einkauf bekommt UST-Dropdown.
- Brutto-Preis pro kg und Netto-Preis pro kg: eines der beiden Felder kann eingegeben werden, das andere berechnet sich automatisch.
- Ausgefuellten Einkauf duplizierbar machen.
- Aktionsicons Auge/Stift/Muelleimer in Tabellen groesser und mit mehr Abstand, iPad-tauglich.
**Umsetzung**
- `stock_entries` erweitern:
- `tax_rate_id` oder gespeicherter Snapshot `tax_rate_percent`.
- `price_per_kg_net`.
- `price_per_kg_gross`.
- Frontend-JS:
- Netto/Brutto anhand UST gegenseitig berechnen.
- Rundung einheitlich definieren.
- Copy-Route fuer Einkauf:
- Dupliziert Stufe-1-Felder.
- Laesst Chargennummer, MHD, Eingangsdaten und Status leer bzw. setzt wieder auf `pending`.
- Gemeinsame Tabellen-Aktionsklasse einfuehren:
- groessere Buttons.
- mehr Abstand.
- konsequent fuer Einkaufs-, Lieferanten-, Produktions-, Bestands- und Stammdatentabellen.
**Akzeptanzkriterien**
- Einkauf kann mit Netto oder Brutto angelegt werden.
- Beim Wechsel des UST-Satzes wird das Gegenfeld aktualisiert.
- Ein Einkauf kann fuer mehrere Kanister/Chargen komfortabel dupliziert werden.
- Tabellenaktionen sind auf dem iPad gut klickbar.
### 5.2.4 Lieferanten erweitern
**Anforderungen**
- Lieferant braucht Auswahl, ob Bestellung per Mail oder Online-Shop erfolgt.
- Je nach Auswahl soll spaeter in Rohstoffbestand/Bestellhilfe ein Link zum Shop oder ein Mail-Link erscheinen.
- Lieferant bekommt Lieferzeit als frei pflegbares Textfeld.
**Umsetzung**
- `suppliers` erweitern:
- `order_method` enum/string: `email`, `online_shop`.
- `order_email` nullable, falls abweichend von Kontakt-Mail.
- `order_url` nullable, falls abweichend von allgemeiner URL.
- `delivery_time` nullable string.
- Lieferantenformular:
- Radio/Select fuer Bestellart.
- passende Felder anzeigen.
- Spaetere Nutzung in Rohstoffbestand:
- Button `Bestellen` erzeugt `mailto:` oder oeffnet Shop-URL.
**Akzeptanzkriterien**
- Pro Lieferant ist erkennbar, wie bestellt wird.
- Rohstoffbestand kann daraus einen konkreten Bestell-Link ableiten.
- Lieferzeit des Lieferanten ist sichtbar und editierbar.
### 5.2.5 INCI erweitern
**Anforderungen**
- Pro INCI Mehrfachauswahl der Lieferanten, bei denen es gekauft werden kann.
- Pro INCI UST-Satz hinterlegen.
- Pro INCI optional eigene Lieferzeit; diese ueberschreibt die Lieferzeit des Lieferanten.
**Umsetzung**
- Neue Pivot-Tabelle:
- `ingredient_supplier`: `ingredient_id`, `supplier_id`, optional `preferred`, `supplier_sku`, `url`.
- `ingredients` erweitern:
- `tax_rate_id` oder Snapshot.
- `delivery_time` nullable string.
- INCI-Formular:
- Lieferanten-Mehrfachauswahl per Select2.
- UST-Dropdown.
- Lieferzeit-Textfeld.
**Akzeptanzkriterien**
- Ein INCI kann mehrere Lieferanten haben.
- Rohstoffbestand kann alle moeglichen Lieferanten mit Lieferzeit anzeigen.
- INCI-Lieferzeit ueberschreibt Lieferanten-Lieferzeit.
### 5.2.6 Produktion korrigieren
**Anforderungen**
- Neue Produktion optisch vereinfachen:
- weniger Linien.
- Ueberschriften `Charge` und `Menge` bei einzelnen Rohstoffen entfernen.
- bei Mengenangaben `g` hinter die Zahl.
- Chargen-Dropdown zeigt Lieferant, Charge und MHD:
- Beispiel: `Manske GmbH - DE-170722 - 30.09.2028`.
- `MHD`-Text nicht anzeigen.
- Nur Chargen anzeigen, von denen noch Bestand vorhanden ist.
- Basis fuer Produktion ist die Hersteller-Rezeptur.
- Fehler beim Hinzufuegen einer Charge beheben: Es duerfen nicht automatisch zwei neue Felder erscheinen.
- Wenn oben z. B. Stueckzahl geaendert wird:
- bestehende ausgefuellte Chargen/Mengen bleiben erhalten.
- nur Soll-Angaben in Gramm werden neu berechnet.
- iPad-Layout: Produktionsdatum und produzierte Stueckzahl duerfen nicht ueberlappen.
- Neuer Untermenuepunkt `Produktentwicklung` unter Produktion als Platzhalter.
**Umsetzung**
- `ProductionController::recipeJson()` auf Hersteller-Rezeptur als Basis umstellen.
- Chargenquery im `InventoryService` oder `ProductionService`:
- nur `received` Chargen.
- Restbestand pro Charge > 0.
- Label mit Lieferant, Chargennummer, Datum `d.m.Y`.
- JS fuer Chargen-Splitting korrigieren:
- genau eine neue Zeile pro Klick.
- vorhandene Eingaben beim Neuberechnen nicht ueberschreiben.
- Responsive Bootstrap-Grid fuer Kopfdaten der Produktion ueberarbeiten.
- Route/View fuer `Produktentwicklung` als Platzhalterseite:
- Hinweis: Konzept folgt.
- noch keine Bestandsbuchung.
**Akzeptanzkriterien**
- Produktion basiert auf Hersteller-Rezeptur.
- Chargenliste zeigt nur verfuegbare Chargen mit Lieferant und Datum.
- Aenderung der Stueckzahl zerstoert keine manuell eingetragenen Chargen.
- iPad-Darstellung ist nutzbar.
- Menuepunkt Produktentwicklung existiert sichtbar.
### 5.2.7 Rohstoffbestand als neuer Schwerpunkt
**Anforderungen**
- Neuer Menuepunkt `Rohstoffbestand`.
- Uebersicht zeigt, welche Rohstoffe im Lager sind.
- Muss Lieferanten, Lieferzeiten und Bestellmoeglichkeiten beruecksichtigen.
- Grundlage fuer spaetere Nachbestellung/Knappheitsanzeige.
**Umsetzung**
- Bestehende alte Phase 6 `Bestand Rohstoffe` wird inhaltlich auf `Rohstoffbestand` priorisiert.
- Spaltenvorschlag:
- INCI/Rohstoff.
- Qualitaet.
- Gesamtbestand.
- Bestand je Lagerort.
- reserviert/verbraucht durch Produktionen.
- Meldebestand oder berechneter Bedarf.
- Status.
- Lieferanten.
- Lieferzeit.
- Bestellaktion.
- Lieferzeitlogik:
- INCI-Lieferzeit vor Lieferanten-Lieferzeit.
- Bestellaktion:
- Online-Shop-Link oder Mail-Link je Lieferant.
**Akzeptanzkriterien**
- Rohstoffbestand zeigt reale Restbestaende aus Wareneingang minus Produktion/Ausgang.
- Nur Chargen mit Restbestand fliessen ein.
- Kritische Rohstoffe sind visuell markiert.
- Bestellweg ist direkt aus der Uebersicht erreichbar.
### 5.2.8 Produktbestand & Historie
**Anforderungen**
- Neuer Hauptmenuepunkt `Produktbestand`.
- Unterpunkt `Historie`.
- Produktbestand erlaubt einfache Ein- und Ausgaenge.
- Historie dokumentiert jeden Ein- und Ausgang revisionssicher, auch Verkauf ueber Shops und manuelle Eingaben.
- Screens zeigen:
- Suche.
- Checkbox `nur kritische anzeigen`.
- Bestand je Produkt.
- rote/gelbe Markierung bei kritischem Bestand.
- Aktionsbuttons `+`, `-`, `Produzieren`.
- Produktbestand zeigt nur Hauptprodukte.
**Umsetzung**
- Neue Tabellen:
- `product_stock_movements`: Produkt, Richtung `in/out`, Menge, Grund, Quelle, User, Datum, Referenz.
- optional `product_stock_thresholds` oder Felder an `products`: `min_product_stock`, `critical_product_stock`.
- Produktbestand wird berechnet:
- Summe Produktion/manuelle Eingaenge minus Verkauf/manuelle Ausgaenge/Set-Verbrauch.
- Manueller Eingang/Ausgang:
- Menge Pflicht.
- Grund Pflicht.
- Richtung Pflicht.
- Historie:
- filterbar nach Produkt, Quelle, Zeitraum, User.
- unveraenderbar bzw. Korrektur nur ueber Gegenbuchung.
- Shop-Verkaeufe:
- Produktbestand nach Bestellung reduzieren.
- Bei Sets Bestand der enthaltenen Einzelprodukte reduzieren.
**Akzeptanzkriterien**
- Produktbestand ist schnell pflegbar.
- Jede Bewegung steht in der Historie.
- Set-Verkaeufe reduzieren die enthaltenen Einzelprodukte.
- Kritische Produkte koennen gefiltert werden.
### 5.2.9 Nicht vorrätig mit Zeitangabe
**Anforderungen**
- Produkt bekommt Checkbox `Nicht vorrätig`.
- Zahl in Tagen wird hinterlegt.
- Im Shop erscheint z. B. `In ca. 14 Tagen wieder da!`.
- Die Zahl zaehlt automatisch runter und aktualisiert sich in der Bestellansicht.
**Umsetzung**
- `products` erweitern:
- `out_of_stock_until` date nullable oder `out_of_stock_days` plus Startdatum.
- Empfehlung: `out_of_stock_until`, weil daraus Resttage sauber berechnet werden.
- Produktformular:
- Checkbox.
- Tagefeld.
- beim Speichern `now()->addDays($days)`.
- Shopanzeige:
- Wenn Datum in Zukunft: Kaufbutton ersetzen/ergaenzen mit Hinweis.
- Resttage dynamisch berechnen.
- Scheduler optional:
- Status nach Ablauf automatisch deaktivieren oder Anzeige laeuft durch Datumslogik aus.
**Akzeptanzkriterien**
- Produkt kann zeitweise als nicht vorrätig markiert werden.
- Hinweis im Shop zeigt aktuelle Resttage.
- Nach Ablauf verschwindet der Hinweis automatisch.
### 5.2.10 Admin-Sicherheit: 2FA und blockbasierte Rechte
**Anforderungen**
- 2FA per Google Authenticator fuer Admins.
- Rechtevergabe pro Block:
- ansehen.
- bearbeiten.
- optional loeschen/freigeben.
- Mitarbeiter koennen Admins sein, aber nur ausgewaehlte Bereiche sehen/bearbeiten.
**Umsetzung**
- 2FA:
- Pruefen, ob bestehende Auth-Struktur mit `App\User` und Guard `user` erweitert wird.
- TOTP-Secret am User speichern.
- Setup-Flow fuer Admins.
- Login-Zwischenschritt fuer 2FA-Code.
- Rechte:
- Neues Berechtigungsmodell statt nur numerischem `admin`-Level fuer Warenwirtschaftsbloecke.
- Tabellen z. B. `admin_permission_blocks`, `admin_permission_user`.
- Bloecke: Produkte, Einkauf, Rohstoffbestand, Produktbestand, Produktion, Lieferanten, Einstellungen, Historie.
- Middleware/Gates fuer `view` und `edit`.
**Akzeptanzkriterien**
- Admin kann ohne 2FA nicht in geschuetzte Bereiche, sobald 2FA aktiviert ist.
- SuperAdmin kann pro Mitarbeiter Rechte je Block vergeben.
- Navigation zeigt nur erlaubte Bloecke.
- Bearbeiten ist getrennt von Einsehen steuerbar.
---
## 4. Angepasste offene Phasen nach 5.2
## Phase 6: Rohstoffbestand & Produktbestand
> **Status:** offen, erweitert durch Screens und Anpassungsbriefing.
### Inhalt
- `InventoryService` finalisieren.
- Rohstoffbestand mit Lieferanten-, Lieferzeit-, UST- und Bestellinformationen.
- Produktbestand mit Hauptproduktfilter, kritischen Markierungen, manuellen Bewegungen und `Produzieren`-Shortcut.
- Bestand pro Lagerort und Gesamtbestand.
- Kritisch-Filter analog Screen.
### Tests
- Bestandsberechnung Rohstoffe pro Charge und Lagerort.
- Nur Chargen mit Restbestand werden angezeigt.
- Produktbestand zeigt nur Hauptprodukte.
- Set-Verkauf reduziert Einzelproduktbestand.
- Kritisch-Filter zeigt nur Produkte/Rohstoffe unter Schwellwert.
## Phase 7: Ausgang, Bewegungen & Historie
> **Status:** offen, inhaltlich erweitert.
### Inhalt
- Alter `Ausgang / Ausschuss` bleibt fuer Rohstoffe/Verpackung relevant.
- Produktbestand bekommt eigene Bewegungslogik.
- Produktbestand-Historie als Finanzamt-/Audit-Archiv.
- Jeder manuelle Ein- und Ausgang braucht Grund, User und Datum.
### Tests
- Rohstoff-Ausgang reduziert Rohstoffbestand.
- Produkt-Ausgang reduziert Produktbestand.
- Historie dokumentiert alle Quellen: Produktion, Verkauf, manuell, Set.
- Manuelle Korrektur ohne Grund wird abgelehnt.
## Phase 8: Rollen, Audit-Trail, 2FA
> **Status:** offen, erweitert.
### Inhalt
- Bisheriger Audit-Trail bleibt Pflicht.
- Blockbasierte Rechte ersetzen fuer neue Module reine Level-Annahmen.
- 2FA fuer Admins.
- Bestehende Rollenlevel bleiben als Grundschutz erhalten, werden aber fuer Modulrechte verfeinert.
### Tests
- User mit Leserecht kann sehen, aber nicht speichern.
- User ohne Blockrecht sieht den Menuepunkt nicht.
- 2FA-Zwischenschritt greift fuer Admins.
- Audit-Log wird bei jeder Bestandsbewegung geschrieben.
## Phase 9: Einstellungen & Konfiguration
> **Status:** offen, erweitert.
### Inhalt
- UST-Saetze.
- Lieferzeiten.
- Bestandsalarm-E-Mail.
- Standard-Lagerort.
- Produktbestand-Schwellwerte, falls global sinnvoll.
- Optional: Standardtexte fuer `Nicht vorrätig`.
### Tests
- Nur SuperAdmin kann Einstellungen pflegen.
- UST-Saetze koennen deaktiviert, aber historische Werte weiterhin angezeigt werden.
- Lieferzeiten stehen in Lieferanten und INCIs zur Auswahl.
---
## 5. Offene Klaerungspunkte
- Soll `Nicht vorrätig` den Kauf komplett sperren oder nur einen Hinweis anzeigen?
- Wird Produktbestand beim Status `bezahlt`, `versendet` oder direkt bei Bestellung reduziert?
- Sollen Produktbestandsbewegungen auch Stornos/Retouren automatisch abbilden?
- Soll die blockbasierte Rechtevergabe nur fuer Warenwirtschaft/Produktmanagement gelten oder fuer alle Admin-Bereiche?
- Soll Produktentwicklung bereits Bestandsabzug erzeugen oder zunaechst nur ein Platzhalter-Menuepunkt sein?
- Soll ein Child-Produkt zwingend genau ein Hauptprodukt haben oder koennen mehrere Einzelprodukte in einem Verkaufsprodukt gebuendelt werden? Fuer echte Sets ist die Pivot-Loesung vorgesehen.
---
## 6. Empfohlene naechste Umsetzungsschritte
1. Datenmodell fuer `is_set`, Set-Bestandteile, Hauptprodukt-Zuordnung und Produktbestand finalisieren.
2. Einstellungen fuer UST-Saetze und Lieferzeiten umsetzen, weil Einkauf/INCI/Lieferanten davon abhaengen.
3. Lieferanten und INCIs um Bestellweg, Lieferzeit, UST und Lieferanten-Zuordnung erweitern.
4. Einkauf um Netto/Brutto/UST, Duplizieren und iPad-taugliche Aktionsbuttons erweitern.
5. Produktion auf Hersteller-Rezeptur, bessere Chargenlabels und stabile JS-Neuberechnung korrigieren.
6. Produktbestand mit Historie und manuellen Bewegungen bauen.
7. Rohstoffbestand mit Lieferanten-/Bestellinformationen bauen.
8. Danach alte Phasen 7-9 finalisieren: Ausgang, Audit, Rechte, 2FA, Einstellungen.
---
## 7. Grobe Aufwandsschaetzung
| Block | Aufwand |
|-------|---------|
| Einstellungen UST/Lieferzeiten | 1-2 Tage |
| Produkt Set-/Hauptproduktmodell | 3-5 Tage |
| Einkaufserweiterungen | 2-3 Tage |
| Lieferanten/INCI-Erweiterungen | 2-4 Tage |
| Produktionskorrekturen | 2-4 Tage |
| Rohstoffbestand | 4-6 Tage |
| Produktbestand + Historie | 5-8 Tage |
| Nicht vorrätig | 1-2 Tage |
| 2FA Admins | 3-5 Tage |
| Blockbasierte Rechte | 5-8 Tage |
| Tests & Feinschliff | 4-6 Tage |
**Neue Gesamtannahme fuer offene Arbeit:** ca. 6-9 Wochen bei einem Entwickler, abhaengig davon, wie tief Shop-Verkaeufe, Stornos und Rechtevergabe integriert werden sollen.

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 KiB