Teil I – ERP-System (Verwaltung)¶
1. Einführung¶
EasySale ist ein cloudbasiertes Warenwirtschafts- und Shop-System bestehend aus drei Kernkomponenten:
- ERP-System (Web-App): Die Verwaltungsoberfläche für Administratoren – beschrieben in Teil I dieses Handbuchs
- Shop-System Mobile-App: Die native Bestell-App für Endkunden – beschrieben in Teil II
- Shop-System Web-App: Der Web-basierte Online-Shop für Endkunden – beschrieben in Teil III
Systemarchitektur¶
| Komponente | Beschreibung |
|---|---|
| ERP-System | Flutter Web-App für Administratoren – Verwaltung von Kunden, Artikeln, Bestellungen, Lager, Benachrichtigungen und Systemeinstellungen |
| Shop Mobile-App | Native Flutter-App (iOS & Android) für Endkunden – Artikelsuche, Bestellungen, Feed, Einkaufslisten |
| Shop Web-App | Flutter Web-App für Endkunden – identische Funktionen wie die Mobile-App, optimiert für Desktop-Browser |
| Cloud Functions | Serverlose Hintergrunddienste (Node.js) für Automatisierungen, Trigger, Jobs und Connectoren |
| Firebase | Firestore-Datenbank, Firebase Authentication, Cloud Storage, Cloud Messaging und Hosting |
Anmeldung (ERP)¶
Nach Eingabe Ihrer E-Mail-Adresse und Ihres Passworts gelangen Sie zum Dashboard. Beim ersten Login wird automatisch ein Tutorial gestartet, das die wichtigsten Funktionen erklärt.
Auto-Logout bei Inaktivität¶
Der InactivityService überwacht Benutzerinteraktionen (Mausbewegung, Tastatureingabe, Touch). Nach einer konfigurierbaren Zeitspanne ohne Aktivität wird der Benutzer automatisch abgemeldet und zur Anmeldeseite weitergeleitet. Dies erhöht die Sicherheit bei unbeaufsichtigten Arbeitsplätzen.
2. Rollen & Berechtigungen¶
EasySale unterscheidet zwischen ERP-Benutzern (Verwaltung) und Shop-Benutzern (Endkunden). Jede Gruppe hat eigene Rollen mit unterschiedlichen Rechten.
2.1 ERP-Benutzerrollen¶
Im ERP-System gibt es drei Rollen, die hierarchisch aufeinander aufbauen:
| Rolle | Icon | Beschreibung |
|---|---|---|
| Benutzer | 👤 | Eingeschränkter Zugriff – kann nur lesen, es sei denn, granulare Berechtigungen wurden explizit vergeben |
| Administrator | 🛡️ | Vollzugriff auf alle operativen ERP-Funktionen (Kunden, Artikel, Bestellungen, Einstellungen) |
| Superadministrator | 🔒 | Wie Administrator, zusätzlich: Benutzerverwaltung, Connector-Zugangsdaten, Audit-Logs |
Berechtigungsmatrix ERP¶
| Funktion | Benutzer | Administrator | Superadministrator |
|---|---|---|---|
| Kunden anzeigen | ✅ | ✅ | ✅ |
| Kunden erstellen/bearbeiten/löschen | ⚙️ Nur mit Berechtigung | ✅ | ✅ |
| Artikel anzeigen | ✅ | ✅ | ✅ |
| Artikel erstellen/bearbeiten/löschen | ⚙️ Nur mit Berechtigung | ✅ | ✅ |
| Bestellungen anzeigen | ✅ | ✅ | ✅ |
| Bestellungen erstellen/bearbeiten/löschen | ⚙️ Nur mit Berechtigung | ✅ | ✅ |
| Bestellungen stornieren | ⚙️ Nur mit Berechtigung | ✅ | ✅ |
| Systemeinstellungen verwalten | ❌ | ✅ | ✅ |
| ERP-Benutzer erstellen/bearbeiten/löschen | ❌ | ❌ | ✅ Exklusiv |
| Benutzerrollen ändern | ❌ | ❌ | ✅ Exklusiv |
| Benutzerberechtigungen konfigurieren | ❌ | ❌ | ✅ Exklusiv |
| Connector-Zugangsdaten verwalten | ❌ | ❌ | ✅ Exklusiv |
| Audit-Logs einsehen | ❌ | ❌ | ✅ Exklusiv |
| Wartungsaufgaben verwalten | ❌ | 👁️ Nur lesen | ✅ |
⚙️ Granulare Berechtigungen: Benutzer mit der Rolle „Benutzer" können vom Superadministrator einzelne Berechtigungen erhalten (z. B.
canCreateCustomers,canEditArticles,canCancelOrders). Diese Berechtigungen werden pro Benutzer in einem Berechtigungsprofil gespeichert.
Besonderheiten der Rollen¶
Was ein Administrator NICHT kann: - Keine ERP-Benutzer erstellen, bearbeiten oder löschen - Keine Benutzerrollen oder -berechtigungen ändern - Keinen Zugriff auf Connector-Zugangsdaten oder Audit-Logs - Kann einen Superadministrator nicht herabstufen
Was ein Superadministrator exklusiv kann: - Alle ERP-Benutzer verwalten (erstellen, bearbeiten, löschen) - Rollen für andere Benutzer ändern (außer andere Superadmins) - Granulare Berechtigungen konfigurieren - Connector-Zugangsdaten einsehen und ändern - Audit-Log-Protokolle lesen - Wartungsaufgaben erstellen und verwalten
Connector-Sperre¶
Wenn ein Connector als Quellsystem für eine Ressource aktiv ist (z. B. Business Central für Kunden), werden die entsprechenden Erstellungs-Berechtigungen automatisch gesperrt – auch für Administratoren. In diesem Fall können nur über den Connector neue Datensätze angelegt werden.
2.2 Shop-Benutzerrollen (Kundenbenutzer)¶
Im Shop-System (Mobile & Web) gibt es zwei Rollen pro Kundenkonto:
| Rolle | Icon | Beschreibung |
|---|---|---|
| Benutzer | 👤 | Standard-Rolle – kann bestellen und den eigenen Kunden-Bereich einsehen |
| Administrator | ⚙️ | Erweiterte Rechte – kann zusätzlich Benutzer, Adressen, Lieferpausen und Einstellungen verwalten |
Berechtigungsmatrix Shop¶
| Funktion | Benutzer | Administrator |
|---|---|---|
| Artikel ansehen & durchsuchen | ✅ | ✅ |
| Bestellungen aufgeben | ✅ | ✅ |
| Eigene Bestellhistorie einsehen | ✅ | ✅ |
| Feed / Benachrichtigungen lesen | ✅ | ✅ |
| Einkaufslisten verwalten | ❌ | ✅ |
| Lieferadressen erstellen/bearbeiten/löschen | ❌ | ✅ |
| Lieferpausen verwalten | ❌ | ✅ |
| Kundeneinstellungen ändern | ❌ | ✅ |
| Neue Benutzer genehmigen/ablehnen | ❌ | ✅ |
| Benutzer verwalten (für eigenen Kunden) | ❌ | ✅ |
Hinweis: Ein Shop-Benutzer mit der Rolle „Benutzer" kann Lieferadressen sehen, die vom ERP erstellt wurden, aber keine eigenen anlegen, bearbeiten oder löschen.
Automatische Administrator-Vergabe¶
Der erste Benutzer, der sich für ein Kundenkonto registriert, wird automatisch zum Administrator dieses Kunden. Alle weiteren Benutzer, die sich für dasselbe Kundenkonto registrieren, erhalten die Rolle „Benutzer".
Ein ERP-Administrator kann die Rolle jederzeit über die Registrierungsseite oder den Benutzer-Tab im Kunden ändern (Benutzer ↔ Administrator).
Multi-Kunden-Zugriff¶
Ein Shop-Benutzer kann mehreren Kundenkonten zugeordnet sein. Dabei können die Rollen pro Kunde unterschiedlich sein:
- Benutzer kann z. B. für Kunde A „Administrator" und für Kunde B „Benutzer" sein
- Das aktive Kundenkonto wird über die Kunden-Auswahl im Profil gewechselt
- Die Rolle wird über den JWT-Claim adminCustomerIds gesteuert
2.3 JWT-Claims & Autorisierung¶
Die Zugriffskontrolle wird über Firebase Custom Claims im JWT-Token gesteuert:
ERP-Benutzer¶
| Claim | Wert | Beschreibung |
|---|---|---|
appType |
"erp" |
Kennzeichnet den Benutzer als ERP-Benutzer |
Die konkreten Berechtigungen (Rolle + granulare Rechte) werden aus dem Firestore-Dokument users/{uid} gelesen.
Shop-Benutzer¶
| Claim | Wert | Beschreibung |
|---|---|---|
appType |
"shop" |
Kennzeichnet den Benutzer als Shop-Benutzer |
customerIds |
["CUST001", "CUST002"] |
Array aller genehmigten Kundenkonten |
adminCustomerIds |
["CUST001"] |
Teilmenge von customerIds – Kundenkonten, für die der Benutzer Administrator ist |
Automatische Claim-Aktualisierung¶
Die JWT-Claims werden durch einen Cloud Function Trigger (onShopUserPermissionChanged) automatisch aktualisiert, wenn:
- Ein Benutzer genehmigt wird → customerIds wird erweitert
- Ein Benutzer abgelehnt oder gelöscht wird → customerIds wird bereinigt
- Die Rolle geändert wird (Benutzer ↔ Administrator) → adminCustomerIds wird aktualisiert
- Der Token wird beim nächsten Login oder Token-Refresh wirksam
3. Dashboard¶
Das Dashboard ist die Startseite des ERP-Systems und bietet einen umfassenden Überblick über die aktuellen Geschäftskennzahlen.
Zeitraum-Filter¶
Über den Dropdown-Filter oben rechts können folgende Zeiträume ausgewählt werden:
| Zeitraum | Beschreibung |
|---|---|
| Heute | Daten des aktuellen Tages (stündliche Auflösung) |
| Gestern | Daten des Vortages (stündliche Auflösung) |
| Diese Woche | Aktuelle Kalenderwoche (tägliche Auflösung mit Wochentagen) |
| Letzte 30 Tage | Rollierender 30-Tage-Zeitraum (tägliche Auflösung) |
| Letzte 60 Tage | Rollierender 60-Tage-Zeitraum (tägliche Auflösung) |
| Dieser Monat | Aktueller Kalendermonat (tägliche Auflösung) |
| Letzter Monat | Vormonat (tägliche Auflösung) |
| Dieses Jahr | Aktuelles Kalenderjahr (monatliche Auflösung) |
| Letztes Jahr | Vorjahr (monatliche Auflösung) |
Über den Aktualisieren-Button können die Daten manuell neu geladen werden. Das System prüft automatisch, ob zwischenzeitlich neue Bestellungen eingegangen sind, und zeigt ggf. eine Benachrichtigung an.
KPI-Leiste (Kurz-Informationen)¶
Am oberen Rand werden vier farblich kodierte Kennzahlenkarten angezeigt:
| KPI | Icon | Farbe | Beschreibung |
|---|---|---|---|
| Aktive Nutzer-Sessions | 👤 Personen-Icon | Blau | Summe der aktuellen Android- und iOS-Sessions im gewählten Zeitraum |
| Anzahl Kunden | 👥 Gruppen-Icon | Grün | Gesamtzahl der einzigartigen Kunden im Zeitraum |
| Anzahl Bestellungen | 🛒 Warenkorb-Icon | Orange | Gesamtzahl aller Bestellungen im Zeitraum |
| Umsatz | 💶 Euro-Icon | Lila | Gesamtumsatz in EUR, formatiert mit Tausendertrennzeichen (z. B. „12.345,67 €") |
Während die Daten geladen werden, wird ein Bindestrich „–" als Platzhalter angezeigt. Sobald die Daten verfügbar sind, erscheinen die formatierten Zahlen.
Statistik-Karten (2×2 Layout)¶
Unterhalb der KPI-Leiste werden vier Statistik-Karten in einem 2×2-Raster dargestellt:
Karte 1: Umsatzentwicklung (links oben)¶
Ein Liniendiagramm zeigt die Umsatzentwicklung im gewählten Zeitraum. Die Granularität passt sich automatisch an:
| Zeitraum | Auflösung | X-Achsen-Beschriftung |
|---|---|---|
| Heute / Gestern | 24 Stunden-Slots | 00:00, 01:00, ... 23:00 |
| Diese Woche | 7 Tage | Mo, Di, Mi, Do, Fr, Sa, So |
| Letzte 30/60 Tage, Dieser/Letzter Monat | Wochen-Aggregation | W1, W2, W3, W4 |
| Dieses/Letztes Jahr | 12 Monate | Jan, Feb, Mär, ... Dez |
Fehlende Zeitfenster werden automatisch mit 0 aufgefüllt, sodass das Diagramm immer ein vollständiges Bild zeigt. Die Y-Achse zeigt den Umsatz in Euro. Beim Hovern über einen Datenpunkt erscheint ein Tooltip mit dem exakten Wert.
Karte 2: Top 5 Artikel (rechts oben)¶
Eine Rangliste der fünf umsatzstärksten Artikel im gewählten Zeitraum:
| Spalte | Beschreibung |
|---|---|
| Rang | Platzierung 1–5 |
| Artikelname | Name des Artikels |
| Artikelnummer | Eindeutige Artikelnummer |
| Umsatz | Umsatzvolumen in EUR (grüner, fetter Text) |
Jede Zeile ist anklickbar und navigiert direkt zur Artikeldetailseite. Über den Button „Alle anzeigen" kann eine vollständige, paginierte Liste aller Artikel nach Umsatz geöffnet werden.
Karte 3: Top Länder nach Umsatz (links unten)¶
Zeigt eine tabellarische Übersicht der umsatzstärksten Länder:
| Spalte | Beschreibung |
|---|---|
| Flagge + Ländername | Länderflagge als Bild und lokalisierter Ländername |
| Bestellungen | Anzahl der Bestellungen (oranges Warenkorb-Icon) |
| Umsatz | Umsatzvolumen in EUR (lila Euro-Icon) |
Die Zahlen werden im deutschen Format dargestellt (Punkt als Tausendertrenner, Komma als Dezimaltrenner). Die Liste ist scrollbar, falls mehr als 10 Länder vorhanden sind.
Karte 4: Top 5 Kunden (rechts unten)¶
Analog zur Top-5-Artikel-Karte, aber für Kunden:
| Spalte | Beschreibung |
|---|---|
| Rang | Platzierung 1–5 |
| Firmenname | Name des Kundenunternehmens |
| Kundennummer | Eindeutige Kundennummer |
| Umsatz | Umsatzvolumen in EUR (grüner, fetter Text) |
Jede Zeile ist anklickbar und navigiert direkt zur Kundendetailseite. „Alle anzeigen" öffnet die vollständige Kundenliste nach Umsatz.
Statistik-Berechnung und Caching¶
Die Statistiken werden über Cloud Functions berechnet und serverseitig gecacht, um die Ladezeit zu minimieren:
- „Heute" und „Diese Woche": Über den Aktualisieren-Button wird eine Live-Neuberechnung direkt als Cloud Function angestoßen. Die Ergebnisse werden sofort angezeigt.
- Alle anderen Zeiträume: Werden aus dem Firebase-Cache geladen, der regelmäßig über geplante Jobs (siehe Kapitel 11) aktualisiert wird.
- Automatische Erkennung: Das System prüft beim Zeitraumwechsel automatisch, ob neue Bestellungen eingegangen sind. Falls ja, wird eine Snackbar-Benachrichtigung eingeblendet: „Neue Bestellungen vorhanden – jetzt aktualisieren!"
Die Statistik-Berechnung ist hochoptimiert: - Feld-Selektion: Nur benötigte Felder werden geladen (~70 % Kostenreduktion) - Smart Caching: Abgeschlossene Zeiträume (z. B. „Letztes Jahr") werden übersprungen (~80 % Arbeitsersparnis) - Inkrementelle Updates: Nur Kunden mit neuen Bestellungen werden neu berechnet
Statistik-Drilldown¶
Jede Statistik-Karte bietet über den „Alle anzeigen"-Button einen Drilldown-Dialog mit paginierter Detailansicht:
- Vollständige Liste: Zeigt nicht nur die Top-5, sondern alle Datensätze nach Umsatz sortiert
- Such- und Filterfunktion: Suche nach Name, Nummer oder Kategorie
- Paginierung: Seitenweise Navigation durch große Datenmengen
- Navigation: Klick auf einen Eintrag navigiert direkt zur Kunden- oder Artikeldetailseite
4. Kunden¶
Die Kundenverwaltung ist der zentrale Bereich für alle kundenbezogenen Informationen und Aktionen.
Kundenübersicht¶
- Suche: Volltextsuche nach Firmenname, Kundennummer oder weiteren Feldern (N-Gram-basiert für schnelle Ergebnisse)
- Filter: Filterung nach Kundenkategorie über Dropdown
- Sortierung: Sortierbare Spalten in der Tabellenansicht
- Kundenliste: Tabellarische Ansicht mit Firmenname, Kundennummer, Kategorie und Status
Kunden erstellen (Editor)¶
Über den „Neuer Kunde"-Button öffnet sich der Kunden-Editor als Ganzseitenansicht mit folgenden Formularabschnitten:
Allgemeine Daten¶
| Feld | Beschreibung | Pflicht |
|---|---|---|
| Firmenname | Name des Kundenunternehmens | ✅ |
| Kundennummer | Eindeutige Kennung (wird gegen Validierungsregeln geprüft, siehe Kapitel 11.1) | ✅ |
| Kategorie | Kundenkategorie (Dropdown) | ❌ |
| Sprache | Bevorzugte Sprache | ✅ |
| Land | Zugehöriges Land | ✅ |
Kontaktdaten¶
| Feld | Beschreibung |
|---|---|
| E-Mail-Adresse | |
| Telefon | Festnetznummer |
| Mobil | Mobilnummer |
| Fax | Faxnummer |
| Website | Firmen-Website (URL) |
Adressdaten¶
| Feld | Beschreibung |
|---|---|
| Straße | Straße und Hausnummer |
| PLZ | Postleitzahl |
| Ort | Stadt |
| Land | Land (Dropdown) |
Liefertage¶
- Auswahl der Wochentage, an denen der Kunde beliefert wird
- Standard: Systemweite Liefertage werden vorausgewählt
Erweiterte Einstellungen¶
| Feld | Beschreibung |
|---|---|
| Mindestbestellmenge | Minimale Bestellmenge pro Auftrag |
| Mindestbestellwert | Minimaler Bestellwert in EUR |
| Preisanzeige im Shop | Ob Preise im Shop sichtbar sind |
| Benachrichtigungsgruppen | Zuordnung zu Benachrichtigungsgruppen |
| Kundenlisten | Zuordnung zu Kundenlisten |
Nach dem Speichern wird der Kunde in Firestore angelegt und die automatische Artikelzuweisung basierend auf Kategorien ausgelöst (Trigger: onCustomerCreated).
Kundensperre¶
Kunden können über den Sperren-Button (🔒) in der Kundendetailseite gesperrt werden:
| Zustand | Beschreibung |
|---|---|
| Entsperrt | Normaler Betrieb – Kunde kann Bestellungen aufgeben |
| Gesperrt | Kunde kann sich nicht im Shop anmelden und keine Bestellungen aufgeben |
Beim Sperren wird ein Bestätigungsdialog angezeigt. Der Sperr-Status wird in den Kundenstammdaten gespeichert und über die JWT-Claims an die Shop-Apps propagiert.
Jahreskalender-Ansicht¶
Im Kunden-Stammdaten-Tab kann über einen Button die Jahreskalender-Ansicht (YearDaysOverviewWidget) aufgerufen werden. Diese zeigt eine kompakte Jahresübersicht aller Liefertage:
- Grüne Tage: Reguläre Liefertage
- Rote Tage: Lieferpausen des Kunden
- Graue Tage: Feiertage und Betriebsferien
- Wochenenden: Abgedunkelt dargestellt
- Hilft bei der visuellen Planung von Lieferpausen und Betriebsferien
Kundenspezifische Liefermuster¶
Neben der einfachen Wochentag-Auswahl können für Kunden auch benutzerdefinierte Liefermuster konfiguriert werden:
| Lieferzyklus | Beschreibung | Beispiel |
|---|---|---|
| Täglich | Lieferung an jedem Werktag | Mo–Fr |
| Wöchentlich | Lieferung an festen Wochentagen | Jeden Di und Do |
| 14-tägig | Lieferung alle zwei Wochen | Alle 2 Wochen Mittwoch |
| Monatlich | Lieferung an einem festen Tag im Monat | Am 1. und 15. jeden Monats |
| Benutzerdefiniert | Individuelles Muster über CustomPatternEditorDialog |
Freie Konfiguration |
Das System berechnet anhand des Liefermusters und der globalen Liefertage-Einstellungen automatisch den nächsten Liefertermin.
Kundendetailseite (9 Tabs)¶
Tab 1: Stammdaten¶
Die Stammdaten-Seite ist in mehrere Blöcke unterteilt, die jeweils über einen Bearbeitungs-Button einzeln editiert werden können.
4-Wochen-Lieferkalender¶
Am oberen Rand wird ein horizontaler 4-Wochen-Kalender angezeigt, der die Liefertage des Kunden visuell darstellt: - Liefertage sind farblich hervorgehoben - Lieferpausen und Feiertage werden markiert - Der Kalender ist anklickbar und kann erweitert werden - Daten werden aus dem Lieferpausen-System geladen
Einstellungen-Block¶
Über den Bearbeiten-Button (✏️) öffnet sich der Kunden-Einstellungen-Dialog:
| Feld | Beschreibung |
|---|---|
| Firmenname | Name des Unternehmens |
| Kundennummer | Eindeutige Kennung (wird bei der Registrierung und im Shop verwendet) |
| Kategorie | Kundenkategorie (farblich markiert, über Dropdown wählbar) |
| Sprache | Bevorzugte Sprache des Kunden (bestimmt die Sprache der Shop-Oberfläche) |
| Land | Zugehöriges Land (beeinflusst Artikelverfügbarkeit und Lieferbedingungen) |
| Mindestbestellmenge | Minimale Bestellmenge pro Auftrag (wird im Shop erzwungen) |
| Mindestbestellwert | Minimaler Bestellwert in EUR (wird im Shop erzwungen) |
| Preisanzeige | Ob Preise im Shop angezeigt werden (Ein/Aus) |
| Telefonliste | Ob der Kunde auf der Telefonliste erscheint (Ein/Aus) |
| Kein Bedarf bis | Datum, bis zu dem der Kunde nicht bestellt – der Kunde wird im angegebenen Zeitraum als „inaktiv" markiert |
| Profilbild | Upload eines Kunden-Logos oder -Fotos |
| Gesperrt | Ob der Kunde gesperrt ist (keine Bestellungen möglich) |
| Benutzerdefinierte Felder | Konfigurierbare Zusatzfelder je nach Client-Konfiguration |
Kontakt-Block¶
Über den Bearbeiten-Button öffnet sich der Kunden-Kontakt-Dialog:
| Feld | Beschreibung |
|---|---|
| E-Mail-Adresse des Ansprechpartners | |
| Telefon | Festnetznummer |
| Mobil | Mobilnummer |
| Fax | Faxnummer (falls vorhanden) |
| Website | Firmen-Website (URL) |
Adress-Block¶
Über den Bearbeiten-Button öffnet sich der Kunden-Adress-Dialog:
| Feld | Beschreibung |
|---|---|
| Straße | Straße und Hausnummer |
| PLZ | Postleitzahl |
| Ort | Stadt |
| Land | Land (Dropdown-Auswahl) |
Die hier eingegebene Adresse dient als Rechnungsadresse und als Standard-Lieferadresse, sofern keine separate Lieferadresse hinterlegt ist.
Liefertage-Block¶
Über den Bearbeiten-Button öffnet sich der Liefertage-Dialog: - Auswahl, an welchen Wochentagen der Kunde beliefert werden kann - Individuelle Abweichung von den systemweiten Liefertagen möglich
Tab 2: Artikel¶
Zeigt alle dem Kunden zugewiesenen Artikel an. Die Zuordnung erfolgt über die Artikelzuweisung (siehe Artikeldetail, Tab 4).
Suche & Filter¶
- Volltextsuche: N-Gram-basierte Suche nach Artikelname und -nummer (min. 3 Zeichen)
- Kategoriefilter: Dropdown-Auswahl einer Artikelkategorie zur Einschränkung der Ergebnisse
- Kombination: Suche und Kategorie können gleichzeitig verwendet werden
Pagination¶
- Lazy Loading: Artikel werden in Blöcken von 30 Stück nachgeladen
- Unendliches Scrollen: Beim Erreichen des Listenendes werden automatisch weitere Artikel geladen
- Lade-Indikator: Spinner am Ende der Liste zeigt laufendes Nachladen an
Artikelkarten-Anzeige¶
Jeder Artikel wird als Karte dargestellt mit:
| Element | Beschreibung |
|---|---|
| Artikelbild | Vorschaubild (erstes Bild aus der Bildergalerie) oder Platzhalter-Icon |
| Artikelname | Hauptbezeichnung des Artikels |
| Artikelnummer | Eindeutige Kennung |
| Preis | Standardpreis der Standard-Variante (falls Preisanzeige aktiviert) |
| Kategorie-Badge | Farbiger Chip mit Kategoriename |
Klick auf eine Artikelkarte navigiert direkt zur Artikeldetailseite.
Tab 3: Benutzer¶
Tabellarische Übersicht aller Benutzerkonten, die dem Kunden zugeordnet sind.
Tabellenspalten¶
| Spalte | Beschreibung |
|---|---|
| E-Mail-Adresse des Benutzers (aus Firebase Authentication) | |
| Sprache | Bevorzugte Sprache des Benutzers (z. B. DE, EN) |
| Benutzertyp | Benutzer oder Administrator – Administratoren können weitere Benutzer verwalten |
| Registrierungsstatus | Ausstehend (🟠), Genehmigt (🟢) oder Abgelehnt (🔴) – mit farbigem Badge |
| AGB akzeptiert | Ob und welche AGB-Version der Benutzer akzeptiert hat |
| Statusdatum | Datum der letzten Statusänderung (z. B. Genehmigungsdatum) |
Aktionen pro Benutzer¶
| Aktion | Beschreibung |
|---|---|
| ✅ Genehmigen | Setzt den Status auf „Genehmigt" – Benutzer erhält Zugang zum Shop. JWT-Claims werden automatisch aktualisiert. |
| ❌ Ablehnen | Setzt den Status auf „Abgelehnt" – Zugang wird verweigert |
| ✏️ Bearbeiten | Öffnet Dialog zur Bearbeitung von Name, Sprache und Benutzertyp |
| 🗑️ Löschen | Entfernt den Benutzer vollständig (Firebase Auth + Firestore). Bestätigungsdialog erforderlich. |
Hinweis: Der erste Benutzer, der sich für einen Kunden registriert, wird automatisch zum Administrator dieses Kunden. Weitere Benutzer erhalten standardmäßig den Typ „Benutzer".
Tab 4: Bestellungen¶
Paginierte Tabelle aller Bestellungen dieses Kunden.
Tabellenspalten¶
| Spalte | Beschreibung |
|---|---|
| Bestellnummer | z. B. „ORD-2025-001" – klickbar, öffnet die Bestelldetailseite |
| Betrag | Gesamtbetrag der Bestellung in der hinterlegten Währung |
| Status | Farbkodiertes Badge: Ausstehend (🟠), Bestätigt (🔵), In Bearbeitung (🔵), Versendet (🟢), Geliefert (🟢 dunkel), Storniert (🔴) |
| Bestelldatum | Formatiert als „dd.MM.yyyy HH:mm" |
Sortierung & Navigation¶
- Sortierbar nach jeder Spalte (Klick auf Spaltenüberschrift)
- Standard-Sortierung: Neueste Bestellungen zuerst
- Direkter Klick auf eine Bestellzeile öffnet die Bestelldetailseite
- Server-seitige Paginierung mit „Mehr laden"-Button
Tab 5: Statistiken¶
Kundenspezifische Umsatz- und Bestellstatistiken mit interaktiven Diagrammen.
KPI-Karten (4 Karten)¶
| KPI | Format | Beispiel |
|---|---|---|
| Gesamtbestellungen | Anzahl | „42 Bestellungen" |
| Gesamtumsatz | Währung | „€ 12.345,67" |
| Durchschnittlicher Bestellwert | Währung | „€ 294,20" |
| Bestellte Artikel (Unique) | Anzahl | „18 Artikel" |
Umsatzdiagramm¶
Ein Linien-/Balkendiagramm zeigt den Umsatzverlauf über die gewählte Zeitperiode:
| Zeitraum | Granularität |
|---|---|
| Heute | Stündlich (0–23 Uhr) |
| Gestern | Stündlich (0–23 Uhr) |
| Letzte 7 Tage | Täglich |
| Letzte 30 Tage | Täglich |
| Dieser Monat | Täglich |
| Letzter Monat | Täglich |
| Dieses Jahr | Wöchentlich |
| Letztes Jahr | Wöchentlich |
- X-Achse: Zeitperiode
- Y-Achse: Umsatz in EUR
Top-Artikel-Karte¶
Zeigt die Top 5 der meistbestellten Artikel dieses Kunden:
| Spalte | Beschreibung |
|---|---|
| Artikelnummer | Eindeutige Kennung |
| Artikelname | Bezeichnung |
| Menge | Gesamtmenge aller Bestellungen |
| Umsatz | Gesamtumsatz für diesen Artikel |
Klick auf einen Artikel navigiert zur Artikeldetailseite.
Datenladung¶
- Statistiken werden aus Firebase-Cache geladen (vorberechnet)
- Aktualisierungsbutton (↻) oben rechts zum Neuladen
- Leerer Zustand: Zeigt Nullwerte, wenn keine Bestelldaten vorhanden
Tab 6: Feed¶
Der Feed ist ein leistungsfähiges Kommunikationswerkzeug, über das Inhalte direkt an den Kunden gesendet werden können. Der Feed unterstützt vier verschiedene Eintragstypen und bietet einen vollständigen Editor.
Eintragstypen¶
| Typ | Darstellung | Beschreibung |
|---|---|---|
| Push-Benachrichtigung | iOS-Benachrichtigungs-Banner-Stil | Kurze Nachricht, die als Push-Notification auf dem Gerät des Kunden erscheint |
| In-App-Nachricht | Instagram-Post-ähnliches Layout | Rich-Text-Nachricht mit Bildern und Formatierung, sichtbar im Feed der Shop-App |
| Dokument | Dokumentenliste | Anhänge (PDF, Dateien) die dem Kunden zur Verfügung gestellt werden |
| Systemnachricht | Minimalistischer Stil | Automatisch generierte Systemmeldungen (z. B. Statusänderungen) |
Felder pro Feed-Eintrag¶
| Feld | Beschreibung |
|---|---|
| Titel | Überschrift des Eintrags (max. 2 Zeilen, danach ausklappbar) |
| Inhalt | Rich-Text-Body mit Formatierungsunterstützung (Fett, Kursiv, Links) |
| Typ | Einer der 4 Eintragstypen (siehe oben) |
| Status | Zustellstatus: Ausstehend, Gesendet, Zugestellt, Fehlgeschlagen |
| Erstellt am | Zeitstempel (wird als relative Zeit angezeigt, z. B. „vor 5 Minuten") |
| Sprache | Sprache des Inhalts (Deutsch, Englisch usw.) |
| Bilder | Bildkarussell (bis zu 500px Höhe) |
| Dokumente | Angehängte Dateien |
| Zustellinfo | Metadaten zur Zustellung (bei Push- und Systemnachrichten) |
Suche & Filter¶
- Textsuche: Volltextsuche über Titel und Inhalt
- Typfilter: Dropdown zur Einschränkung auf einen Eintragstyp (Push, InApp, Dokument, System)
- Sprachfilter: Dynamisch basierend auf den Sprachen der Kundenbenutzer
- Pagination: 20 Einträge pro Seite mit Nachladen
Feed-Editor (4-Tab-Dialog)¶
Zum Erstellen neuer Feed-Einträge öffnet sich ein Dialog mit 4 Tabs:
Tab 1: Kundenauswahl - Einzelkunden- oder Mehrfachauswahl über Picker-Dialog - Vorselektiert mit dem aktuell geöffneten Kunden
Tab 2: Inhalt - Titel-Feld: Pflichtfeld für die Überschrift - Rich-Text-Editor (Quill): Formatierungsmöglichkeiten für Fett, Kursiv, Unterstrichen, Links, Listen - Sprachauswahl: Inhalte können pro Sprache separat erfasst werden
Tab 3: Dokumente - Datei-Upload per Drag & Drop oder Dateiauswahl - PDF- und andere Dateiformate unterstützt - Upload nach Firebase Storage mit Fortschrittsanzeige
Tab 4: Sendeoptionen - Push/In-App-Toggle: Ob als Push-Benachrichtigung und/oder In-App-Nachricht gesendet wird - Zeitplanung: Sofort senden oder für späteren Zeitpunkt planen
Aktionen auf Feed-Einträgen¶
| Aktion | Beschreibung |
|---|---|
| Aufklappen | Inline-Ansicht des vollständigen Inhalts mit Bildern |
| Zustelldetails | Klick auf Zustell-Badge zeigt detaillierte Zustellprotokolle |
| Bearbeiten | Editor erneut öffnen (nur für Entwürfe) |
| Löschen | Eintrag entfernen (Bestätigungsdialog erforderlich) |
Tab 7: Einkaufslisten¶
Einkaufslisten ermöglichen es Kunden, in der Shop-App Artikelsammlungen zusammenzustellen. Im ERP können Administratoren diese Listen einsehen und verwalten.
Einkaufslisten-Felder¶
| Feld | Beschreibung |
|---|---|
| Titel | Name der Einkaufsliste (Pflichtfeld) |
| Beschreibung | Optionale Notizen zur Liste |
| Kunden-ID | Zugehöriger Kunde |
| Artikelpositionen | Array mit einzelnen Listenpositionen |
Felder pro Listenposition¶
| Feld | Beschreibung |
|---|---|
| Artikelnummer | Referenz auf den Artikel |
| Artikelname | Anzeigename |
| Menge | Gewünschte Bestellmenge |
| Kommentar | Benutzernotiz zur Position (im ERP editierbar) |
| Status | Erledigungsstatus der Position |
Darstellung¶
- Listenansicht mit Einkaufslistennamen als Überschriften
- Pro Liste wird ein Artikel-Zähler-Badge angezeigt
- Leerer Zustand: Hinweismeldung mit Erstellen-Aktion
Aktionen¶
| Aktion | Beschreibung |
|---|---|
| Erstellen | Neue Einkaufsliste über den „+"-Button anlegen |
| Bearbeiten | Titel und Beschreibung im Editor-Dialog ändern |
| Löschen | Liste entfernen (Bestätigungsdialog erforderlich) |
| Positionen hinzufügen | Über Inline-UI oder Artikelpicker |
| Position entfernen | Einzelne Position aus der Liste löschen |
Hinweis: Einkaufslisten werden über Mobile-App UND ERP gleichzeitig verwaltet. Änderungen werden in Echtzeit synchronisiert.
Tab 8: Lieferadressen¶
Verwaltung aller Lieferadressen des Kunden. Jeder Kunde kann mehrere Lieferadressen hinterlegen, die bei der Bestellung im Shop zur Auswahl stehen.
Adressfelder¶
| Feld | Beschreibung |
|---|---|
| Firma | Firmenname an der Lieferadresse (optional) |
| Kurzname | Spitzname für die Adresse (z. B. „Hauptlager", „Filiale Süd") |
| Straße | Straßenname |
| Hausnummer | Hausnummer |
| PLZ | Postleitzahl |
| Ort | Stadt |
| Bundesland | Bundesland/Provinz (optional) |
| Land | Land (Dropdown-Auswahl, erbt den Standard vom Kunden) |
| Standard | Boolean-Flag: Markiert die Adresse als Standard-Lieferadresse |
Darstellung¶
- Jede Adresse wird als Karte dargestellt mit farbigem Akzentstrich (3px, links)
- Vollständigkeits-Indikator: Badge zeigt an, ob alle Pflichtfelder ausgefüllt sind
- Standard-Badge: Die als Standard markierte Adresse erhält ein visuelles Kennzeichen
- Responsives Layout mit kompakten Labels
- Leerer Zustand: Hinweismeldung mit Erstellen-Button
Aktionen¶
| Aktion | Beschreibung |
|---|---|
| Erstellen | Neue Lieferadresse über den „+"-Button anlegen (erfordert Bearbeitungsberechtigung) |
| Bearbeiten | Adressdaten im Editor-Dialog ändern (Stift-Icon pro Karte) |
| Löschen | Adresse entfernen (Papierkorb-Icon pro Karte, erfordert Bearbeitungsberechtigung) |
| Als Standard setzen | „Als Standard markieren"-Button – setzt das isDefault-Flag und entfernt es von der bisherigen Standardadresse |
Tab 9: Einstellungen¶
Kundenspezifische Konfigurationen, unterteilt in zwei aufklappbare Sektionen.
Sektion 1: Benachrichtigungsgruppen¶
Zeigt alle verfügbaren Benachrichtigungsgruppen an, denen der Kunde zugeordnet werden kann:
- Aufklappbare Sektion mit Icon, Titel und Pfeil-Symbol (dreht sich beim Aufklappen)
- Pro Gruppe wird ein Toggle-Schalter angezeigt (Ein/Aus)
- Der Toggle bestimmt, ob der Kunde Benachrichtigungen dieser Gruppe erhält
- Badge-Zähler in der Sektionsüberschrift zeigt die Anzahl aktiver Gruppen
- Änderungen werden sofort in Firebase gespeichert
Beispiel-Gruppen: „Angebote & Aktionen", „Neue Artikel", „Bestellstatus-Updates", „Newsletter"
Sektion 2: Kundenlisten¶
Verwaltung der Kundenlistenzugehörigkeit:
- Aufklappbare Sektion analog zu den Benachrichtigungsgruppen
- Zwei-Spalten-Layout: Verfügbare Listen (links) | Ausgewählte Listen (rechts)
- Checkbox-Toggles für jede Liste
- Pro Liste wird der Listenname und die aktuelle Artikelanzahl angezeigt
- Optimistische UI-Updates: Toggle wird sofort visuell umgeschaltet, Speicherung erfolgt asynchron
- Änderungen werden in Firebase persistiert
Layout beider Sektionen¶
- Icon + Titel + Untertitel pro Sektion
- Trennlinie zwischen den Sektionen
- Scrollbereich für lange Inhalte
Aktionen auf der Kundenseite¶
Tab-Badges¶
Jeder Kunden-Tab zeigt ein Zähler-Badge an, das die Anzahl der Einträge darstellt: - Artikel-Tab: Anzahl zugewiesener Artikel - Benutzer-Tab: Anzahl registrierter Benutzer - Bestellungen-Tab: Anzahl der Bestellungen - Feed-Tab: Anzahl der Feed-Einträge - Einkaufslisten-Tab: Anzahl der Listen - Lieferadressen-Tab: Anzahl der Adressen
Verfügbare Aktionen¶
| Aktion | Beschreibung |
|---|---|
| Bearbeiten | Stammdaten ändern über den Bearbeitungs-Dialog (Stift-Icon in jedem Block) |
| Löschen | Kunde löschen – mit Validierung: Löschung wird verhindert, wenn aktive Bestellungen oder zugeordnete Benutzer existieren. Bestätigungsdialog erforderlich. |
| Telefonliste generieren | Export der Telefonliste als PDF oder Excel |
| Kunde sperren / entsperren | Blockiert den Shop-Zugang des Kunden – gesperrte Kunden können keine Bestellungen aufgeben |
Client-Konfigurationsüberschreibungen¶
Über die Client-Konfiguration (ClientConfig) können bestimmte Tabs für einzelne Mandanten deaktiviert oder umbenannt werden. Tabs, die in der Konfiguration als „deaktiviert" markiert sind, werden in der Kunden-Detailseite nicht angezeigt.
5. Artikel¶
Die Artikelverwaltung ermöglicht die vollständige Pflege des Sortiments.
Artikelübersicht¶
- Suche: Volltextsuche nach Artikelname, Artikelnummer, Beschreibung
- Filter: Filterung nach Artikelkategorien und -gruppen
- Unterseiten: Artikelliste, Artikelgruppen, Kategorien-Verwaltung
Artikeldetailseite (6 Tabs)¶
Tab 1: Stammdaten¶
| Feld | Beschreibung |
|---|---|
| Artikelname | Bezeichnung des Artikels |
| Artikelnummer | Eindeutige Nummer |
| Preis | Standardpreis (wird auf Variantenebene definiert) |
| Mengeneinheit | z. B. Stück, kg, Liter |
| Steuer | Steuersatz |
| EAN-Code | Barcode / GTIN |
| Verfügbarkeit | Aktiviert/Deaktiviert |
| Im Shop anzeigen | Sichtbarkeit im Online-Shop |
| Lagerverfolgung | Ob Bestand verfolgt wird |
| Kategorien | Zugeordnete Artikelkategorien |
| Länderverfügbarkeit | In welchen Ländern verfügbar |
| Benutzerdefinierte Felder | Konfigurierbare Zusatzfelder |
Tab 2: Beschreibungen¶
- Mehrsprachige Beschreibungen (Deutsch, Englisch und weitere)
- Separate Felder pro Sprache
- Badge zeigt die Anzahl der ausgefüllten Sprachen an
- KI-Übersetzung (falls aktiviert): Button zur automatischen Übersetzung der Beschreibung in alle aktiven Sprachen – bestehende Texte werden nicht überschrieben, nur leere Felder befüllt
Tab 3: Artikelvarianten¶
Varianten definieren verschiedene Ausführungen eines Artikels (z. B. Größen, Farben):
| Feld | Beschreibung |
|---|---|
| Variantenname | z. B. „Rot Groß" |
| Variantennummer | Eigene SKU/Nummer |
| Preis | Variantenspezifischer Preis |
| Menge | Menge pro Einheit |
| Verfügbarkeit | Aktiviert/Deaktiviert |
| Im Shop anzeigen | Sichtbarkeit im Shop |
| Bestand | Aktueller Lagerbestand (bei aktiver Lagerverfolgung) |
| Soll-Bestand | Gewünschter Bestandslevel |
| Meldebestand | Mindestbestand, ab dem gewarnt wird |
| Anzeigelimit | Maximale Bestandsanzeige im Shop (für Künstliche Knappheit) |
| Knappheit bis | Ablaufdatum der Knappheitsanzeige |
| Standard-Variante | Markierung als Standardvariante (⭐) |
| Bilder | Variantenspezifische Bilder mit Sortierung |
Varianten können per Drag & Drop sortiert, bearbeitet und gelöscht werden.
Tab 4: Artikelzuweisung¶
Steuerung der Sichtbarkeit eines Artikels für bestimmte Kunden:
- Automatische Zuweisung: Über Kundenkategorien – alle Kunden einer Kategorie sehen den Artikel
- Manuelle Zuweisung: Einzelne Kunden können direkt zugeordnet oder ausgeschlossen werden
- Varianten-Level: Zuweisung kann auf Artikelebene oder pro Variante erfolgen
Tab 5: Bilder¶
- Upload von Artikelbildern (Drag & Drop)
- Sortierung per Drag & Drop (Index-basiert)
- Erstes Bild = Hauptbild in der Artikelliste
- Bildvorschau und Löschen
Tab 6: Dokumente¶
- Anhängen von Dokumenten (PDF, Spezifikationen, Datenblätter)
- Dokumenttypen werden in den Einstellungen definiert
- Such- und Filterfunktion
- Upload und Download
Banner-System¶
Artikel können mit Werbe-Bannern versehen werden:
| Feld | Beschreibung |
|---|---|
| Bannertitel | Mehrsprachiger Titel (z. B. „Sonderangebot") |
| Gültig von / bis | Zeitraum, in dem das Banner angezeigt wird |
| Hintergrundfarbe | Individuelle Farbe des Banners |
| Schriftfarbe | Farbe des Bannertexts |
Banner werden automatisch über einen Job aktiviert/deaktiviert (siehe Job: Dokumenten-Gültigkeit prüfen).
Artikel-Aktionen¶
- Duplizieren: Erstellt eine Kopie des Artikels mit nächster freier Artikelnummer
- Löschen: Mit Validierung – Artikel, die in aktiven Bestellungen referenziert werden, können nicht gelöscht werden
6. Bestellungen¶
Die Bestellverwaltung bietet eine vollständige Übersicht und Steuerung aller eingehenden Bestellungen. Bestellungen können sowohl von Kunden über die Shop-App aufgegeben als auch direkt im ERP manuell erstellt werden.
Bestellung erstellen / bearbeiten (Editor)¶
Über den „Neue Bestellung"-Button oder das Bearbeitungs-Icon einer bestehenden Bestellung öffnet sich der Bestell-Editor-Dialog:
Schritt 1: Kundenauswahl¶
| Element | Beschreibung |
|---|---|
| Kundensuche | Suche nach Kundenname oder -nummer |
| Kundenkarte | Zeigt den ausgewählten Kunden mit Name, Nummer und Kategorie |
| Lieferadresse | Dropdown-Auswahl der hinterlegten Lieferadressen des Kunden |
Schritt 2: Artikelauswahl¶
| Element | Beschreibung |
|---|---|
| Artikelsuche | Volltextsuche über alle dem Kunden zugewiesenen Artikel |
| Variantenauswahl | Dialog zur Auswahl der gewünschten Variante (mit Bild, Preis, Verfügbarkeit) |
| Mengensteuerung | Increment/Decrement-Buttons sowie direktes Eingabefeld |
| Positionsliste | Live-Übersicht aller hinzugefügten Positionen mit Einzelpreis und Summe |
Schritt 3: Bestelldetails¶
| Feld | Beschreibung |
|---|---|
| Lieferdatum | Datumspicker – berechnet automatisch den nächsten verfügbaren Liefertag |
| Bestellnotizen | Freitext-Kommentarfeld |
| Rabatt | Optionaler Rabatt in % oder absolut |
Schritt 4: Bestätigung¶
- Zusammenfassung aller Positionen mit Preisberechnung
- Gesamtbetrag wird angezeigt
- „Bestellung aufgeben"-Button erstellt die Bestellung in Firestore
Hinweis: Bei der ERP-seitigen Bestellerstellung gelten dieselben Server-seitigen Validierungen wie bei Shop-Bestellungen (Preisvalidierung, Verfügbarkeitsprüfung, Mindestbestellwert).
Bestellübersicht¶
Die Bestellübersicht zeigt alle Bestellungen in einer paginierten Tabelle.
Tabellenspalten¶
| Spalte | Beschreibung |
|---|---|
| ☐ Auswahl | Checkbox für Massenaktionen (links) |
| Bestellnummer | z. B. „ORD-2025-001" – klickbar, öffnet die Detailseite |
| Kunde | Kundenname + Kundennummer |
| Betrag | Gesamtbestellwert in Währung |
| Status | Farbkodiertes Status-Badge |
| Bestelldatum | Formatiert als „dd.MM.yyyy HH:mm" |
| Aktionen | Icon-Buttons: Anzeigen, Bearbeiten, Löschen |
Suche¶
Die Suche unterstützt drei Suchfelder mit einheitlichen Validierungsregeln:
| Suchfeld | Beschreibung |
|---|---|
| Kundennummer | Prefix-basierte Suche, min. 3 / max. 7 Zeichen (automatisch abgeschnitten) |
| Kundenname | Partielle Namenssuche, min. 3 / max. 7 Zeichen |
| Bestellnummer | Prefix-basierte Suche, min. 3 / max. 7 Zeichen |
Hinweis: Bei weniger als 3 eingegebenen Zeichen wird keine serverseitige Suche ausgelöst, um die Datenbankbelastung gering zu halten.
Dynamische Filter¶
| Filter | Beschreibung |
|---|---|
| Status | Dropdown: Ausstehend, Bestätigt, In Bearbeitung, Versendet, Geliefert, Storniert, Abgelehnt |
| Zeitraum | Datumsbereichs-Auswahl (von–bis) |
| Betrag | Betragsbereichs-Filter |
Massenaktionen¶
Über die Checkboxen links können mehrere Bestellungen ausgewählt werden:
| Massenaktion | Beschreibung |
|---|---|
| PDF-Export | Alle ausgewählten Bestellungen als einzelne PDFs oder Sammel-PDF exportieren |
| Excel-Export | Alle ausgewählten Bestellungen in eine Excel-Datei exportieren |
| Massenstatus-Änderung | Status aller ausgewählten Bestellungen gleichzeitig ändern |
| Massenlöschung | Alle ausgewählten Bestellungen löschen (Bestätigungsdialog) |
Aktionen pro Zeile¶
| Aktion | Beschreibung |
|---|---|
| 👁️ Anzeigen | Öffnet Seitenpanel mit vollständigen Bestelldetails |
| ✏️ Bearbeiten | Öffnet den Bestellungs-Editor-Dialog |
| 📋 Duplizieren | Erstellt eine Kopie der Bestellung |
| 🗑️ Löschen | Einzelne Bestellung löschen (Bestätigungsdialog) |
Pagination¶
- Server-seitige Paginierung: 100 Einträge pro Seite
- „Mehr laden"-Button am Ende der Liste
- Filter und Suchbegriffe bleiben beim Nachladen erhalten
Bestellstatus-Workflow¶
Jede Bestellung durchläuft folgende Status:
Ausstehend (0) → Bestätigt (1) → In Bearbeitung (2) → Versendet (3) → Geliefert (4)
↓
Storniert (5)
Server-Ablehnung: Abgelehnt (6)
| Status | Farbe | Beschreibung |
|---|---|---|
| Ausstehend | Orange | Bestellung eingegangen, noch nicht bestätigt |
| Bestätigt | Grün | Bestellung bestätigt – Bestand wird reduziert, Export-Queue wird aktiv |
| In Bearbeitung | Blau | Bestellung wird kommissioniert/produziert |
| Versendet | Lila | Bestellung ist auf dem Versandweg |
| Geliefert | Grün (dunkel) | Bestellung wurde zugestellt |
| Storniert | Rot | Bestellung wurde storniert – Bestand wird wiederhergestellt |
| Abgelehnt | Rot (dunkel) | Server hat die Bestellung abgelehnt (z. B. Preismanipulation) |
Automatische Aktionen bei Statuswechsel¶
| Statuswechsel | Automatische Aktion |
|---|---|
| → Bestätigt | Lagerbestand wird um Bestellmenge reduziert; Bestellhistorie-Eintrag wird erstellt; Bestellung wird in die Export-Queue eingereiht |
| → Storniert (wenn vorher bestätigt) | Lagerbestand wird wiederhergestellt; Export-Queue-Eintrag wird entfernt; Bestandshistorie wird aktualisiert |
| → Storniert (wenn ausstehend) | Keine Auswirkung auf den Bestand |
Bestelldetailseite¶
Die Detailseite einer Bestellung ist in 8 klar getrennte Bereiche unterteilt:
1. Export-Sync-Banner¶
Wenn ein Connector für den Bestell-Export konfiguriert ist, wird oben ein Sync-Status-Banner angezeigt: - Zeigt den aktuellen Synchronisierungsstatus mit dem externen System - Farbkodiert je nach Status (Grün = Synchronisiert, Orange = Ausstehend, Rot = Fehlgeschlagen) - Letzte Sync-Zeitstempel wird angezeigt - Bei Fehlern: Fehlermeldung und „Erneut versuchen"-Option
2. Kopfbereich¶
| Element | Beschreibung |
|---|---|
| Bestellnummer | Groß und fett mit „#"-Prefix (z. B. „#12345") |
| Status-Badge | Farbiger Punkt + lokalisierter Statustext |
| Berechnetes Lieferdatum | Automatisch berechnet aus Bestelldatum + Liefertage-Konfiguration |
| Tatsächliches Lieferdatum | Manuell gesetzt, wenn die Bestellung als „Versendet" markiert wird |
| Bestelldatum | Vollständige Datums- und Zeitangabe |
| Kundeninformation | Kundenname und -nummer (klickbar → navigiert zum Kunden) |
3. Bestelldetails¶
| Feld | Beschreibung |
|---|---|
| Bestell-ID | Interne Firestore-Dokument-ID |
| Rabatt | Rabattanteil in % und absoluter Betrag |
| Versandkosten | Falls konfiguriert |
| Bestellnotizen | Freitext-Kommentar des Kunden (großes Textfeld) |
4. Positionsliste¶
Tabelle aller Bestellpositionen mit folgenden Spalten:
| Spalte | Beschreibung |
|---|---|
| Artikelnummer | SKU/Variantennummer |
| Artikelname | Bezeichnung inkl. Varianteninformation (z. B. „Shirt – Rot, Größe L") |
| Einzelpreis | Preis pro Einheit in Währung |
| Menge | Bestellmenge mit Einheit (z. B. „5 Stück", „2,5 kg") |
| Positionssumme | Einzelpreis × Menge |
5. Lieferadresse¶
| Feld | Beschreibung |
|---|---|
| Ansprechpartner | Name der Kontaktperson |
| Telefon | Telefonnummer für Rückfragen |
| Straße + Hausnummer | Vollständige Straßenadresse |
| PLZ / Ort | Postleitzahl und Stadt |
| Land | Lieferland |
| Lieferhinweise | Zusätzliche Anweisungen (z. B. „Hintereingang benutzen") |
6. Bestellsumme¶
| Position | Beschreibung |
|---|---|
| Zwischensumme | Summe aller Positionsbeträge |
| Rabatt | Abzug (falls Rabatt konfiguriert) |
| Versandkosten | Aufschlag (falls konfiguriert) |
| Steuer | Berechneter Steuerbetrag |
| Gesamtbetrag | Fett hervorgehoben – Endsumme inkl. aller Zu- und Abzüge |
7. Bestellzeitlinie¶
Chronologische Darstellung aller Statusänderungen der Bestellung: - Zeitstempel pro Änderung - Alter und neuer Status - Benutzer, der die Änderung durchgeführt hat (oder „System" bei automatischen Änderungen)
8. Aktions-Buttons¶
| Aktion | Beschreibung |
|---|---|
| 📄 PDF-Export | Generiert ein druckbares Bestelldokument |
| 📋 Duplizieren | Erstellt eine Kopie der Bestellung als neue Bestellung |
| ✏️ Bearbeiten | Öffnet den Bestellungs-Editor-Dialog |
| 🗑️ Löschen | Bestellung löschen (Bestätigungsdialog erforderlich) |
| 📦 Status ändern | Dropdown zum Wechsel des Bestellstatus (gemäß erlaubtem Workflow) |
| 🚚 Als versendet markieren | Setzt Status auf „Versendet" + setzt das tatsächliche Lieferdatum |
Export-Synchronisierung¶
Wenn ein Connector für den Bestell-Export konfiguriert ist, durchläuft jede bestätigte Bestellung folgenden Prozess:
| Sync-Status | Beschreibung |
|---|---|
| Wartezeit | Storno-Frist läuft (Standard: 15 Min.) |
| Ausstehend | In der Export-Queue, bereit zum Senden |
| Synchronisiert | Erfolgreich exportiert, gesperrt |
| Fehlgeschlagen | Export fehlgeschlagen, Wiederholung geplant |
| Dead Letter | Alle Wiederholungsversuche erschöpft, manuelle Intervention nötig |
| Vor Export storniert | Storniert bevor der Export abgeschlossen wurde |
Server-seitige Preisvalidierung¶
Zur Sicherheit werden alle Preise beim Erstellen einer Bestellung serverseitig neu berechnet. Das System verhindert Preismanipulationen vom Client. Sollte eine Abweichung erkannt werden, wird die Bestellung mit Status „Abgelehnt" verworfen.
7. Registrierung & Benutzerverwaltung¶
Das Registrierungssystem ermöglicht es Kunden, sich für den Online-Shop anzumelden, wobei der Zugang erst nach Freigabe durch einen ERP-Administrator gewährt wird.
Registrierungsprozess¶
Schritt 1: Kundenregistrierung (Shop-App)¶
- Neuer Benutzer füllt das Registrierungsformular aus:
- Kundennummer (Pflichtfeld – wird gegen die Kundenstammdaten validiert)
- Vorname
- Nachname
- Sprache
-
E-Mail (aus Firebase-Authentifizierung)
-
Das System erstellt einen Benutzerantrag mit Status „Ausstehend"
- Der Benutzer sieht eine Warteseite mit pulsierender Animation
Schritt 2: Freigabe im ERP¶
Auf der Registrierungsseite sehen Administratoren alle ausstehenden Benutzeranträge:
| Aktion | Beschreibung |
|---|---|
| ✅ Genehmigen | Benutzer erhält Zugang zum Kunden-Bereich des Shops |
| ❌ Ablehnen | Zugang wird verweigert |
| ✏️ Bearbeiten | Name, Sprache oder Benutzertyp ändern |
| 🗑️ Löschen | Antrag vollständig entfernen |
| 📧 Einladung erneut senden | Benachrichtigungs-E-Mail erneut versenden |
Schritt 3: Automatische Rechte-Synchronisierung¶
Nach der Genehmigung werden automatisch die JWT-Claims (Zugriffsrechte) des Benutzers aktualisiert:
- customerIds: Zugeordnete Kunden-IDs
- adminCustomerIds: Kunden, für die der Benutzer Administratorrechte hat
Benutzertypen¶
| Typ | Rechte |
|---|---|
| Benutzer | Kann Bestellungen aufgeben und den eigenen Kunden-Bereich einsehen |
| Administrator | Wie Benutzer, kann zusätzlich Benutzer verwalten und Einstellungen ändern |
Hinweis: Der erste Benutzer, der sich für einen Kunden registriert, wird automatisch zum Administrator dieses Kunden.
AGB-Zustimmung¶
- Das System verfolgt die AGB-Zustimmung pro Benutzer und Version
- Bei einer neuen AGB-Version müssen Benutzer erneut zustimmen
- Im ERP ist ersichtlich, welcher Benutzer welche Version akzeptiert hat
Statusübersicht¶
| Status | Badge | Beschreibung |
|---|---|---|
| Ausstehend | 🟠 Orange | Wartet auf Genehmigung |
| Genehmigt | 🟢 Grün | Zugang gewährt |
| Abgelehnt | 🔴 Rot | Zugang verweigert |
8. Kundenlisten¶
Kundenlisten ermöglichen die Segmentierung von Kunden in benutzerdefinierte Gruppen. Die Kundenlisten-Seite verwendet ein Zwei-Panel-Layout.
Layout¶
Linkes Panel: Navigationsleiste¶
- Suchfeld: Filtert Listen nach Name (Echtzeit-Suche)
- „Neu erstellen"-Button: Öffnet den Erstellen-Dialog
- Vertikale Liste aller Kundenlisten:
- Listenname (fett)
- Artikel-Zähler-Badge (Anzahl der Kunden in der Liste)
- Auswahl-Hervorhebung: Die aktuell ausgewählte Liste wird farblich markiert
- Klick auf eine Liste aktualisiert das rechte Panel
Rechtes Panel: Detailansicht¶
Zeigt den Inhalt der aktuell ausgewählten Kundenliste.
Kopfbereich¶
- Listentitel (groß)
- Bearbeiten-Button (Stift-Icon): Öffnet Dialog zur Bearbeitung von Name und Beschreibung
- Löschen-Button (Papierkorb-Icon): Entfernt die gesamte Liste (Bestätigungsdialog)
Such- und Filterleiste¶
- Suchfeld: „Einträge durchsuchen..." – sucht nach Kundenname, Kundennummer oder Kommentar
- Debounced: 300ms Verzögerung, um die Anzahl der Suchanfragen zu begrenzen
Einträge der Liste¶
Für jeden Kunden in der Liste werden folgende Informationen angezeigt:
| Element | Beschreibung |
|---|---|
| Kundennummer + Name | Klickbar – navigiert zur Kundendetailseite |
| Status-Indikator | Checkbox-Status (erledigt/ausstehend) |
| Kommentarfeld | Freitextfeld, inline editierbar mit Auto-Speicherung |
| Aktions-Buttons | Bearbeiten, Entfernen, Zum Kunden navigieren |
Felder pro Listeneintrag¶
| Feld | Beschreibung |
|---|---|
| Kunden-ID | Referenz auf den Kunden |
| Kundenname | Anzeigename |
| Kundennummer | Referenznummer |
| Kommentar | Benutzernotiz (im ERP inline editierbar) |
| Erledigt | Boolean-Checkbox-Status |
| Status | Position-Status innerhalb der Liste |
Aktionen¶
| Aktion | Beschreibung |
|---|---|
| Liste erstellen | „+"-Button im linken Panel → Modal-Dialog (Name, Beschreibung) |
| Liste bearbeiten | Stift-Icon im rechten Panel → Modal-Dialog |
| Liste löschen | Papierkorb-Icon → Bestätigungsdialog erforderlich |
| Kunden hinzufügen | Kundenpicker-Dialog zur Auswahl einzelner oder mehrerer Kunden |
| Kommentar aktualisieren | Inline-Bearbeitung – wird automatisch gespeichert |
| Eintrag entfernen | Papierkorb-Icon pro Eintrag |
| Zum Kunden navigieren | Klick auf Kundenname öffnet die Kundendetailseite |
| Als erledigt markieren | Checkbox-Toggle pro Eintrag |
Leere Zustände¶
| Zustand | Anzeige |
|---|---|
| Keine Listen vorhanden | „Erstellen Sie Ihre erste Kundenliste" + Erstellen-Button |
| Liste ist leer | „Noch keine Einträge in dieser Liste" + Kunden hinzufügen-Button |
| Keine Suchergebnisse | „Keine Einträge gefunden" |
Synchronisierung¶
- Kundenänderungen werden automatisch in zugehörige Listen übernommen (Trigger:
onCustomerUpdatedSyncToLists) - Wird ein Kunde gelöscht, werden alle Listeneinträge automatisch bereinigt (Trigger:
onCustomerDeleted)
9. Benachrichtigungen¶
Das Benachrichtigungssystem ermöglicht es, Push-Notifications und In-App-Nachrichten an Kundengruppen zu senden.
Benachrichtigungsübersicht¶
Die Übersicht zeigt alle erstellten Benachrichtigungen als Kartenliste.
Darstellung pro Benachrichtigungskarte¶
Jede Karte enthält folgende Elemente:
Kopfbereich: - Icon: Kanalspezifisches Symbol (Glocke für Push, Sprechblase für In-App) - Titel: Benachrichtigungstitel (Pflichtfeld) - Zeitstempel-Badge: Erstellungsdatum
Vorschaubereich: - Nachrichtenvorschau: Erste 100 Zeichen des Nachrichtentexts (mit Auslassungspunkten) - Kanal-Badges: Unterhalb der Nachricht werden aktive Kanäle als farbige Chips angezeigt: - „Push" – wenn Push-Kanal aktiviert - „In-App" – wenn In-App-Kanal aktiviert - „Kein Kanal konfiguriert" – wenn beide deaktiviert sind
Info-Chips: - Sendestatus: „Geplant", „Gesendet" oder „Entwurf" - Status: Aktueller Verarbeitungsstatus - Datums-Badge: Erstellungsdatum
Status-Lebenszyklus¶
| Status | Beschreibung | Verfügbare Aktionen |
|---|---|---|
| Entwurf | Nicht gesendet, editierbar | Bearbeiten, Planen, Senden, Löschen |
| Geplant | Für zukünftigen Zeitpunkt eingeplant | Abbrechen, Löschen |
| Wird gesendet | Zustellung läuft | Nur Ansehen (schreibgeschützt) |
| Gesendet | Erfolgreich versendet | Löschen |
| Fehlgeschlagen | Zustellung fehlgeschlagen | Erneut versuchen, Löschen |
| Abgebrochen | Vom Benutzer abgebrochen | Erneut senden, Löschen |
Aktionen pro Karte¶
| Aktion | Symbol | Bedingung | Beschreibung |
|---|---|---|---|
| Abbrechen | 🟠 (Orange) | Nur bei Status „Geplant" | Zeigt den geplanten Sendezeitpunkt an, Bestätigung erforderlich |
| Löschen | 🔴 (Rot) | Immer verfügbar | Unterschiedliche Bestätigungsmeldung je nach Status (geplant vs. gesendet). Bestätigungsdialog erforderlich. |
Suche & Filter¶
- Textsuche: Nach Titel oder Nachrichteninhalt suchen
- Kanalfilter: Push, In-App oder beide
- Statusfilter: Entwurf, Geplant, Gesendet
- Sortierung: Nach Datum (neueste zuerst)
Leerer Zustand¶
- Icon + Hinweismeldung
- „Erste Benachrichtigung erstellen"-Button als Handlungsaufforderung
Benachrichtigung erstellen (4-Tab-Editor)¶
Tab 1: Kundenauswahl¶
Flexible Empfängerauswahl über Filterregeln:
| Filter | Beschreibung |
|---|---|
| Kundenkategorien | Alle Kunden einer oder mehrerer Kategorien (AND/OR-Verknüpfung) |
| Artikelkategorien | Kunden, die Artikel bestimmter Kategorien bestellt haben |
| Benachrichtigungsgruppen | Vordefinierte Empfängergruppen |
| Zielgruppenmodus | Einschließen oder Ausschließen |
| Manuelle Auswahl | Einzelne Kunden hinzufügen/entfernen |
- Vorschau: Zeigt die Gesamtzahl der Empfänger an, bevor gesendet wird
- Gespeicherte Filter: Häufig verwendete Filtersets speichern und wiederverwenden
- Excel-Export: Empfängerliste als Excel exportieren
Tab 2: Sendeoptionen¶
| Option | Beschreibung |
|---|---|
| Sofort senden | Benachrichtigung wird unmittelbar versendet |
| Planen | Datum und Uhrzeit für den Versand festlegen |
| Wiederkehrend | Regelmäßiger Versand (z. B. wöchentlich) |
Tab 3: Push-Nachricht¶
- Titel: Mehrsprachig (je nach konfigurierten Sprachen)
- Nachrichtentext: Mehrsprachig
- KI-Übersetzung: Optionale automatische Übersetzung über KI
- Zeichenzähler: Anzeige der aktuellen Textlänge
Tab 4: In-App-Nachricht¶
- Rich-Text-Editor: Formatierungsmöglichkeiten über Quill-Editor
- Mehrsprachig: Separate Inhalte pro Sprache
- Bilder & Dokumente: Anhänge mit Ordnerstruktur hochladen
- Anzeigemodus: Popup, Banner oder andere Darstellungsform
Zustellstatus¶
| Status | Beschreibung |
|---|---|
| Zugestellt | Erfolgreich an das Gerät übermittelt |
| Ausstehend | Wird noch verarbeitet |
| Fehlgeschlagen | Zustellung fehlgeschlagen |
| Gelesen | Vom Empfänger geöffnet |
SAM KI (Chatbot-Integration)¶
Das System beinhaltet einen KI-Chatbot-Assistenten namens „SAM KI", der bei der täglichen Arbeit im ERP unterstützt.
Aufruf¶
SAM KI kann auf zwei Wegen gestartet werden: 1. Navigationsleiste: Klick auf den „SAM KI"-Button in der seitlichen Navigation 2. Overlay-Icon: Ein verschiebbares (drag-and-drop) Overlay-Symbol, das dauerhaft auf dem Bildschirm sichtbar ist
Funktionsweise (NLP-Matching)¶
SAM KI verwendet ein Knowledge-Graph-basiertes System mit folgenden Verarbeitungsschritten:
- Synonymersetzung: Ähnliche Formulierungen werden auf kanonische Begriffe reduziert (z. B. „zeig mir" → „wo finde ich")
- Höflichkeitsbereinigung: Höflichkeitsphrasen wie „bitte", „könntest du" werden entfernt
- Fragenkonvertierung: Indirekte Formulierungen werden in direkte Fragen umgewandelt (z. B. „ich möchte wissen wie" → „wie")
- Fuzzy-String-Matching: Abgleich mit gespeicherten Fragen bei einer Ähnlichkeitsschwelle von 75%
- Mehrdeutigkeitsauflösung: Bei Überlappungen werden mehrere Antworten kombiniert
Entitäten (Wissensbereiche)¶
| Entität | Themenbereich |
|---|---|
| customer | Kundenverwaltung – Erstellen, Bearbeiten, Löschen, Import |
| article | Artikelverwaltung – Kategorien, Varianten, Preise |
| order | Bestellverwaltung – Erstellung, Statusverfolgung, Export |
| category | Kategorien – Artikel- und Kundenkategorien |
| stock | Lagerverwaltung – Bestand, Nachbestellung, Warnsystem |
| user | Benutzerverwaltung – Registrierung, Rechte, Genehmigung |
Beispiel-Fragen¶
- „Wie erstelle ich einen neuen Kunden?" → Mehrstufige Anleitung
- „Wie erstelle ich einen Artikel?" → Mehrstufige Anleitung
- „Wie funktioniert die Bestellverwaltung?" → Workflow-Erklärung
- „Wie richte ich die Lagerverwaltung ein?" → Konfigurationsanleitung
- „Wie lade ich Daten per Excel hoch?" → Import-Anleitung
Besondere Funktionen¶
- Schnellvorschläge: Nach der Begrüßung werden vordefinierte, klickbare Vorschläge angezeigt
- Kontext-Awareness: SAM verfolgt den Gesprächsverlauf und bietet kontextbezogene Nachfragen
- „Mehr erfahren"-Button: Vertiefende Informationen zu jedem Thema
- Tipp-Animation: Bot-Antworten werden mit einer Tipp-Animation angezeigt
- Sprachbewusste Begrüßung: Begrüßung auf Deutsch oder Englisch je nach Systemsprache
- Easter Egg: Eingabe von „do a barrel roll!" löst eine Bildschirm-Animation aus 🎉
10. Lagerverwaltung¶
Die Lagerverwaltung ermöglicht die Echtzeitverfolgung von Beständen pro Artikelvariante.
Voraussetzungen¶
Die Lagerverwaltung muss auf zwei Ebenen aktiviert sein:
- Systemweit: In den Lagerverwaltungseinstellungen (
Einstellungen > Lagerverwaltung) - Pro Artikel: Im Artikel-Stammdaten-Tab (Feld „Lagerverfolgung" aktivieren)
Bestandsübersicht¶
Die Lager-Übersichtsseite (erreichbar über die Navigation) zeigt alle Artikel mit aktiver Lagerverfolgung:
- Suche: Nach Artikelname oder -nummer
- Filterung nach Status:
- ⚠️ Warnung: Bestand ≤ Schwellwert des Meldebestands
- 📉 Unter Soll: Bestand unter dem Soll-Bestand
- ❌ Nicht vorrätig: Bestand = 0
- Badge-Zähler: In der Navigation zeigt ein Badge die Anzahl kritischer Bestände an
Bestandsfelder pro Variante¶
| Feld | Beschreibung |
|---|---|
| Bestand | Aktueller Lagerbestand (wird nie negativ) |
| Meldebestand | Bei Unterschreitung wird eine Warnung ausgelöst |
| Soll-Bestand | Gewünschter Bestandslevel für Nachbestellungen |
| Anzeigelimit | Maximale im Shop angezeigte Menge (für künstliche Knappheit) |
| Knappheit bis | Ablaufdatum der Knappheitsanzeige |
Bestandsanpassung¶
Bestandsänderungen erfolgen über einen Dialog:
- Variante auswählen
- Neuen absoluten Bestandswert eingeben
- Grund für die Änderung angeben
| Grund | Beschreibung |
|---|---|
| Bestellung aufgegeben | Automatisch bei Auftragsbestätigung |
| Bestellung storniert | Automatisch bei Stornierung |
| Manuelle Anpassung | Handkorrektur durch Administrator |
| Inventur | Physische Bestandsaufnahme |
| Import | Über Datenimport oder Connector |
| Sonstiges | Freie Texteingabe |
Alle Änderungen werden transaktionssicher durchgeführt – gleichzeitige Änderungen durch mehrere Benutzer sind vor Race-Conditions geschützt.
Bestandshistorie¶
Jede Bestandsänderung wird protokolliert:
- Delta: Signed-Änderung (negativ = Abgang, positiv = Zugang)
- Bestand danach: Bestandsniveau nach der Änderung
- Grund: Kategorie der Änderung
- Referenz: Verknüpfte Bestellung (falls vorhanden)
- Zeitstempel: Wann die Änderung erfolgte
- Geändert von: Benutzer oder System-Funktion
Hinweis: Bestandshistorie-Einträge werden nach 14 Monaten automatisch gelöscht (TTL-basiert).
Künstliche Knappheit¶
Für Marketingzwecke kann die Bestandsanzeige im Shop begrenzt werden:
- Anzeigelimit setzen (z. B. 10): Im Shop wird „Nur noch 10 verfügbar!" angezeigt, auch wenn tatsächlich 50 Stück vorhanden sind
- Knappheit bis setzen: Nach dem Ablaufdatum zeigt der Shop wieder den echten Bestand
Nachbestellungs-Modus (Backorder)¶
Wenn aktiviert:
- Kunden können bestellen, auch wenn der Bestand = 0 ist
- Im Shop wird ein konfigurierbarer Hinweis angezeigt (z. B. „Artikel wird nachbestellt")
- Bestandsanzeige im Shop: min(Anzeigelimit, Bestand) oder der tatsächliche Bestand
Warnsystem¶
| Warnung | Auslöser |
|---|---|
| Kritischer Bestand | Bestand ≤ Meldebestand |
| Prozent-Schwelle | Bestand ≤ X% des Meldebestands (Standard: 80%) |
| Nicht vorrätig | Bestand = 0 |
Warnungen werden als Badge in der Navigation und als visuelle Markierung in der Bestandsübersicht angezeigt.
11. Einstellungen¶
Die Einstellungen sind in über 20 Unterbereiche gegliedert und steuern sämtliche Aspekte des Systems.
11.1 Allgemeine Einstellungen¶
Systemweite Grundkonfiguration des ERP-Systems. Hier werden globale Parameter festgelegt, die das Gesamtverhalten der Anwendung beeinflussen.
Validierungsregel: Kundennummer¶
Eine Regelkarte zur Definition des erlaubten Formats für Kundennummern:
| Feld | Beschreibung |
|---|---|
| Aktiv | Toggle zum Aktivieren/Deaktivieren der Validierung |
| Muster (Regex) | Regulärer Ausdruck zur Formatprüfung |
| Prefix | Pflicht-Prefix (z. B. „CUST") |
| Min. Länge | Mindestlänge der Kundennummer |
| Max. Länge | Maximale Länge der Kundennummer |
| Benutzerdefiniert erlauben | Ob beim Bearbeiten eine Abweichung vom Muster erlaubt ist |
Beispiel-Muster:
- ^[A-Z]{2,3}\d{2,5}$ – 2-3 Großbuchstaben gefolgt von 2-5 Ziffern (z. B. „AB12345")
- ^[A-Z0-9\-]{3,20}$ – Alphanumerisch + Bindestrich, 3-20 Zeichen
Validierungsregel: Artikelnummer¶
Identisch aufgebaut wie die Kundennummer-Validierung, aber für Artikelnummern:
Beispiel-Muster:
- ^\d{4,8}$ – 4-8 Ziffern (z. B. „123456")
- ^[A-Z]{2}\d{4}$ – 2 Buchstaben + 4 Ziffern (z. B. „AB1234")
Regel-Editor-Dialog¶
Beim Bearbeiten einer Validierungsregel öffnet sich ein Dialog mit: - Aktuelles Muster im Regex-Format angezeigt - Live-Validierungsvorschau: „Gültig" / „Ungültig"-Indikator in Echtzeit - Beispiel-Eingabefeld: Testfeld, um Nummern gegen das Muster zu prüfen - Auto-Synchronisierung: Bei Speicherung wird der Counter-Prefix automatisch aktualisiert - Toast-Benachrichtigung: Erfolgs- oder Fehlermeldung nach dem Speichern
11.2 Benutzerverwaltung¶
Verwaltung der ERP-Benutzer (Administratoren und Superadmins):
| Benutzertyp | Beschreibung |
|---|---|
| Administrator | Vollzugriff auf alle ERP-Funktionen |
| Superadmin | Erweiterte Rechte inkl. Systemkonfiguration |
11.3 Artikelkategorien¶
Verwaltung der Artikelkategorien zur Sortimentsstrukturierung:
- Erstellen: Name (mehrsprachig), Farbe (Hex-Code), Icon
- Bearbeiten: Alle Felder sind editierbar
- Sortieren: Reihenfolge der Kategorien per Drag & Drop
- Löschen: Nur wenn keine Artikel mehr zugeordnet sind
- Verwendung: Filter in der Artikelübersicht, Artikelzuweisung, Benachrichtigungsfilter
11.4 Artikeldokumenttypen¶
Definition von Dokumenttypen, die Artikeln zugeordnet werden können:
- z. B. „Datenblatt", „Bedienungsanleitung", „Sicherheitshinweise"
- Name und Beschreibung pro Typ
- Wird beim Artikel-Upload als Kategorisierung verwendet
11.5 Kundenkategorien¶
Analog zu Artikelkategorien, aber für Kunden:
- Erstellen: Name (mehrsprachig), Farbe (Hex-Code), Icon
- Bearbeiten: Alle Felder editierbar
- Verwendung: Kundenfilter, Artikelzuweisung, Benachrichtigungs-Empfängergruppen
11.6 Kundenlisten-Einstellungen¶
Detaillierte Konfiguration der Kundenlisten (Besuchslisten, Aufgabenlisten):
Allgemeine Listeneinstellungen¶
| Feld | Beschreibung |
|---|---|
| Listenname | Name der Kundenliste (Pflichtfeld) |
| Beschreibung | Optionale Beschreibung des Listenzwecks |
| Befüllungsmodus | Wie Kunden in die Liste aufgenommen werden: Manuell, Automatisch (nach Kategorie) oder Gemischt |
| Aktualisierungsmodus | Ob und wie die Liste periodisch aktualisiert wird |
Aktionselemente¶
Pro Kundenliste können benutzerdefinierte Aktionen definiert werden, die bei jedem Listeneintrag verfügbar sind:
| Feld | Beschreibung |
|---|---|
| Aktionsname | z. B. „Rückruf", „Besuch geplant", „Angebot gesendet" |
| Icon | Visuelles Symbol für die Aktion |
| Farbe | Farbkodierung der Aktion |
Statuselemente¶
Benutzerdefinierte Status-Stufen pro Listeneintrag:
| Feld | Beschreibung |
|---|---|
| Statusname | z. B. „Offen", „In Bearbeitung", „Erledigt", „Zurückgestellt" |
| Farbe | Farbkodierung des Status |
| Reihenfolge | Sortierung der Statuswerte (Drag & Drop) |
Erstellen und Bearbeiten¶
Der Kundenlisten-Editor ist als mehrteilige Seite aufgebaut: 1. Allgemein: Name, Beschreibung und Befüllungsmodus 2. Aktionen: Definieren und Sortieren der verfügbaren Aktionen 3. Status: Definieren und Sortieren der Status-Elemente
11.7 Bestelleinstellungen¶
Konfiguration des Bestellverhaltens:
| Einstellung | Beschreibung |
|---|---|
| Standard-Bestellstatus | Initialstatus neuer Bestellungen |
| Storno-Frist | Zeitraum, in dem eine Bestellung storniert werden kann (in Minuten) |
| Mindestbestellwert | Globaler Mindestbestellwert |
| Mindestbestellmenge | Globale Mindestbestellmenge |
| Nummerierung | Auto-Inkrement oder manuell |
| Status-Workflow | Welche Statusübergänge erlaubt sind |
Bestell-Push-Benachrichtigungsvorlage¶
Innerhalb der Bestelleinstellungen kann eine Push-Benachrichtigungsvorlage konfiguriert werden, die automatisch bei Statusänderungen an den Kunden gesendet wird:
| Feld | Beschreibung |
|---|---|
| Aktiviert | Ob automatische Benachrichtigungen bei Statuswechsel gesendet werden |
| Titel | Mehrsprachiger Titel der Benachrichtigung (mit Platzhaltern wie {orderNumber}) |
| Nachricht | Mehrsprachiger Nachrichtentext (mit Platzhaltern wie {status}, {customerName}) |
| KI-Übersetzung | Automatische Übersetzung in alle aktiven Sprachen (falls aktiviert) |
11.8 Bestell-Export-Einstellungen¶
Konfiguration des Exports von Bestellungen:
| Einstellung | Beschreibung |
|---|---|
| Export aktiviert | Ob der automatische Bestell-Export aktiv ist |
| Export-Connector | Auswahl des Connectors, über den Bestellungen exportiert werden |
| PDF-Vorlage | Layout und Inhalt des PDF-Exports |
| Excel-Vorlage | Spaltenauswahl und Format |
| Massenexport | Konfiguration für den Batch-Export mehrerer Bestellungen |
11.9 Lagerverwaltungseinstellungen¶
Globale Lagerkonfiguration:
| Einstellung | Beschreibung |
|---|---|
| Aktiviert/Deaktiviert | Lagerverwaltung ein- oder ausschalten |
| Nachbestellung erlauben | Kunden können bestellen, auch wenn Bestand = 0 |
| Nachbestellungshinweis | Mehrsprachiger Hinweistext (DE, EN usw.) |
| Künstliche Knappheit | Ermöglicht Anzeige-Limits im Shop |
| Bestandswarnung | Warnung bei Unterschreitung des Meldebestands |
| Warnschwelle (%) | Prozentsatz des Meldebestands, ab dem gewarnt wird (Standard: 80%) |
11.10 Liefertagseinstellungen¶
Konfiguration der Liefertage und -ausnahmen:
Reguläre Liefertage¶
- Auswahl der Wochentage (Mo–So), an denen geliefert wird
- Standard: Montag bis Freitag
Feiertage¶
- Individuelle Daten hinzufügen, an denen nicht geliefert wird
- Lokalisierte Datumsanzeige
Betriebsferien¶
- Zeiträume definieren (Von–Bis-Datum)
- Optionale Beschreibung (z. B. „Weihnachtsferien")
Ausnahmetage¶
- Einzelne Tage als Nicht-Liefertage markieren
- Optionale Beschreibung
Die Liefertage fließen in die automatische Berechnung des „Berechneten Lieferdatums" bei Bestellungen ein.
11.11 Connector-Einstellungen¶
Konfiguration von Schnittstellen zu externen Systemen (siehe Kapitel 14: Connectoren).
11.12 Ländereinstellungen¶
- Definition der unterstützten Länder
- Länderspezifische Konfigurationen (Sprache, Währung)
- Zuordnung zu Kunden und Artikeln
11.13 Spracheinstellungen¶
- Aktivierung/Deaktivierung von Sprachen (Deutsch, Englisch und 30+ weitere)
- Bestimmt, welche Sprachen in Beschreibungen, Benachrichtigungen und UI verfügbar sind
11.14 Job-Einstellungen¶
Verwaltung automatisierter Aufgaben (siehe Kapitel 12: Jobs).
11.15 Trigger-Einstellungen¶
Monitoring und Verwaltung automatischer Auslöser (siehe Kapitel 13: Trigger).
11.16 Push-Benachrichtigungseinstellungen¶
- Firebase Cloud Messaging (FCM) Konfiguration
- Standard-Benachrichtigungsvorlagen
- Benachrichtigungsgruppen definieren
11.17 Mobile-App-Theme¶
Anpassung des Erscheinungsbilds der Mobile-App:
| Kategorie | Einstellungen |
|---|---|
| Primärfarbe | Hauptfarbe der App |
| Hintergrundfarbe | Scaffold- und Inhalts-Hintergrund |
| Schriftfarbe | Standard-Textfarbe |
| Navigation | Hintergrund, ausgewählte/nicht ausgewählte Icon-Farben |
| Kategorieleiste | Ausgewählt/nicht ausgewählt Hintergrund und Schriftfarbe |
| Buttons | Hintergrund- und Schriftfarbe |
| Badges | Hintergrund- und Textfarbe |
| Artikelbilder | Hintergrundfarbe für Bildplatzhalter |
| App-Logo | Header-Logo und Login-Logo hochladen |
| Schriftart | Schriftfamilie auswählen (z. B. „Inter") |
Workflow: Änderungen werden als Entwurf gespeichert → Veröffentlichen übernimmt die Änderungen für alle App-Nutzer. „Zurücksetzen" stellt die Standardwerte wieder her.
11.18 Web-App-Theme¶
Anpassung des Erscheinungsbilds der Web-Shop-Oberfläche:
| Kategorie | Einstellungen |
|---|---|
| Primärfarbe | Hauptfarbe des Web-Shops |
| Badges | Hintergrund- und Textfarbe |
| Obere Leiste | Schriftfarbe, Navigationsfarben, aktive Indikatoren, Hover-Effekte |
| Kategorieleiste | Aktiv/inaktiv Hintergrund, Schrift, Hover |
| Inhaltsbereich | Hintergrundfarbe |
| Artikelbilder | Hintergrundfarbe |
| Buttons | Hintergrund- und Schriftfarbe |
| Logos | Login-Header, App-Header, Leerer-Warenkorb-Platzhalter |
| Schriftart | Schriftfamilie auswählen |
11.19 Rechtliche Informationen¶
Verwaltung der rechtlichen Seiten des Shops:
Impressum¶
- Mehrsprachiger Rich-Text-Editor (Quill)
- Vorschaufunktion
Allgemeine Geschäftsbedingungen (AGB)¶
- Mehrsprachiger Rich-Text-Editor
- Automatische Versionierung: Jede Änderung erhöht die Versionsnummer
- Benutzer werden bei neuer Version zur erneuten Zustimmung aufgefordert
- Vorschau mit Versionsanzeige
Datenschutzerklärung¶
- Mehrsprachiger Rich-Text-Editor
- Vorschaufunktion
Hinweis: Wenn kein Inhalt in der Sprache des Benutzers vorhanden ist, wird automatisch die deutsche Version angezeigt (Fallback).
11.20 Datenimport¶
Der Datenimport ermöglicht das Massenimportieren von Daten aus Excel-Dateien.
Import-Assistent (4 Schritte)¶
Schritt 1: Datei hochladen - Drag & Drop oder Dateiauswahl - Format: XLSX (Excel) - Automatische Erkennung des Datentyps - Download einer Vorlage möglich
Schritt 2: Feldzuordnung - Automatische Zuordnung von Spalten zu Systemfeldern (~80% Trefferquote) - Manuelle Nachkorrektur möglich - Automatische Auflösung von Fremdschlüsseln (z. B. Kategorie-Bezeichner → Kategorie-ID)
Schritt 3: Validierung & Vorschau - Überprüfung aller Daten gegen das Schema - Fehler- und Warnungsbericht mit Zeilennummern - Zusammenfassung: Gültige / Warnungen / Fehler
Schritt 4: Ausführung - Batch-Import für Stabilität - Fortschrittsanzeige - Ergebnisbericht (Erfolge / Fehler)
Importierbare Datentypen¶
| Typ | Wichtige Felder |
|---|---|
| Artikelkategorien | Bezeichner, Name (DE/EN), Farbe, Icon |
| Kundenkategorien | Bezeichner, Name (DE/EN), Farbe, Icon |
| Artikel | Nummer, Name, Beschreibung, Verfügbarkeit, Shop-Anzeige, Kategorien (Semikolon-getrennt), Bildbei-URLs, Banner-Daten |
| Kunden | Firmenname, Kundennummer, Kategorie, Sprache, Land, Adresse, Kontaktdaten, Mindestbestellmenge, Benachrichtigungsgruppen |
Import-Modi¶
| Modus | Beschreibung |
|---|---|
| Nur erstellen | Nur neue Datensätze werden importiert, bestehende bleiben unverändert |
| Aktualisieren & erstellen | Bestehende Datensätze werden aktualisiert, neue werden angelegt |
| Alles ersetzen | Alle vorhandenen Datensätze werden gelöscht und durch den Import ersetzt |
11.21 Datenexport¶
Export von Daten im XLSX- oder CSV-Format:
- Artikel: Alle Artikeldaten inkl. Varianten und Kategorien
- Artikelkategorien: Alle Kategorie-Metadaten
- Kunden: Alle Kundendaten inkl. zugeordneter Kategorien
- Kundenkategorien: Alle Kategorie-Metadaten
Funktionen:
- Spaltenauswahl vor dem Export
- Round-Trip-Kompatibilität: Exportierte Dateien können direkt wieder importiert werden
- Mehrsprachige Felder im Format de:Text;en:Text
11.22 Wartung¶
Systemwartung und -optimierung für die administrative Pflege des ERP-Systems. Die Wartungsseite ist ausschließlich für Super-Admins zugänglich – reguläre Administratoren sehen die Seite im Nur-Lese-Modus.
Wartungsaufgaben-Felder¶
Jede Wartungsaufgabe hat folgende Eigenschaften:
| Feld | Beschreibung |
|---|---|
| Titel | Name der Wartungsaufgabe (Pflichtfeld) |
| Beschreibung | Detailbeschreibung der Aufgabe |
| Kategorie | Einordnung in eine der 6 Kategorien (siehe unten) |
| Fälligkeitsdatum | Wann die Aufgabe erledigt/erneuert werden muss |
| Letztes Erneuerungsdatum | Wann die Aufgabe zuletzt durchgeführt wurde |
| Kritikalität | Dringlichkeitsstufe (siehe unten) |
| Zugewiesen an | Verantwortlicher Benutzer |
| Status | Ausstehend, In Bearbeitung, Abgeschlossen |
| Priorität | Niedrig, Mittel, Hoch, Kritisch |
Aufgaben-Kategorien¶
Aufgaben werden nach Kategorie gruppiert und in aufklappbaren Sektionen angezeigt:
| Kategorie | Beschreibung | Beispiele |
|---|---|---|
| Zertifikate | SSL-Zertifikate, API-Schlüssel | SSL erneuern, FCM-Zertifikat prüfen |
| Schlüssel | Verschlüsselungsschlüssel, Tokens | API-Keys rotieren, OAuth-Secrets erneuern |
| Versionen | Software- und Bibliotheksversionen | Flutter-Version prüfen, Node.js-Update |
| Abhängigkeiten | Drittanbieter-Pakete | npm audit, pub outdated prüfen |
| Backups | Datenbank- und Datei-Backups | Firestore-Export, Storage-Backup |
| Patches | Sicherheits- und System-Patches | Sicherheitsupdate einspielen |
Kritikalitätsstufen¶
| Stufe | Farbe | Beschreibung |
|---|---|---|
| Niedrig | Grau | Kann warten, nur informativ |
| Mittel | Gelb | Sollte zeitnah erledigt werden |
| Hoch | Orange | Dringend, beeinträchtigt den Betrieb |
| Kritisch | Rot | Sofortige Maßnahme erforderlich |
Visuelle Indikatoren¶
- Aufgaben sind farbkodiert nach Kritikalität
- Überfällig (Fälligkeitsdatum überschritten) = Roter Hintergrund
- Bald fällig = Oranger Hintergrund
- Gruppenansicht nach Kategorie mit aufklappbaren Sektionen
Verfügbare Aktionen¶
| Aktion | Berechtigung | Beschreibung |
|---|---|---|
| Aufgabe hinzufügen | Super-Admin | Öffnet den Editor-Dialog für eine neue Aufgabe |
| Aufgabe bearbeiten | Super-Admin | Stift-Icon pro Aufgabe – Editor-Dialog öffnet sich |
| Als erneuert markieren | Super-Admin | Setzt das „Letztes Erneuerungsdatum" auf heute |
| Aufgabe löschen | Super-Admin | Entfernt die Aufgabe (Bestätigungsdialog) |
| Standardaufgaben laden | Super-Admin | Befüllt die Liste mit vordefinierten Template-Aufgaben |
12. Jobs (Automatisierte Aufgaben)¶
Jobs sind geplante, automatisch ausgeführte Aufgaben, die das System im Hintergrund erledigt.
Job-Verwaltung¶
Über Einstellungen > Job-Einstellungen können Jobs konfiguriert werden. Ein Assistent (Wizard) führt durch die Einrichtung.
Verfügbare System-Jobs¶
12.1 DSGVO: Inaktive Kunden löschen¶
- Kennung:
dsgvoDeleteCustomers - Zweck: Automatische Löschung von Kunden, die seit X Tagen keine Bestellung aufgegeben haben
- Parameter:
Tage ohne Bestellung(Standard: 365, Bereich: 1–3.650) - Verhalten: Prüft
letztes BestelldatumundErstelldatum– löscht bis zu 500 Datensätze pro Durchlauf
12.2 DSGVO: Inaktive Benutzer löschen¶
- Kennung:
dsgvoDeleteUsers - Zweck: Automatische Löschung von Benutzern, die sich seit X Tagen nicht angemeldet haben
- Parameter:
Tage ohne Login(Standard: 365, Bereich: 1–3.650)
12.3 DSGVO: Alte Bestellungen löschen¶
- Kennung:
dsgvoDeleteOrders - Zweck: Löschung von Bestellungen, die älter als X Tage sind
- Parameter:
Alter in Tagen(Standard: 1.095 = 3 Jahre, Bereich: 365–3.650)
12.4 DSGVO: Alte Benachrichtigungen löschen¶
- Kennung:
dsgvoDeleteNotifications - Zweck: Löschung von Push-Benachrichtigungen, die älter als X Tage sind
- Parameter:
Alter in Tagen(Standard: 90, Bereich: 1–365)
12.5 DSGVO: Ungenutzte Artikel löschen¶
- Kennung:
dsgvoDeleteArticles - Zweck: Löschung von Artikeln, die seit X Tagen nicht bestellt wurden
- Parameter:
Tage ohne Bestellung(Standard: 365)
12.6 Dokumenten-Gültigkeit prüfen¶
- Kennung:
documentValidityCheck - Zweck: Automatisches Aktivieren/Deaktivieren von Dokumenten basierend auf Gültigkeitsdatum
- Verhalten: Prüft
Gültig abundGültig bis– aktiviert oder deaktiviert Dokumente und Banner entsprechend
12.7 Job-Logs bereinigen¶
- Kennung:
cleanupJobLogs - Zweck: Aufbewahrung von Job-Ausführungsprotokollen für X Tage
- Parameter:
Aufbewahrungstage(Standard: 30)
12.8 Benutzerdefinierter Job¶
- Kennung:
custom - Zweck: Individuelle, kundenspezifische Automatisierung
- Handler: Wird als Cloud Function
job_<ID>.jsimplementiert - Parameter: Frei definierbares Schema
Hintergrund-System-Jobs (automatisch)¶
Neben den konfigurierbaren Jobs gibt es System-Jobs, die automatisch im Hintergrund laufen:
Bestellerinnerungen¶
- Kennung:
orderReminderNotifications - Zweck: Erinnert Kunden an bevorstehende Liefertage, für die noch keine Bestellung eingegangen ist
- Verhalten: Das System berechnet den nächsten Liefertag jedes Kunden und prüft, ob eine aktive Bestellung vorliegt
- Vorausschau-Logik: Wenn der Kunde bereits für den nächsten Liefertag bestellt hat, prüft das System zusätzlich, ob darauffolgende Liefertage ggf. übersprungen werden (z. B. durch Feiertage oder Lieferpausen). Falls ja, wird eine Warnung als Feed-Eintrag erstellt, damit der Kunde rechtzeitig vorbestellen kann.
- Erinnerungs-Typ:
order_reminderals Feed-Eintrag mit Push-Benachrichtigung - Timing: Parametrisiert über
leadDays(Vorlaufzeit in Tagen, Standard: 1)
Statistiken berechnen¶
- Kennung:
calculateStatistics - Zweck: Vorberechnung der Dashboard- und Kundenstatistiken
- Verhalten: Berechnet Umsatz, Top-Artikel, Top-Kunden und Top-Länder für alle Zeiträume
- Optimierung: Inkrementelle Berechnung – nur Kunden mit neuen Bestellungen werden neu berechnet
Benachrichtigungen erstellen¶
- Kennung:
createNotificationEntries - Zweck: Erstellt die einzelnen Feed- und Zustelleinträge für geplante Benachrichtigungen
- Verhalten: Löst geplante Benachrichtigungen zum konfigurierten Zeitpunkt aus und erstellt individuelle Einträge pro Empfänger
Push-Benachrichtigungen senden¶
- Kennung:
sendPushNotification - Zweck: Tatsächlicher Versand der Push-Benachrichtigungen über Firebase Cloud Messaging (FCM)
- Verhalten: Verarbeitet die Warteschlange der zu sendenden Nachrichten und aktualisiert den Zustellstatus
Bestell-Export-Wiederholung¶
- Kennung:
orderExportRetry - Zweck: Wiederholt fehlgeschlagene Bestell-Exports mit exponentiellem Backoff
- Verhalten: Prüft die Export-Queue auf fehlgeschlagene Einträge und versucht den Export erneut
Zeitplan-Konfiguration¶
Jeder Job kann mit einem der folgenden Zeitpläne versehen werden:
| Typ | Konfiguration | Beispiel |
|---|---|---|
| Minütlich | Intervall in Minuten | Alle 15 Minuten |
| Stündlich | Intervall ++ Minute der Stunde | Jede Stunde um :30 |
| Täglich | Zeitzone + Uhrzeit | Täglich um 02:00 (Europe/Berlin) |
| Wöchentlich | Zeitzone + Wochentage + Uhrzeit | Mo, Mi, Fr um 06:00 |
| Monatlich | Zeitzone + Tag des Monats + Uhrzeit | Am 1. jeden Monats um 00:00 |
| Benutzerdefiniert (Cron) | Cron-Ausdruck + Zeitzone | 0 2 * * * (täglich 02:00) |
Ausführungshistorie¶
Jeder Job-Lauf wird protokolliert:
| Feld | Beschreibung |
|---|---|
| Status | Erfolgreich, Laufend, Fehler |
| Dauer | Ausführungszeit |
| Bearbeitete Datensätze | Anzahl der betroffenen Einträge |
| Fehlermeldung | Details bei Fehlern |
| Zeitstempel | Ausführungszeitpunkt |
13. Trigger (Automatisierungen)¶
Trigger sind automatische Auslöser, die bei bestimmten Datenbankereignissen (Erstellen, Aktualisieren, Löschen) ausgeführt werden. Sie sind systemseitig definiert und können nicht vom Benutzer erstellt werden – lediglich die Ausführung wird überwacht.
Trigger-Überwachung¶
Über Einstellungen > Trigger-Einstellungen können alle Trigger eingesehen werden:
- Status anzeigen: Letzte Ausführung und Ergebnis
- Historie anzeigen: Klick auf „Historie anzeigen" zeigt die letzten Ausführungen
- Details prüfen: Ausführungszeit, Fehlermeldungen, Metadaten
Alle Trigger im Überblick (19 Trigger)¶
Kunden-Trigger¶
| Trigger | Ereignis | Beschreibung |
|---|---|---|
| onCustomerCreated | Erstellt | Automatische Zuweisung neuer Kunden zu Artikeln basierend auf Kategorie |
| onCustomerUpdated | Aktualisiert | Aktualisierung der Artikelzuweisungen bei Kundenänderungen |
| onCustomerUpdatedSyncToLists | Aktualisiert | Synchronisierung von Kundendaten in Besuchslisten |
| onCustomerDeleted | Gelöscht | Bereinigung aller verknüpften Daten (Benutzer, Listen, Benachrichtigungen) |
Artikel-Trigger¶
| Trigger | Ereignis | Beschreibung |
|---|---|---|
| onArticleCreated | Erstellt | Automatische Zuweisung neuer Artikel an relevante Kunden |
| onArticleUpdated | Aktualisiert | Aktualisierung der Kundenzuweisungen bei Artikeländerungen |
| onArticleDeleted | Gelöscht | Entfernung des Artikels aus allen Kundenzuweisungen |
| onOrderWrittenUpdateArticleDeletionFlags | Schreiben | Setzt canDelete-Flag basierend auf aktiven Bestellreferenzen |
Bestellungen-Trigger¶
| Trigger | Ereignis | Beschreibung |
|---|---|---|
| onOrderCreatedQueueExport | Erstellt | Reiht neue Bestellung in die Export-Queue ein (mit Storno-Wartefrist) |
| onOrderCancelledRemoveFromExportQueue | Schreiben | Entfernt stornierte Bestellungen aus der Export-Queue |
| onOrderWrittenReduceStock | Schreiben (→ Status 1) | Reduziert Lagerbestand bei Auftragsbestätigung |
| onOrderWrittenRestoreStock | Schreiben (→ Status 5) | Stellt Lagerbestand bei Stornierung wieder her |
Authentifizierung-Trigger¶
| Trigger | Ereignis | Beschreibung |
|---|---|---|
| onShopUserPermissionChanged | Schreiben | Aktualisiert JWT-Claims bei Berechtigungsänderungen |
| onErpUserDocumentCreated | Erstellt | Setzt appType-Claim für neue ERP-Benutzer |
Such-Index-Trigger (N-Gram)¶
| Trigger | Ereignis | Beschreibung |
|---|---|---|
| onArticleCreatedBuildNgrams | Erstellt | Baut Suchindex für neuen Artikel |
| onArticleUpdatedBuildNgrams | Aktualisiert | Aktualisiert Suchindex bei Artikeländerung |
| onCustomerCreatedBuildNgrams | Erstellt | Baut Suchindex für neuen Kunden |
| onCustomerUpdatedBuildNgrams | Aktualisiert | Aktualisiert Suchindex bei Kundenänderung |
| onOrderCreatedBuildNgrams | Erstellt | Baut Suchindex für neue Bestellung |
| onOrderUpdatedBuildNgrams | Aktualisiert | Aktualisiert Suchindex bei Bestellungsänderung |
Trigger-Protokolleintrag¶
Jede Ausführung wird mit folgenden Details protokolliert:
| Feld | Beschreibung |
|---|---|
| Trigger-ID | Interner Bezeichner |
| Ereignis | create, update, delete, write |
| Sammlung | Firestore-Collection (z. B. customers) |
| Dokument-ID | Betroffenes Dokument |
| Status | Erfolgreich oder Fehlgeschlagen |
| Dauer (ms) | Ausführungszeit in Millisekunden |
| Fehler | Fehlermeldung bei Misserfolg |
| Metadaten | Zusätzliche Details (z. B. Anzahl bereinigter Datensätze) |
14. Connectoren (Externe Systeme)¶
Connectoren ermöglichen die bidirektionale Integration mit externen Systemen für Datenimport und -export.
Verfügbare Connector-Typen¶
14.1 Microsoft Business Central¶
- Import: Kunden, Artikel, Bestellungen
- Export: Bestellungen
- Authentifizierung: OAuth2 (Azure Active Directory)
- Konfiguration:
- Tenant-ID (GUID)
- Application-ID (Client-ID)
- Application-Secret (Client-Secret)
- Zielumgebung (z. B. „Production")
- Unternehmens-ID (Company GUID)
14.2 Shopify¶
- Import: Produkte, Bestellungen
- Export: Bestellungen
- Authentifizierung: API-Schlüssel / Bearer Token
- Konfiguration:
- Shopify-Shop-Name (z. B. „meinshop.myshopify.com")
- API Access Token
14.3 WooCommerce¶
- Import: Produkte, Bestellungen
- Export: Bestellungen
- Authentifizierung: Basic Auth oder API-Schlüssel
- Konfiguration:
- WooCommerce Store-URL
- Consumer Key
- Consumer Secret
14.4 REST API (Generisch)¶
- Import: Benutzerdefiniert über Endpunkte
- Export: Benutzerdefiniert über Endpunkte
- Authentifizierung: OAuth2, API-Schlüssel, Bearer Token oder Basic Auth
- Konfiguration: Individuell definierte Endpunkte pro Ressource
14.5 FTP/Excel-Import¶
- Import: CSV/Excel-Dateien über FTP/SFTP
- Export: Nicht unterstützt
- Konfiguration:
- FTP/SFTP-Server (Host, Port)
- Benutzername und Passwort
- Remote-Pfad zu den Dateien
14.6 Datenbank¶
- Import: Direkte Datenbankabfragen
- Unterstützte Datenbanken: MySQL, PostgreSQL, MSSQL
- Konfiguration:
- Datenbank-Host und Port
- Benutzername und Passwort
- Datenbankname
- SQL-Abfrage
Connector-Konfiguration¶
Jeder Connector wird über einen Assistenten (Wizard) eingerichtet:
- Typ auswählen: Connector-Typ aus der Liste wählen
- Zugangsdaten: Authentifizierungsinformationen eingeben
- Import/Export konfigurieren: Aktivieren welche Daten importiert/exportiert werden
- Zeitplan festlegen: Synchronisierungsintervall einstellen
- Feldzuordnung: Mapping zwischen externem und EasySale-Datenmodell
Synchronisierungsmodi¶
| Modus | Beschreibung |
|---|---|
| Inkrementell | Nur geänderte Datensätze werden synchronisiert |
| Nur erstellen | Nur neue Datensätze importieren |
| Aktualisieren & erstellen | Bestehende aktualisieren, neue anlegen |
| Komplett ersetzen | Alle Daten löschen und neu importieren |
Bestell-Export-Ablauf¶
Wenn der Bestell-Export über einen Connector aktiviert ist:
- Bestellung erstellt → Trigger
onOrderCreatedQueueExportwird ausgelöst - Export-Queue → Bestellung wird mit Zeitstempel in die Queue eingereiht
- Storno-Wartezeit → System wartet die konfigurierte Storno-Frist ab (Standard: 15 Min.)
- Fälligkeitsprüfung → Wenn das Lieferdatum näher ist, wird früher exportiert
- Cloud Task → Geplanter Task wird zum Ausführungszeitpunkt gestartet
- Export → Connector-spezifische Export-Funktion überträgt die Bestellung
- Sync-Status → Bestellstatus wird aktualisiert (inkl. externe ID und Fehlerinformationen)
Bei Fehlern wird automatisch mit exponentiellem Backoff wiederholt. Nach Erschöpfung aller Versuche wird die Bestellung in den „Dead Letter"-Status versetzt.
15. Tutorial-System¶
Das ERP-System beinhaltet ein interaktives Tutorial, das neue Benutzer Schritt für Schritt durch alle Funktionen führt.
Funktionsweise¶
- Automatischer Start: Das Tutorial startet automatisch beim ersten Login
- Lottie-Animationen: Ein animierter Helfer begleitet durch die Schritte
- Interaktiv: Manche Schritte warten auf eine Benutzerinteraktion (Klick auf markiertes Element)
- Feature-gesteuert: Schritte werden nur angezeigt, wenn das entsprechende Feature aktiv ist
Tutorial-Bereiche (24+ Schritte)¶
| Bereich | Beschreibung |
|---|---|
| Navigation | Erklärung des Logos, Dashboards und aller Menüpunkte (Kunden, Artikel, Bestellungen, Registrierung, Kundenlisten, Benachrichtigungen, SAM KI, Einstellungen) |
| Dashboard | Überblick über KPIs und Statistiken |
| Kunden | Suche, Kategoriefilter, Listeninteraktion |
| Artikel | Suche, Kategoriefilter, Listeninteraktion |
| Bestellungen | Suche, Listenfunktionen, Massenexport (PDF/Excel) |
| Registrierung | Benutzerfreigabe-Workflow |
| Kundenlisten | Listenverwaltung und Kundenzuordnung |
| Benachrichtigungen | Erstellen und Versenden von Push-Nachrichten |
| SAM KI | Einführung in den KI-Assistenten |
| Einstellungen | Benutzerverwaltung, Theme-Anpassung, Integrationen |
Zieltypen¶
| Typ | Beschreibung |
|---|---|
| navbar | Navigationsleisten-Buttons werden hervorgehoben |
| page | Ganze Seiten werden erklärt |
| header | Kopfbereich-Elemente (Suche, Filter) |
| listView | Listen-Interaktionen werden demonstriert |
| settings | Einstellungsdialog-Elemente |
| custom | Benutzerdefinierte Positionierung |
15.1 N-Gram-Suchindex¶
EasySale verwendet ein N-Gram-basiertes Suchsystem für die Volltextsuche in Kunden, Artikeln und Bestellungen:
- Automatische Indexierung: Bei jedem Erstellen oder Aktualisieren eines Datensatzes werden N-Gramme generiert (Trigger:
onArticleCreatedBuildNgrams,onCustomerCreatedBuildNgrams,onOrderCreatedBuildNgrams) - Partielle Suche: Ermöglicht Suche nach Wortteilen (z. B. „Schokolade" findet auch bei Eingabe von „Schoko")
- Mehrsprachig: Indiziert alle sprachlichen Varianten eines Datensatzes
- Firestore-optimiert: N-Gramme werden als Array-Feld gespeichert und über
array-contains-Abfragen durchsucht – deutlich schneller als Client-seitige Filterung
15.2 Plugin-System (Erweiterbarkeit)¶
EasySale unterstützt ein Plugin-System, das es ermöglicht, mandantenspezifische Erweiterungen ins System einzubinden, ohne den Kerncode zu ändern.
ERP-Plugins¶
| Plugin-Typ | Position | Beschreibung |
|---|---|---|
| Navigationsleisten-Plugin | Nach Dashboard / Nach Kunden / Nach Artikeln / Nach Bestellungen / Am Ende | Fügt eigene Seiten in die ERP-Navigation ein |
| Einstellungs-Plugin | In den Einstellungen | Eigene Konfigurationsseiten im Einstellungsbereich |
| Tab-Plugin | Kunden- oder Artikel-Detailseite | Benutzerdefinierte Tabs in der Detail-Ansicht |
| Artikel-Erstellungs-Plugin | Im Artikel-Erstellen-Dialog | Zusätzliche Schritte beim Anlegen neuer Artikel |
Shop-Plugins¶
| Plugin-Typ | Beschreibung |
|---|---|
| Bottom-Nav-Bar (Mobile) | Zusätzliche Tabs in der mobilen Navigation |
| Top-Bar (Web) | Zusätzliche Elemente in der Web-Navigationsleiste |
| Artikel-Seiten-Plugin | Erweiterungen auf der Artikelübersichtsseite |
| Artikeldetail-Plugin | Zusatzinhalte auf der Artikeldetailseite |
| Warenkorb-Plugin | Erweiterungen im Warenkorb |
| Profil-Plugin | Zusätzliche Sektionen auf der Profilseite |
| Feed-Plugin | Benutzerdefinierte Feed-Eintragstypen |
Tab-Registry¶
Kunden- und Artikel-Tabs werden über eine Tab-Registry verwaltet:
- Mandanten können über die ClientConfig Tabs umbenennen, umsortieren, ausblenden oder eigene benutzerdefinierte Tabs hinzufügen
- Pro Tab sind konfigurierbar: Name, Icon, Sichtbarkeit, Position
16. Sicherheit & Datenschutz¶
EasySale ERP implementiert umfangreiche Sicherheitsmaßnahmen zum Schutz der Daten.
Authentifizierung & Autorisierung¶
| Maßnahme | Beschreibung |
|---|---|
| Firebase Authentication | Sichere Anmeldung mit E-Mail/Passwort |
| JWT-Claims | Rollenbasierte Zugriffskontrolle über Custom Claims (appType, customerIds, adminCustomerIds) |
| Session-Management | Sichere Session-Verwaltung mit Token-Rotation |
| Rate Limiting | Schutz vor Brute-Force-Angriffen |
Datensicherheit¶
| Maßnahme | Beschreibung |
|---|---|
| SSL Certificate Pinning | Schutz vor Man-in-the-Middle-Angriffen |
| Verschlüsselter Speicher | Sensible Daten werden verschlüsselt gespeichert |
| Server-seitige Preisvalidierung | Verhinderung von Preismanipulationen (CWE-602) |
| Firestore Security Rules | Datenbankregeln erzwingen Zugriffsrechte |
Gerätesicherheit¶
| Maßnahme | Beschreibung |
|---|---|
| Jailbreak-/Root-Erkennung | Warnung bei kompromittierten Geräten |
| Kompromittierte Geräte | Eingeschränkter Zugang bei Sicherheitsrisiko |
| Sicheres Logging | Produktionsumgebung loggt keine sensiblen Daten |
DSGVO-Konformität¶
Die automatisierten Jobs (Kapitel 12) unterstützen die DSGVO-Compliance:
- Inaktive Kunden löschen: Kunden ohne Bestellungen nach konfigurierbarer Frist
- Inaktive Benutzer löschen: Benutzer ohne Login nach konfigurierbarer Frist
- Alte Bestellungen löschen: Bestellungen nach Ablauf der Aufbewahrungsfrist
- Alte Benachrichtigungen löschen: Benachrichtigungen nach konfigurierbarer Frist
- Ungenutzte Artikel löschen: Artikel ohne Bestellungen nach konfigurierbarer Frist
- AGB-Versionierung: Nachvollziehbare Zustimmungshistorie pro Benutzer
Sicherheitsprotokollierung¶
- Alle administrativen Aktionen werden protokolliert
- Trigger-Ausführungen werden mit Zeitstempel und Status gespeichert
- Job-Ausführungshistorie mit Fehlerdetails