Skip to content

6. Kassensystem & CSC Terminal App

9. Kassensystem

Abgabestelle, Kasse (POS) und Protokollierung – zentrale Schalter-Funktionen des Clubs.

<h3 id="nav-kassen-terminal">Kassen-Terminal (Dashboard)</h3>
<p class="perm">Berechtigung: <code>view_csc_dashboard</code>, <code>manage_csc_dispense</code> und/oder <code>manage_csc_pos</code></p>
<p><strong>Zweck:</strong> Schalter-Oberfläche im Browser für Bediener an der Abgabestelle – Anmeldung, Kassenschicht, Mitgliederscan, Cannabis-Abgabe und Bar-POS in einer Ansicht.</p>
<div class="box info">
  <strong>Überblick:</strong> Nach der Bediener-Anmeldung verschwindet das Login-Formular. Stattdessen siehst du eine kompakte <strong>Bediener-Karte</strong> mit Name und <strong>Abmelden</strong>. Darunter: Schichtstatus, Mitgliederscan und Kassenfunktionen – ohne separaten Reiter „Scan &amp; Ausgabe“.
</div>
<h4>Bediener anmelden</h4>
<div class="step"><span class="step-num">1</span><div>Dashboard → <strong>Kassen-Terminal</strong> öffnen</div></div>
<div class="step"><span class="step-num">2</span><div>Im Feld <strong>Bediener laden</strong> die eigene Mitgliedsnummer eingeben oder den QR-Code des digitalen Ausweises scannen (USB-Handscanner mit Fokus im Feld)</div></div>
<div class="step"><span class="step-num">3</span><div>Nach erfolgreicher Prüfung: Login-Bereich ausgeblendet, Bediener-Karte sichtbar. Mit <strong>Abmelden</strong> wechselst du den Schichtmitarbeiter</div></div>
<p>Nur Mitglieder mit passendem Club-Rang (z.&nbsp;B. abgabeberechtigt) können sich als Bediener anmelden.</p>
<h4>Kassenschicht öffnen &amp; schließen</h4>
<div class="step"><span class="step-num">1</span><div>Nach Bediener-Login: <strong>Schicht öffnen</strong> – Eröffnungssaldo (Wechselgeld) eingeben</div></div>
<div class="step"><span class="step-num">2</span><div>Das Terminal zeigt Kassenstand, offene Schicht und Transaktionen</div></div>
<div class="step"><span class="step-num">3</span><div>Am Schichtende: <strong>Schicht schließen</strong> – gezählten Ist-Bestand eingeben. Das System vergleicht Soll (Eröffnung ± Buchungen) mit Ist und protokolliert Differenzen</div></div>
<h4>Mitglied für Abgabe laden (Cannabis)</h4>
<div class="step"><span class="step-num">1</span><div>Im Bereich <strong>Mitglied scannen</strong> QR der CSC-Karte scannen oder Mitgliedsnummer eingeben und Enter drücken</div></div>
<div class="step"><span class="step-num">2</span><div>Das System lädt das Mitgliedsprofil inline: Vertrag, Kontingent, Wohnsitz, Beitragsstatus, Wallet-Guthaben, <strong>offene Vorbestellungen</strong> (Shop)</div></div>
<div class="step"><span class="step-num">3</span><div>Produkt, Menge und Lagercharge wählen → <strong>Abgabe buchen</strong>. Bei Blockade (Vertrag, Beitrag, U21/THC, Kontingent) erscheint eine klare Meldung</div></div>
<div class="step"><span class="step-num">4</span><div>Mit <strong>Anderes Mitglied</strong> (bzw. Profil schließen) den Scan für den nächsten Gast zurücksetzen</div></div>
<h4>Abgabe an Nicht-Mitglied (Vermehrungsmaterial)</h4>
<p>KCanG: Nur <strong>Samen</strong> oder <strong>Stecklinge</strong> an Personen ohne Mitgliedschaft – mit dokumentierter Altersprüfung (18+).</p>
<div class="step"><span class="step-num">1</span><div>Offene Kassenschicht erforderlich</div></div>
<div class="step"><span class="step-num">2</span><div>Button <strong>Nicht-Mitglied</strong> (neben Protokoll) → Popup: Vorname, Nachname, Produkt, Menge, Charge, optional Barbetrag</div></div>
<div class="step"><span class="step-num">3</span><div>Altersprüfung bestätigen → Abgabe bucht Bestand ab; Barzahlung erscheint als <strong>Nicht-Mitglied (Bar)</strong> im Schicht-Journal und im Buchungsjournal (<code>pos_sale</code>)</div></div>
<p>Die gleiche Funktion existiert unter <strong>Warenwirtschaft → Bestände</strong> (ohne Kassen-Anbindung) und in der <strong>CSC Terminal App</strong> (Button <strong>Nicht-Mitgl.</strong>).</p>
<p>Während ein Mitglied geladen ist, pausiert die automatische Aktualisierung der Terminal-Ansicht – so bleibt das Profil beim Buchen sichtbar.</p>
<h4>Kasse (POS)</h4>
<div class="box warn">
  <strong>Keine fiskalische Kasse:</strong> Das POS-Modul enthält keine TSE (KassenSichV). Für Barumsätze ist der Club für die Einhaltung der Kassensicherungsverordnung verantwortlich.
</div>
<ul>
  <li><strong>Barverkauf</strong> – Zubehör, Snacks; Buchung ins Kassenbuch</li>
  <li><strong>Wallet-Aufladung</strong> – Mitglied zahlt bar ein; Guthaben steigt für spätere Abgaben</li>
  <li><strong>Barauszahlung</strong> – Wechselgeld oder Entnahme; Kassenstand sinkt</li>
</ul>
<p>Das <strong>Schicht-Journal</strong> listet alle Buchungen der aktuellen Schicht (inkl. Nicht-Mitglied-Verkäufe). Buttons: <strong>Protokoll</strong> (Ausgabe-Historie), <strong>Nicht-Mitglied</strong> (siehe oben).</p>
<h4>KCanG-Kontingente</h4>
<table>
  <thead><tr><th>Produkt</th><th>Limit</th></tr></thead>
  <tbody>
    <tr><td>Blüten</td><td>50 g / Monat, max. 25 g / Tag</td></tr>
    <tr><td>Samen</td><td>7 Stück / Monat (kombiniert mit Stecklingen)</td></tr>
    <tr><td>Stecklinge</td><td>5 Stück / Monat</td></tr>
  </tbody>
</table>
<p><strong>U21:</strong> Abgabe mit THC &gt; 10&nbsp;% wird für Heranwachsende unter 21 blockiert.</p>

<h3 id="nav-terminal-app">CSC Terminal App (Android)</h3>
<p class="perm">Berechtigung: <code>manage_csc_dispense</code> und/oder <code>manage_csc_pos</code> (aus Club-Rang)</p>
<p><strong>Zweck:</strong> Native Kassen-App für <strong>Android-Tablets</strong> an der Abgabestelle – optimiert für Touch, QR-Kamera und Bondrucker. Ergänzt das Browser-Terminal im Dashboard; beide nutzen dieselbe Backend-API. <strong>Aktuelle Version: 1.1</strong> (versionCode 2).</p>
<h4>Installation</h4>
<div class="step"><span class="step-num">1</span><div>Dashboard → <strong>Mein CSC</strong> → <strong>Terminal-App herunterladen (APK)</strong></div></div>
<div class="step"><span class="step-num">2</span><div>APK auf dem Tablet installieren (Sideload – „Unbekannte Quellen“ erlauben)</div></div>
<div class="step"><span class="step-num">3</span><div>Mit dem <strong>gleichen GrowTracker-Konto</strong> anmelden (Web-Sync-Login, inkl. 2FA wenn aktiv)</div></div>
<div class="box info">
  Die APK wird zentral vom <strong>GrowTracker-Admin</strong> unter CMS → Admin → <strong>CSC Terminal APK</strong> bereitgestellt. Ist kein Upload hinterlegt, erscheint ein Hinweis beim Download.
</div>
<h4>Funktionen</h4>
<table>
  <thead><tr><th>Bereich</th><th>Inhalt</th></tr></thead>
  <tbody>
    <tr><td><strong>Schicht</strong></td><td>Schicht öffnen/schließen, Kassenstand, Wechselgeld, Tagesabschluss mit Ist-Zählung</td></tr>
    <tr><td><strong>Kasse / Abgabe</strong></td><td>Mitglied per QR-Kamera oder manuell laden, Warenkorb, Checkout, Bareinzahlung (Wallet)</td></tr>
    <tr><td><strong>Nicht-Mitglied</strong></td><td>Abgabe Samen/Stecklinge an Nicht-Mitglieder (Popup, Altersprüfung, optional Bar)</td></tr>
    <tr><td><strong>Vorbestellungen</strong></td><td>Offene Shop-Bestellungen laden und als abgeholt verbuchen</td></tr>
    <tr><td><strong>Belegdruck</strong></td><td>Nach Checkout: ESC/POS über Bluetooth-Bondrucker, System-Druck oder Teilen</td></tr>
    <tr><td><strong>Ausgabe-Protokoll</strong></td><td>Liste und Detail der gebuchten Abgaben</td></tr>
    <tr><td><strong>Statistik</strong></td><td>Übersicht abgeschlossener Schichten (je nach Rechten)</td></tr>
  </tbody>
</table>
<p>Benutzer mit nur Kassen-Rechten landen direkt in der Kasse; Nutzer mit mehreren Berechtigungen sehen einen Hub mit Navigation.</p>
<div class="box warn">
  <strong>Systemanforderungen:</strong> Android 11 (API 30) oder neuer, Landscape-Tablet empfohlen. Die Terminal-App ist <strong>nicht</strong> die GrowTracker-Mitglieder-App aus dem Play Store.
</div>
<h4>Dashboard-Browser vs. Terminal App</h4>
<table>
  <thead><tr><th></th><th>Dashboard Kassen-Terminal</th><th>CSC Terminal App</th></tr></thead>
  <tbody>
    <tr><td>Gerät</td><td>PC/Laptop + USB-Scanner</td><td>Android-Tablet</td></tr>
    <tr><td>QR-Scan</td><td>USB-Handscanner</td><td>Kamera + manuell</td></tr>
    <tr><td>Vorbestellungen</td><td>im Mitgliedsprofil nach Scan</td><td>integriert (Bestellung laden)</td></tr>
    <tr><td>Nicht-Mitglied</td><td>Button im Terminal-Popup</td><td>Button „Nicht-Mitgl.“ in der Leiste</td></tr>
    <tr><td>Belegdruck</td><td>Browser-Druck</td><td>Bluetooth ESC/POS</td></tr>
  </tbody>
</table>

<h3 id="nav-ausgabe-protokoll">Ausgabe-Protokoll</h3>
<p class="perm">Berechtigung: <code>view_csc_dispense_history</code></p>
<p><strong>Zweck:</strong> Vollständige Historie aller gebuchten Abgaben und Stornos.</p>
<ul>
  <li>Filter nach Zeitraum und Mitglied</li>
  <li><strong>CSV-Export</strong> für KCanG-Dokumentation</li>
  <li>Einzelne Einträge: Datum, Produkt, Menge, Charge, Bediener</li>
  <li><strong>Storno</strong> – bucht Bestand zurück ins Lager</li>
</ul>

<h3 id="nav-ausgabe-einstellungen">Ausgabe-Einstellungen</h3>
<p class="perm">Berechtigung: <code>manage_csc_dispense</code></p>
<p><strong>Zweck:</strong> Konfiguration der Abgabestelle – Preise, Pauschalen und Verhalten.</p>
<ul>
  <li>Preise pro Produkttyp und Gramm-/Stückpreise</li>
  <li><strong>Quittungsdrucker</strong> — USB (Dashboard/Web Serial), Bluetooth (Terminal App), Auto-Druck, Kopf-/Fußzeile</li>
  <li>Abgabe nur mit gültigem Analysezertifikat (optional)</li>
  <li>Sperre bei überfälligem Beitrag (KCanG)</li>
  <li>Bestellungen / Vorbestellungen verknüpfen</li>
</ul>