Zum Hauptinhalt springen

Kassen-Schichten

Übersicht aller Bediener-Schichten pro Kasse mit Storno-Möglichkeit. Live seit 13.06.2026 (Commit 059589397).

Routes

GET  /backoffice/kassen-schichten
GET /backoffice/kassen-schichten/<uuid>
POST /backoffice/kassen-schichten/<uuid>/storno

Liste

4 Stat-Cards:

  • Offen
  • Abgeschlossen (heute)
  • Storniert
  • Summe-Differenz (Kasse – Soll)

Filter: tage, status, standort, geraet, benutzer.

Detail

  • Wer (Bediener-Anzeige-Name) / Wo (Standort + Gerät)
  • Zeiten (geöffnet / geschlossen)
  • Bestand (Anfang / Soll-Ende / Ist-Ende / Differenz)
  • Bons in der Schicht
  • Storno-Formular (nur bei status='offen' oder status='abgeschlossen')

Storno

Validierung: grund.length >= 5. Schreibt audit_log-Eintrag mit Aktion kassen_schicht_storniert.

Kein MQTT-Event

Der Storno-Workflow triggert kein MQTT-Event und keinen Webhook. Der Standort-Server liest den neuen Status erst beim nächsten Cloud-Sync.

DB-Schema

CREATE TABLE kassen_schichten (
schicht_uuid CHAR(36) PRIMARY KEY,
mandant_uuid CHAR(36) NOT NULL,
standort_uuid CHAR(36) NOT NULL,
geraet_uuid CHAR(36) NOT NULL,
benutzer_uuid CHAR(36) NOT NULL,
status ENUM('offen','abgeschlossen','storniert') NOT NULL,
geoeffnet_am DATETIME NOT NULL,
geschlossen_am DATETIME NULL,
kassenbestand_anfang DECIMAL(10,2) NULL,
kassenbestand_ende_soll DECIMAL(10,2) NULL,
kassenbestand_ende_ist DECIMAL(10,2) NULL,
differenz DECIMAL(10,2) NULL,
storno_grund VARCHAR(255) NULL,
storniert_am DATETIME NULL,
storniert_von_uuid CHAR(36) NULL
);

Verwandte Themen