HandyCafe Docs
owner

Sitzungspreise

HandyCafe verwendet eine segmentbasierte Preisberechnung für Sitzungskosten in Ihrem Internetcafe oder Gaming-Center. Anstatt einen einzigen Pauschaltarif für die gesamte Sitzung anzuwenden, unterteilt die Berechnung jede Sitzung in Segmente mit eigenem Preiskontext. Dieser Ansatz gewährleistet eine genaue Abrechnung, auch wenn Sitzungen mehrere Zeitslots, Preisänderungen, Pausen oder Verbindungsabbrüche überspannen.

Grundkonzepte

Begriff Definition
Grundstundensatz Der Preis pro Stunde vor Anwendung von Multiplikatoren. Festgelegt unter Einstellungen > Preise.
Preisslot Ein benannter Zeitraum mit einem bestimmten Multiplikator. Es gibt 8 Slots, jeweils farbcodiert.
Multiplikator Ein Faktor auf den Grundsatz. 1,0 = Standardpreis, 0,5 = halber Preis, 2,0 = doppelter Preis.
Segment Ein zusammenhängender Zeitraum innerhalb einer Sitzung, in dem der Preiskontext (Slot, Multiplikator, Grundpreis) unverändert bleibt.
Abrechnung Die abschließende Berechnung, die bestimmt, wie viel der Kunde beim Sitzungsende schuldet.

Grundstundensatz

Der Grundstundensatz ist die Basis aller Preisberechnungen. Er wird unter Einstellungen > Preise festgelegt und stellt den Standardpreis pro Stunde PC-Nutzung dar.

Alle internen Berechnungen verwenden Währungsuntereinheiten (z. B. Cent für EUR). Wenn Ihr Grundsatz 3,00 EUR pro Stunde beträgt, ist der interne Wert 300. Dies eliminiert Rundungsprobleme bei Gleitkommazahlen.

Doppelte Währungsunterstützung

HandyCafe unterstützt eine Basiswährung und eine lokale Währung mit Wechselkurs (FX-Rate). Wenn Sie in einem Land operieren, wo internationale und lokale Preisgestaltung voneinander abweichen:

  • Basiswährung. Die für interne Preisberechnungen verwendete Währung.
  • Lokale Währung. Die den Kunden angezeigte und für Zahlungen verwendete Währung.
  • FX-Rate. Der Umrechnungsfaktor zwischen Basis- und lokaler Währung.

Wenn beide Währungen identisch sind, wird die FX-Rate als 1,0 behandelt und hat keine Auswirkung.

Preisslots

Es gibt 8 farbcodierte Preisslots, die jeweils eine andere Preisstufe repräsentieren:

Slot Farbe Typische Verwendung
Blau Blau Standardtarif
Orange Orange Abend- oder Wochenendzuschlag
Rot Rot Spitzenzeiten-Aufschlag
Grün Grün Nebenzeiten-Rabatt
Blaugrün Blaugrün Studenten- oder Mitgliedertarif
Grau Grau Feiertags- oder Sonderpreise
Cyan Cyan Nachttarif
Smaragd Smaragd Aktionstarif

Jeder Slot hat drei Eigenschaften:

  1. Name. Eine beschreibende Bezeichnung (z. B. "Spitzenzeiten" oder "Nachtrabatt").
  2. Multiplikator. Ein Dezimalwert, der den Grundsatz modifiziert. Gängige Werte: 1,0 (Standard), 0,5 (halber Preis), 1,5 (50% Aufschlag), 2,0 (doppelter Preis). Der Multiplikator muss null oder positiv sein.
  3. Zeitplandaten. Eine interne Darstellung, die festlegt, zu welchen Stunden und Tagen der Slot gilt. Dies wird automatisch über das Zeitplanraster verwaltet.

Slots können einzeln aktiviert oder deaktiviert werden. Deaktivierte Slots werden von der Preisberechnung ignoriert.

Das Zeitplanraster

Der Preisplan ist eine 7-Tage-mal-24-Stunden-Matrix (168 einstündige Blöcke insgesamt). Jedem Block wird ein Preisslot zugewiesen. Der Zeitplan bestimmt, welcher Multiplikator zu einem gegebenen Zeitpunkt gilt.

Das Raster wird unter Einstellungen > Preisplan konfiguriert. Die Tage laufen von Montag bis Sonntag und die Stunden von 00:00 bis 23:00. Um einem Zeitblock einen Slot zuzuweisen, wählen Sie den Block im Raster und wählen die gewünschte Slotfarbe.

Preissegmente

Ein Segment ist ein zusammenhängender Zeitraum innerhalb einer Sitzung, in dem sich der Preiskontext nicht ändert. Die Preisberechnung erstellt ein neues Segment bei folgenden Grenzereignissen:

Grenze Auslöser
session_start Eine neue Sitzung beginnt
session_stop Die Sitzung wird beendet
pause Der Kassierer pausiert die Sitzung
resume Der Kassierer setzt die Sitzung fort
tick Die Uhr überschreitet eine Stundengrenze in einen anderen Preisslot
disconnect Der Client-PC verliert seine Netzwerkverbindung
offline Der Client-PC geht offline
load_recovery Der Server startet neu und stellt eine laufende Sitzung wieder her

Jedes Segment erfasst:

Feld Beschreibung
session_id Die Sitzung, zu der dieses Segment gehört
segment_start Unix-Zeitstempel des Segmentbeginns
segment_end Unix-Zeitstempel des Segmentendes (null wenn noch offen)
pricing_slot_id Die ID des aktiven Preisslots (z. B. "blue", "red" oder "base")
multiplier Der Multiplikatorwert des Preisslots
base_price_snapshot Der zum Zeitpunkt der Segmenteröffnung erfasste Grundstundensatz
amount Die berechneten Kosten für dieses Segment (gesetzt beim Schließen)
boundary_reason Warum dieses Segment erstellt wurde

Kostenformel

Die Kosten eines einzelnen Segments werden berechnet als:

amount = ceil( (base_price_snapshot * multiplier * duration_seconds) / 3600 )

Die Berechnung verwendet skalierte Ganzzahlarithmetik zur Vermeidung von Gleitkommafehlern:

  1. Der Multiplikator wird auf eine Festkomma-Ganzzahl skaliert (multipliziert mit 1.000.000).
  2. Die Berechnung erfolgt vollständig in 128-Bit-Ganzzahlen.
  3. Aufrundung wird verwendet. Das Ergebnis wird immer auf die nächste Untereinheit aufgerundet.

Sitzungsgesamtberechnung

Die Gesamtkosten der Sitzung werden in drei Schritten berechnet:

Schritt 1: Alle Segmente summieren

Rohsumme = Summe aller geschlossenen Segmentbeträge + Teilbetrag des offenen Segments

Schritt 2: Rundung anwenden

Gerundete Summe = Aufrunden(Rohsumme, Rundungsschritt)

Rundung erfolgt immer nach oben (Aufrundung) zum Schutz der Einnahmen.

Schritt 3: Startgebühr-Minimum anwenden

Endsumme = max(Gerundete Summe, Startgebühr)

Die Startgebühr ist der Mindestbetrag für jede Sitzung, unabhängig von der Dauer.

Abrechnung

Die Abrechnung ist der Prozess der Finalisierung der Sitzungskosten. Es gibt zwei Abrechnungsstufen:

Startabrechnung (nur Vorauszahlung)

Bei Beginn einer Vorauszahlungssitzung wird ein "Start"-Abrechnungsdatensatz erstellt. Dieser erfasst die berechneten Kosten und den tatsächlich berechneten Betrag.

Stoppabrechnung

Beim Beenden einer Sitzung (Vorauszahlung oder Nachzahlung) wird ein "Stopp"-Abrechnungsdatensatz erstellt mit: Berechnete Kosten, berechneter Betrag, manuell angepasster Betrag (falls der Kassierer den Preis manuell geändert hat), Provisionssatz, Provisionsgebühr, Festgebühr und einem JSON-Snapshot der vollständigen Preissegment-Zeitleiste.

MwSt. (Mehrwertsteuer)

Die MwSt. wird als Prozentsatz (0-100%) unter Einstellungen > Preise konfiguriert. Sie wird auf den berechneten Sitzungsbetrag aufgeschlagen:

MwSt. = Berechneter Betrag x (MwSt.-Satz / 100)

Der MwSt.-Betrag wird separat im Zahlungsdialog angezeigt, damit der Kassierer die Steueraufschlüsselung sehen kann.

Vorauszahlung-Preismodi

Preis beim Kauf fixieren

Bei Sitzungsbeginn wird der berechnete Betrag fixiert. Für die Dauer der Sitzung wird die Sitzungsendzeit basierend auf den gekauften Minuten festgelegt. Selbst bei Preisplanänderungen läuft die Sitzung bis zum Ablauf der fixierten Zeit weiter.

Live-Preisplan

Die verbleibende Sitzungszeit wird kontinuierlich neu berechnet, wenn sich die Preisslots ändern. Wenn die Sitzung in einen günstigeren Slot wechselt, verlängert sich die verbleibende Zeit. Bei einem teureren Slot verkürzt sie sich.


Nächste Schritte