Zum Inhalt springen

Funktionen · Plattform & Betrieb

System, Admin & Konfiguration

Hier steht alles, was einmal eingestellt wird und danach für den ganzen Betrieb gilt: Wie man sich anmeldet, was das Haus heißt und wie es aussieht, über welches Postfach Mails hinausgehen, welche Steuersätze und Zahlarten gelten, welche Bereiche überhaupt sichtbar sind. Dazu gehört die Ersteinrichtung eines frischen Systems, ein Assistent, der durch die Pflichtangaben führt, und eine Ampel, die zeigt, was noch fehlt. Und es gehört das dazu, was man erst braucht, wenn etwas klemmt: ein Protokoll aller wichtigen Handlungen, eine Systemzustandsanzeige und Alarme, die jemanden rufen. In der Cloud entscheidet dieser Bereich außerdem, welcher Betrieb hinter einer Adresse steckt — jeder Kunde bekommt seine eigene Unteradresse und seine eigenen Daten.

68 geprüfte Funktionen Funktionsstand 08.09.2026
Betriebseinstellungen in DiKAS

Stammdaten des Betriebs zentral pflegen.

Echte Oberfläche

System, Admin & Konfiguration in DiKAS

Keine Stockmotive: Die Aufnahmen stammen aus den reproduzierbaren DiKAS-Demos und zeigen die jeweilige Funktion im Produkt.

Arbeitsplatz-Konfiguration in DiKAS
Arbeitsplätze passend zum Betrieb konfigurieren.
Systemeinstellungen in DiKAS
Systemweite Einstellungen an einem Ort.

Vollständiger Überblick

Was DiKAS in diesem Bereich kann

Alle folgenden Punkte stammen aus dem gegen den Programmcode geprüften Funktionskatalog.

Anmelden (Benutzer + Passwort)

Login gegen Benutzername/Passwort, liefert Zugriffs- und Erneuerungs-Token

Anleitung öffnen

Zweiter Faktor (TOTP)

Nach dem Passwort ein 6-stelliger Code aus der Authenticator-App; Zwischenticket gilt 5 Minuten, max. 5 Fehlversuche

Sitzungs-Widerruf über den Sicherheitsstempel

Jeder Benutzer trägt einen Stempel (User.SecurityStamp); der Zugangstoken trägt ihn als Claim sec, der Erneuerungs-Token als Feld stm. Passt er nicht mehr, ist die Sitzung sofort zu Ende — ohne Sitzungsliste, auf jedem Gerät. Erneuert bei Passwortwechsel, Deaktivierung, Login-Sperre, Rollen-/Rechteänderung, Löschen und dem automatischen Austrittslauf

Alle Sitzungen eines Mitarbeiters abmelden

POST api/v1/staff/{id}/sessions/revoke (Admin/SupportAdmin) — für verlorene Tablets und weitergegebene Passwörter. Setzt einen neuen Stempel; das Passwort bleibt, der Mitarbeiter kann sich sofort neu anmelden. Bedienweg seit 06.09.2026: Knopf „Alle Sitzungen abmelden" im Reiter Sicherheit der Personalmaske — auf dem EIGENEN Datensatz steht dort bewusst nur ein Hinweis (s. 14)

Anleitung öffnen

Zweiten Faktor einrichten

Geheimnis erzeugen, per Code bestätigen und damit scharf schalten

Anmelden per Karte

Login über NFC-/RFID-Karte statt Passwort

Sitzung erneuern / abmelden

Erneuerungs-Token (auch als HttpOnly-Cookie) gegen neues Token-Paar tauschen, Logout

Anleitung öffnen

Eigenes Profil / Passwort / Sprache / Bediengrösse

Angemeldeten Benutzer abfragen, Passwort ändern, Anzeigesprache und UI-Skalierung setzen

Sprachvariante de-AT

Wörterbuch nur aus österreichischen Begriffen (Bankomat, Kassa, Beleg, RKSV, BMD, UID-Nummer) über dem deutschen Satz; wählbar im Umschalter, per Geräte-Sprache de-AT oder automatisch auf Instanzen mit Fiscal:Country=AT

Betriebseinstellungen

Zentrale Betriebskonfiguration: Zahlarten, Währung, Steuersatz-Zeiträume, Drucker, Terminals, Modulschalter sowie die standardmässig ausgeschaltete Rückfrage, ob eine freie Bonuskarte dem ausgewählten Kunden zugeordnet werden soll (AskAssignBonusCardToCustomer; unter Betrieb → Bonus)

Anleitung öffnen

Steuersatz-Perioden: dritter Satz + Steuerbezeichnung (CH-MVP T3, 28.08.2026)

Unter Finanzen → Steuersätze hat jede Periode neben Normal/Ermässigt jetzt „Stark ermässigt %" (SuperReduced, Steuerklasse 2: ES 4 %, CH 3,8 %) und „Steuerbezeichnung" (TaxName: leer = „MwSt", CH „MWST", ES „IVA"). Die Bezeichnung wird an EINER Stelle aufgelöst — TaxRateHelper.ResolveTaxName(periods, date) — und von Textbon (Kundenbeleg, Bewirtungsbeleg, Tagesabschluss), Grafik-Bon (GraphicBonReceiptData.TaxName, gesetzt im Mapper) und Rechnungs-PDF (InvoicePdfLabels.MitSteuername) gelesen. TaxRatePeriod.Label ist der Periodenname („Standard") und erscheint auf keinem Beleg. Die Maske schickt JEDES Feld zurück (leerer dritter Satz = 0 = ausdrücklich „gibt es nicht"; null hiesse dem Server „behalte den gespeicherten Wert").

Anleitung öffnen

Instanzwährung im Frontend

MainCurrency steuert die Anzeige-Währung der Web-Oberfläche: formatEur() hängt das aktive Symbol an ('€' nur für EUR, sonst ISO-Code, z. B. "12,50 CHF"), currency-Pipes laufen ohne EUR-Literal über DEFAULT_CURRENCY_CODE, die Gäste-Strecke (formatShopMoney) folgt mit; gespeist über den Operational-Config-Load, letzter Code in localStorage gecacht

Bargeld-Rundungseinheit CashRoundingUnit

Mandanten-Einstellung für die Rappenrundung (CH 0.05, sonst 0) — durchgereicht über Domain, Query, Update-Command, Controller-Mapping, Request/Response und config.model.ts (Full-Replace-Maske: ein Feld, das an einer Stelle fehlt, wird bei jeder Speicherung genullt; OperationalConfigControllerMappingTests pinnt es). Noch ohne Auswertung im Kassencode — der CH-Demo-Seed setzt 0.05, gerundet wird derzeit nirgends (CH-MVP T2-Rest)

Bar-Rundungseinheit (CashRoundingUnit, CH-MVP T4)

OperationalConfig.CashRoundingUnit (decimal, Default 0 = keine Rundung; CH-Seed 0.05) rundet an der Kasse nur den BAR-Zahlbetrag auf die kleinste Münze (Rappenrundung). Wird wie MainCurrency durchgereicht: Request → Command (Validator ≥ 0) → Entity → Query → Response → FE config.model.ts (cashRoundingUnit); Maske Betrieb → „Währung & Steuer" → Auswahl „keine Rundung / 0.05 / 0.10". Full-Replace: fehlt das Feld in einer Mapping-Richtung, springt es beim nächsten Speichern still auf 0 (Wächter CashRoundingUnitConfigTests, OperationalConfigControllerMappingTests). Wirkung: Katalog 01 Kasse „Rappenrundung"

Externe Menüeinträge (Anzeigemodus)

Externe Webseite als Kassen-Menüpunkt: eingebettet anzeigen oder in neuem Tab öffnen (openMode); die Icon-Auswahl öffnet sich am unteren Fensterrand nach oben und ihr Raster bleibt auf kleinen Bildschirmen scrollbar

Einbettung prüfen

Prüft, ob die Zielseite die Anzeige im Kassen-Fenster erlaubt, und nennt den blockierenden Header samt fertiger Server-Zeile

Backend-Einstellungen

Servernahe Werte: SMTP, Portal, Proxy-Dienste, Rechnungs-Absender, Fussnoten

Anleitung öffnen

Passkey-Anmeldung des Kundenportals einschalten

Abschnitt Einstellungen → Backend → Passkey-Anmeldung (Kundenportal): Schalter, Portal-Domain (leer = die aufgerufene Adresse) und Anzeigename der Passkey-Abfrage. Der Schalter WIRKT — ohne ihn liefern die Passkey-Endpunkte available:false mit Grund PASSKEY_DISABLED, und weder der Knopf auf der Anmeldemaske noch die Karte im Kundenkonto erscheinen

Oberflächen-Einstellungen

Anzeigeverhalten der Kasse: welche Felder, Sortierungen und Schaltflächen erscheinen

Anleitung öffnen

Touch-Bedienung

Globale Scrollleisten sind 11 px breit; Haupt- und Unterreiter bleiben bei jeder Breite einzeilig horizontal scrollbar, sodass auch der letzte Reiter erreichbar ist

Einstellungs-Oberfläche

Admin-Maske mit sechs Kategorien (Kasse, Hardware, Druck, Betrieb, Finanzen, System) und Unterreitern

Anleitung öffnen

Übungsmodus (Trainingsmodus) starten

Schalter je Arbeitsplatz, nur mit Admin-Rolle — ohne eingerichteten Arbeitsplatz gilt die Geräte-Kennung (Owner 25.08.2026: „soll einfach nur funktionieren, ein Klick zum Testen“): der Arbeitsplatz wechselt für eine einstellbare Zeit (Vorgabe 60 Minuten, Obergrenze 240) auf einen frisch provisionierten Demo-Mandanten; im produktiven Mandanten entsteht dabei nichts. Der Start prüft ausdrücklich, dass der Übungsmandant angelegt wurde (X-Debug-Tenant → X-Tenant-Id); antwortet das Übungssystem nicht oder ohne diesen Nachweis, startet der Modus sichtbar nicht (503 TRAINING_DEMO_UNREACHABLE) statt in den Echtbetrieb zurückzufallen. Vorgabe AUS (TrainingMode:Enabled=false) — der Betreiber schaltet je Umgebung ein

Übungs-Demo folgt der Betriebsart

Das Seed-Profil des Übungsmandanten kommt aus dem BETRIEB, nicht aus einer festen Einstellung: Disco eingeschaltet → club, Tische vorhanden → gastro, sonst basic. Eine ausdrückliche Einstellung (TrainingMode:DemoMode) schlägt weiterhin alles; ein Lesefehler verhindert die Übung nicht, sie wird dann eine Basis-Demo. 🪤 Das Disco-Profil heißt club — ein disco gibt es in DemoSeedProfiles.KnownModes NICHT, ein Tippfehler fällt still auf ein anderes Profil zurück. Gelesen wird der echte Zustand, nicht die Lizenz: man kann Tische lizenziert haben und keine angelegt

Übungsmodus ohne eingerichteten Arbeitsplatz

Gibt es keinen Arbeitsplatz, ist die Geräte-Kennung der Sitzungsschlüssel. Vorher brach der Start ab — bei null eingerichteten Arbeitsplätzen eine Sackgasse: die Auswahl in den Kasseneinstellungen steht unter @if (workplaces().length > 0), die Pille im Kopf unter @if (currentWorkplace()), beide erscheinen also nie. Start, Status und Stopp benutzen DENSELBEN Schlüssel — zwei wären eine Übung, die unter einem Namen startet und unter einem anderen gesucht wird

Übungs-Markierung + Übungsaufgaben

Nicht wegklickbarer Balken mit Restzeit, farbiger Rahmen um die ganze Oberfläche und fünf Übungsaufgaben (Bestellung mit zwei Gängen, Rechnung splitten, Storno, Gutschein einlösen, Tagesabschluss ansehen), de+en. Ab T-5 min warnt der Balken, beim Ablauf steht ein Hinweisschirm — kein stummer Wechsel mitten aus einem offenen Bon. Die Markierung hängt am Host (Übungs-Subdomain), nicht am Browser-Speicher

Übungs-Aufdruck auf dem Bon

Diagonalaufdruck „ÜBUNG — kein Beleg" auf jedem Bon einer Übungssitzung. Greift nur auf einer Demo-Instanz UND mit gesetztem Übungs-Kopf — ein echter Beleg kann ihn nicht bekommen. Gestempelt werden nur reine Textzeilen; bleiben zu wenige davon übrig (ESC/POS-Schriftbefehle inline), entfällt die Diagonale, der Balken bleibt, und der Dekorierer protokolliert eine Warnung

Geräte-Einstellungen an der Kasse

Was nur an diesem Gerät gilt: Drucker, Terminal, Arbeitsplatz, Sprache, Zweitbildschirm und auf der Linux-Appliance die Wahl zwischen DiKAS- und OSD-Systemtastatur

Branding / Erscheinungsbild

Theme, Marken- und Akzentfarbe, Schriften, Claim, Logo; whiteLabel erstreckt es auf Plattform-Dokumente

Firmenlogo

Logo hochladen, ausliefern, löschen (auch anonym abrufbar für Login und Belege)

Anleitung öffnen

E-Mail-Versand (SMTP)

Postfach für ausgehende Mails hinterlegen, Absender und Fusszeile setzen

Anleitung öffnen

E-Mail-Vorlagen

Betreff und HTML-Text je Vorgang (Rechnung, Mahnstufen 1-3, eigene) und je Sprache

Anleitung öffnen

Versand-Testmodus

Kundenmails stilllegen oder auf eine Adresse umleiten — wirkt nur, wo das Gate gesetzt ist

Anleitung öffnen

IMAP-Postfächer

Eingangspostfächer anlegen, testen und abrufen (Grundlage für Beleg-Einlesen)

Formular-Einsendungen

Öffentlicher Endpunkt für Formulare der Website; leitet als Mail an die hinterlegte Zieladresse weiter

API-Schlüssel verwalten

Schlüssel anlegen, umbenennen, neu erzeugen, löschen; Zugriffsart je Schlüssel

Anleitung öffnen

Mandantenerkennung

In der Cloud bestimmt die Unteradresse den Betrieb; der Lizenzserver liefert Datenbank-Prefix und Zugangsdaten

Anleitung öffnen

Mandanten-Zwischenspeicher & Ausfallschutz

Positiv-, Negativ- und Stale-Cache plus Circuit-Breaker, damit ein langsamer oder ausgefallener Lizenzserver den Betrieb nicht anhält

Demo-Mandanten

Pro Unteradresse eine eigene Demo-Datenbank aus einem Modus-Master, Aufräumen nach Inaktivität

Startbildschirm Ersteinrichtung

Frisches System: Kasse installieren, testen, Betragsanzeige-Modus oder Lizenz erwerben

Anleitung öffnen

Systemstatus & Lizenz aktivieren

Anonymer Status eines frischen Systems und Aktivierung mit dem Lizenzschlüssel

Lizenz-Aktivierungsmaske

Öffentliche Seite /activate: Bestandskunde gibt Lizenznummer und Passwort ein, das System wird freigeschaltet

Anleitung öffnen

Sperrbildschirme

Eigene Ansichten, wenn die Lizenz fehlt oder die Next-Umstellung noch läuft

Einrichtungs-Ampel

Live berechneter Einrichtungsstand mit wichtigstem offenen Punkt; wegklickbar bis sich der Punkt ändert

Anleitung öffnen

Systemzustand (Health)

healthz für den Loadbalancer, ready mit Datenbankprüfung, version mit Bau-Stand

Instanzkennung

Liefert den Online-Namen der Instanz an die Oberfläche

Next-Status

Anonyme Auskunft, ob die Instanz auf DiKAS Next umgestellt bzw. gerade in Umstellung ist

Gerätestatus

Aggregierter Zustand von TSE, Bondrucker, EC-Terminal und Hardware-Agent für die Admin-Dashboard-Ampel

Freigeschaltete Module abfragen

Welche Feature-Pakete geladen und welche Module lizenziert sind — steuert das Ein-/Ausblenden im Frontend. tables gilt dabei als Kassen-/Gastro-Nachweis und impliziert finance; dadurch bleiben Normal/Experte und die Aktivierung von Lager/QR-Modulen sichtbar

Protokoll (Audit-Log)

Tagesweise, seitenweise Liste aller protokollierten Handlungen, neueste zuerst

Anleitung öffnen

Frontend-Fehler im Serverprotokoll

Unbehandelte Fehler der Oberfläche (Template, undefined, abgelehnte Promises) melden sich gedrosselt beim Server und tauchen damit im täglichen Fehlerbericht auf (SourceContext=ClientError); höchstens 1 Meldung/10 s und je Nachricht einmal, ohne Personenbezug

Protokolldateien herunterladen

Vorhandene Protokolltage auflisten und als Datei ziehen (nur Admin)

Anleitung öffnen

Protokoll an der Kasse

Kompakte Protokollansicht direkt im Kassenbereich

Alarme auslösen & quittieren

Alarm mit Typ, Farbe, Ton und Ort auslösen, bestätigen, schließen; Eskalationszähler

Anleitung öffnen

Alarm-Konfiguration & Auswertung

Alarmtypen pflegen, Verlauf und Kennzahlen ansehen

Anleitung öffnen

Alarmleiste an der Kasse

Aktive Alarme im Kassenbereich sehen und quittieren

Öffentlicher Signaturschlüssel

JWKS unter .well-known/jwks.json für die Prüfung ausgestellter Proxy-Token

Vorlagen für Dokumente

Rechnungs- und weitere Vorlagen hochladen, herunterladen, löschen, Vorschau

Anleitung öffnen

Öffentliche Links & Tracking

Anonym abrufbare Adressen (Shop, Bestellung) und Tracking-Einstellungen für die Oberfläche

System-Info als Diagnose melden

Verborgene Diagnose-Funktion: sammelt Lizenz- und Systemdaten und legt sie als GitLab-Issue an

Support-Anfragen bearbeiten

Operator-Konsole: Tickets aller Kunden einsehen, beantworten, Status setzen, löschen (Soft-Delete mit Protokoll). Nur Admin/SupportAdmin

Ticket im Namen eines Kunden anlegen

Telefon-Fall: der Support eröffnet ein Ticket für den anrufenden Kunden

Lieferschein zum Ticket

Lieferschein zum Warenanteil der zugehörigen Bestellung — nur Hardware-Positionen, Lizenz/Paket/Add-ons sind Software und kommen nicht auf den Beleg. Seit Etappe W4 (07.09.2026) ein GESPEICHERTER Beleg mit Nummer LS-0001, PDF-Ablage am Dokument und Verweis SupportTicket.DeliveryNoteId. Vorher war er ephemer: nicht gespeichert, ohne Nummer, ohne Spur — wer fragte „was haben wir dieser Firma am 3. März geschickt?", bekam keine Antwort. Ein zweiter Druck liefert denselben Beleg und dasselbe PDF (Regel C3) statt eine neue Nummer zu ziehen

„Problem melden"

Freitext aus dem Hilfe-Panel plus automatische technische Diagnose, per Mail an Support:ProblemReportEmail

Lager-Einstellungen

Eigener Reiter (Betrieb → Lager) mit zwei Feldern: Seriennummern-Präfix und Garantie-Vorgabe. Etappe W0 (07.09.2026, Owner-Entscheid): von 17 auf 2 geschrumpft — die sechs Nummernkreis-Zähler bekommen eigene Serien über ISequenceService (Konfliktwiederholung und Bestandsabgleich, die ein Zähler in der Konfiguration beide nicht hat). Korrektur 07.09.2026 (W1): hier stand InvoiceSeriesService — das ist die Präfix-Konfiguration für RECHNUNGEN und gleicht gegen CustomerInvoice.InvoiceNumber ab; gemeinsam ist die Mechanik, nicht das Dokument, s. Application/Common/Nummernkreis.cs. Erste gebaute Serie: die Lieferantennummer LFR-0001 (W1), zweite die Bestellnummer BES-0001 (W2), die acht DHL-Felder sind ersatzlos gefallen (Versand zunächst ohne Carrier). Etappe W5 (07.09.2026) hat das eingelöst und dabei bewusst KEINEN Schalter „Carrier" nachgezogen: ein Schalter mit genau einem zulässigen Wert wäre wieder eine Fläche ohne Wirkung (Regel B2). Die Wahl der Versandumsetzung steht in einer DI-Zeile (IVersanddienst → ManuellerVersand), und der Lieferschein trägt hinterher in ShippingProvider, welche es war — gemessen statt behauptet. Kommt ein echter Carrier, kommt mit ihm der Schalter, der dann etwas zu schalten hat, s. 07 Lager & HACCP. Damit entfällt auch 400 WAREHOUSE_NUMBER_DECREASE, und der Vertrag trägt kein Geheimnis mehr. Seit Etappe W3 sichtbar, gebunden an das Modul wawi (settings.component.ts): die interne Seriennummer entsteht aus QrPrefix, das Garantieende aus DefaultWarrantyMonths — beides beim Wareneingang serialisierter Artikel. Und seit Etappe W6 hat DefaultWarrantyMonths einen ZWEITEN Leser: die Garantieprüfung der Reklamation nimmt es als Rückfall, wenn am Gerät kein Garantieende steht — dann zählt Lieferdatum + Hausfrist (Features/ERP/ClaimGarantie.cs). 0 Monate heißt „dieses Haus führt keine Garantie" und ergibt kein Datum — die Reklamation antwortet dann „nicht feststellbar" statt „abgelaufen". Bis W2 stand der Reiter bedingungslos auf unsichtbar, weil beide Werte keinen Leser hatten (Regel B2); wer ihn mit W1 aufgemacht hätte, hätte eine Maske ohne Wirkung freigeschaltet. 🪤 Auf Demo-Mandanten ist er damit sichtbar — die Demo-Lizenz gewährt jeden GatedKey

Zentrale Zahlungsanbieter-Einstellungen

Unter Hardware → Zahlungsoptionen stehen Kartenterminals sowie die gemeinsamen Stripe-/PayPal-Zugangsdaten. Eigene Unterreiter trennen EC, Stripe und PayPal: EC ist immer sichtbar; Stripe/PayPal erscheinen nur, sobald ein aktiver Weg sie braucht (QR-Tisch/Selbstbezahlen, Online-Abholung, Lieferservice, Reservierungsanzahlung, Disco-Checkout oder Stripe-Terminal) oder bereits Zugangsdaten gespeichert sind. Ohne Online-Anbieter entfällt die Reiterleiste und EC steht direkt da. Die jeweilige Aktivierung/Vorkasse bleibt beim Bestellweg. SumUp liegt ebenfalls unter Hardware → SumUp, Bizum/Redsys nur auf ES unter Kasse → Bizum. Geheimnisse: verschlüsselt gespeichert, Antwort nur als Has…-Marker, leeres Eingabefeld = beibehalten

Testdaten löschen (Auslieferungs-Reset)

Löscht seit 04.09.2026 (Owner: „alles noch entfernen") ALLE Bewegungsdaten hart: Kasse (Belege, Zahlungen, Schichten, Tagesabschlüsse, offene Bons, Ausgaben, Eingangsbelege, Gutscheine, Konto-/Punktebuchungen, TSE-Transaktionen, Trinkgeld-Konten, aus Mails erfasste Eingangsbelege), Bestellwege (Online-, Liefer-, Selbstbestellung, Gast-Feedback), Disco (Tageslog, Gäste, öffentlicher Checkout), Bank (Umsätze, Auszüge, Import-Sitzungen, Überweisungen samt Vorlagen und Echtzeit-Bestätigung, Bizum-Sitzungen), Faktura (Rechnungen, Sammelrechnungen, Zahlungsjournal, Mahnläufe, Angebote, Abos, Abo-Lauf-Sperre), Kommunikation (WhatsApp-Verläufe und -Nachrichten, Mail-Warteschlange, Mailing-Spur), Lager (Buchungen, Inventuren, Bestellungen), Betrieb (Dienstplan samt Quittungen und Tauschanträgen, Abwesenheiten, Zeiterfassung, HACCP, Tischreservierungen, Ressourcen-Sperren, Werkstattaufträge) sowie die Bewegungsdaten der Feature-Module Hotel (Folios, Reservierungen, Meldescheine, Hausdame, Zimmersperren, Kanal-Meldungen), BookingEngine (Buchungen, Tischreservierungen) und Ticketing (Tickets). Setzt die zugehörigen Nummernkreise auf 1, Kundensalden auf 0, Tische auf frei, Inventurlisten auf 0. Sichtbar bis 500 Belege, hart gesperrt sobald ein Beleg fiskalisch festgeschrieben ist. Betriebs- und Hardwarezuordnungen wie TseHostConfig bleiben erhalten. Nur Admin, nur dikas-next (nicht MAUI)

Oft gesucht

Begriffe rund um System, Admin & Konfiguration

EinstellungenÖsterreichÖsterreichde-ATBankomatKassaRKSVBMDUID-NummerSprachvarianteKonfigurationBetriebBetriebseinstellungenAnmeldungLoginAbmeldenPasswortPasswort ändern