HandyCafe Docs
owner

Τιμολόγηση Συνεδριών

Το HandyCafe χρησιμοποιεί μια μηχανή τιμολόγησης με βάση τα τμήματα για τον υπολογισμό του κόστους συνεδριών στο internet cafe ή το gaming center σας. Αντί να εφαρμόζει μια ενιαία σταθερή τιμή για ολόκληρη τη συνεδρία, η μηχανή διαιρεί κάθε συνεδρία σε τμήματα, το καθένα με το δικό του πλαίσιο τιμολόγησης. Αυτή η προσέγγιση εξασφαλίζει ακριβή χρέωση ακόμα και όταν οι συνεδρίες εκτείνονται σε πολλαπλές χρονικές ζώνες, αλλαγές τιμολόγησης, παύσεις ή αποσυνδέσεις.

Βασικές Έννοιες

Πριν προχωρήσουμε στις λεπτομέρειες, εδώ είναι οι βασικοί όροι:

Όρος Ορισμός
Βασική ωριαία τιμή Η τιμή ανά ώρα πριν εφαρμοστούν πολλαπλασιαστές. Ρυθμίζεται στις Ρυθμίσεις > Τιμολόγηση.
Ζώνη τιμολόγησης Μια ονομαστική χρονική περίοδος με συγκεκριμένο πολλαπλασιαστή. Υπάρχουν 8 ζώνες, καθεμία με διαφορετικό χρώμα.
Πολλαπλασιαστής Ένας παράγοντας που εφαρμόζεται στη βασική τιμή. 1.0 = κανονική τιμή, 0.5 = μισή τιμή, 2.0 = διπλή τιμή.
Τμήμα Μια συνεχής περίοδος μέσα σε μια συνεδρία όπου το πλαίσιο τιμολόγησης (ζώνη, πολλαπλασιαστής, βασική τιμή) παραμένει αμετάβλητο.
Εκκαθάριση Ο τελικός υπολογισμός που καθορίζει πόσα οφείλει ο πελάτης όταν τελειώνει μια συνεδρία.

Βασική Ωριαία Τιμή

Η βασική ωριαία τιμή είναι το θεμέλιο όλων των υπολογισμών τιμολόγησης. Ρυθμίζεται στις Ρυθμίσεις > Τιμολόγηση και αντιπροσωπεύει την κανονική τιμή ανά ώρα χρήσης του υπολογιστή.

Όλοι οι εσωτερικοί υπολογισμοί χρησιμοποιούν μικρές νομισματικές μονάδες (για παράδειγμα, σεντ για USD, kurus για TRY). Αν η βασική σας τιμή είναι $3.00 ανά ώρα, η εσωτερική τιμή είναι 300. Αυτό εξαλείφει τα προβλήματα στρογγυλοποίησης με κινητές υποδιαστολές.

Υποστήριξη Διπλού Νομίσματος

Το HandyCafe υποστηρίζει ένα βασικό νόμισμα και ένα τοπικό νόμισμα με συναλλαγματική ισοτιμία (FX). Αν λειτουργείτε σε χώρα όπου η διεθνής τιμολόγηση διαφέρει από την τοπική:

  • Βασικό νόμισμα. Το νόμισμα που χρησιμοποιείται για εσωτερικούς υπολογισμούς τιμολόγησης.
  • Τοπικό νόμισμα. Το νόμισμα που εμφανίζεται στους πελάτες και χρησιμοποιείται για πληρωμές.
  • Συναλλαγματική ισοτιμία (FX). Ο συντελεστής μετατροπής μεταξύ βασικού και τοπικού νομίσματος.

Αν και τα δύο νομίσματα είναι τα ίδια, η συναλλαγματική ισοτιμία θεωρείται 1.0 και δεν έχει καμία επίδραση.

Ζώνες Τιμολόγησης

Υπάρχουν 8 ζώνες τιμολόγησης με διαφορετικά χρώματα, καθεμία αντιπροσωπεύει μια διαφορετική κατηγορία τιμολόγησης:

Ζώνη Χρώμα Τυπική Χρήση
Μπλε Μπλε Κανονική τιμή
Πορτοκαλί Πορτοκαλί Προσαύξηση βραδιών ή Σαββατοκύριακου
Κόκκινο Κόκκινο Προσαύξηση ωρών αιχμής
Πράσινο Πράσινο Έκπτωση εκτός αιχμής
Τιρκουάζ Τιρκουάζ Τιμή φοιτητών ή μελών
Γκρι Γκρι Ειδική τιμολόγηση αργιών
Κυανό Κυανό Τιμή νυχτερινής χρήσης
Σμαραγδί Σμαραγδί Προωθητική τιμή

Κάθε ζώνη έχει τρεις ιδιότητες:

  1. Όνομα. Μια περιγραφική ετικέτα (για παράδειγμα, "Ώρες Αιχμής" ή "Έκπτωση Νύχτας").
  2. Πολλαπλασιαστής. Μια δεκαδική τιμή που τροποποιεί τη βασική τιμή. Συνήθεις τιμές περιλαμβάνουν 1.0 (κανονική), 0.5 (μισή τιμή), 1.5 (50% προσαύξηση), 2.0 (διπλή τιμή). Ο πολλαπλασιαστής πρέπει να είναι μηδενικός ή θετικός.
  3. Δεδομένα προγράμματος. Μια εσωτερική αναπαράσταση που καθορίζει ποιες ώρες ποιων ημερών ισχύει η ζώνη. Αυτό διαχειρίζεται αυτόματα μέσω του πλέγματος προγράμματος.

Οι ζώνες μπορούν να ενεργοποιηθούν ή να απενεργοποιηθούν μεμονωμένα. Οι απενεργοποιημένες ζώνες αγνοούνται από τη μηχανή τιμολόγησης.

Το Πλέγμα Προγράμματος

Το πρόγραμμα τιμολόγησης είναι ένα πλέγμα 7 ημερών επί 24 ωρών (συνολικά 168 μονόωρα μπλοκ). Κάθε μπλοκ ανατίθεται σε μια ζώνη τιμολόγησης. Το πρόγραμμα καθορίζει ποιος πολλαπλασιαστής ισχύει σε κάθε δεδομένη στιγμή.

Το πλέγμα ρυθμίζεται στις Ρυθμίσεις > Πρόγραμμα Τιμολόγησης. Οι ημέρες τρέχουν από Δευτέρα έως Κυριακή και οι ώρες από 00:00 έως 23:00. Για να αναθέσετε μια ζώνη σε ένα χρονικό μπλοκ, επιλέξτε το μπλοκ στο πλέγμα και επιλέξτε το επιθυμητό χρώμα ζώνης.

Πώς η Μηχανή Διαβάζει το Πρόγραμμα

Εσωτερικά, κάθε μπλοκ ώρας αντιστοιχεί σε μια θέση στα δεδομένα προγράμματος. Η μηχανή ελέγχει τα δεδομένα προγράμματος κάθε ενεργοποιημένης ζώνης για να καθορίσει ποια ζώνη είναι ενεργή για κάθε ημέρα και ώρα.

Αν καμία ζώνη δεν έχει το bit της ορισμένο για μια δεδομένη ώρα, η μηχανή επιστρέφει στη βασική τιμή με πολλαπλασιαστή 1.0.

Όταν η λειτουργία προγράμματος τιμολόγησης είναι εντελώς απενεργοποιημένη (στις Ρυθμίσεις > Τιμολόγηση), όλες οι συνεδρίες χρησιμοποιούν τη βασική τιμή με πολλαπλασιαστή 1.0 ανεξαρτήτως χρόνου.

Τμήματα Τιμολόγησης

Ένα τμήμα είναι μια συνεχής χρονική περίοδος μέσα σε μια συνεδρία όπου το πλαίσιο τιμολόγησης δεν αλλάζει. Η μηχανή τιμολόγησης δημιουργεί ένα νέο τμήμα κάθε φορά που συμβαίνει κάποιο από αυτά τα γεγονότα ορίου:

Όριο Ενεργοποίηση
session_start Ξεκινά μια νέα συνεδρία
session_stop Η συνεδρία σταματά
pause Ο ταμίας παύει τη συνεδρία
resume Ο ταμίας συνεχίζει μια παύση συνεδρία
tick Το ρολόι περνά σε διαφορετική ζώνη τιμολόγησης
disconnect Ο υπολογιστής πελάτη χάνει τη σύνδεση δικτύου
offline Ο υπολογιστής πελάτη γίνεται εκτός σύνδεσης
load_recovery Ο διακομιστής επανεκκινεί και ανακτά μια τρέχουσα συνεδρία

Κάθε τμήμα καταγράφει:

Πεδίο Περιγραφή
session_id Η συνεδρία στην οποία ανήκει το τμήμα
segment_start Χρονική σήμανση Unix όταν ξεκίνησε το τμήμα
segment_end Χρονική σήμανση Unix όταν τελείωσε το τμήμα (null αν είναι ακόμα ανοιχτό)
pricing_slot_id Το ID της ενεργής ζώνης τιμολόγησης (για παράδειγμα, "blue", "red", ή "base")
multiplier Η τιμή πολλαπλασιαστή από τη ζώνη τιμολόγησης
base_price_snapshot Η βασική ωριαία τιμή που καταγράφηκε τη στιγμή που άνοιξε το τμήμα
amount Το υπολογισμένο κόστος για αυτό το τμήμα (ορίζεται όταν το τμήμα κλείνει)
boundary_reason Γιατί δημιουργήθηκε αυτό το τμήμα

Γιατί Καταγράφεται η Βασική Τιμή;

Η base_price_snapshot καταγράφει τη βασική ωριαία τιμή ακριβώς τη στιγμή που ανοίγει το τμήμα. Αυτό είναι κρίσιμο γιατί ένας διαχειριστής θα μπορούσε να αλλάξει τη βασική τιμή κατά τη διάρκεια της συνεδρίας. Με την καταγραφή, κάθε τμήμα χρησιμοποιεί την τιμή που ίσχυε όταν ξεκίνησε, εξασφαλίζοντας δίκαιη και ελέγξιμη χρέωση.

Τύπος Κόστους

Το κόστος ενός μεμονωμένου τμήματος υπολογίζεται ως εξής:

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

Πιο συγκεκριμένα, η μηχανή χρησιμοποιεί κλιμακωτή αριθμητική ακεραίων για να αποφύγει σφάλματα κινητής υποδιαστολής:

  1. Ο πολλαπλασιαστής κλιμακώνεται σε ακέραιο σταθερού σημείου (πολλαπλασιασμένος με 1,000,000).
  2. Ο υπολογισμός εκτελείται εξ ολοκλήρου σε ακέραιους 128-bit.
  3. Χρησιμοποιείται διαίρεση με οροφή. Το αποτέλεσμα πάντα στρογγυλοποιείται προς τα πάνω στην επόμενη μικρή μονάδα.

Υπολογισμός ανά Λεπτό

Αν η επιλογή "υπολογισμός ανά λεπτό" είναι ενεργοποιημένη στις Ρυθμίσεις > Τιμολόγηση, ο τύπος αλλάζει ελαφρώς:

amount = ceil( (base_price_snapshot * multiplier * used_minutes) / 60 )

Όπου used_minutes = ceil(duration_seconds / 60). Αυτό σημαίνει ότι κάθε μερικό λεπτό υπολογίζεται ως πλήρες λεπτό.

Υπολογισμός Συνολικού Κόστους Συνεδρίας

Το συνολικό κόστος συνεδρίας υπολογίζεται σε τρία βήματα:

Βήμα 1: Άθροισμα Όλων των Τμημάτων

raw_total = sum of all closed segment amounts + open segment partial amount

Το μερικό ποσό του ανοιχτού τμήματος υπολογίζεται σε πραγματικό χρόνο χρησιμοποιώντας τον παραπάνω τύπο με την τρέχουσα χρονική σήμανση ως το τέλος του τμήματος.

Βήμα 2: Εφαρμογή Στρογγυλοποίησης

rounded_total = round_up(raw_total, rounding_step)

Η στρογγυλοποίηση γίνεται πάντα προς τα πάνω (οροφή) για την προστασία των εσόδων. Το βήμα στρογγυλοποίησης είναι ρυθμιζόμενο στις Ρυθμίσεις > Τιμολόγηση. Για παράδειγμα, αν το βήμα στρογγυλοποίησης είναι 50 (αντιπροσωπεύοντας $0.50 σε νόμισμα με 2 δεκαδικά ψηφία), ένα ακατέργαστο σύνολο $3.27 στρογγυλοποιείται σε $3.50.

Βήμα 3: Εφαρμογή Ελάχιστης Χρέωσης Εκκίνησης

final_total = max(rounded_total, startup_fee)

Η χρέωση εκκίνησης είναι η ελάχιστη χρέωση για οποιαδήποτε συνεδρία, ανεξαρτήτως διάρκειας. Αν το στρογγυλοποιημένο σύνολο είναι μικρότερο από τη χρέωση εκκίνησης, χρεώνεται η χρέωση εκκίνησης.

Εκκαθάριση

Η εκκαθάριση είναι η διαδικασία οριστικοποίησης της χρέωσης για μια συνεδρία. Υπάρχουν δύο στάδια εκκαθάρισης:

Εκκαθάριση Έναρξης (Μόνο Προπληρωμένες)

Όταν ξεκινά μια προπληρωμένη συνεδρία, δημιουργείται μια εγγραφή εκκαθάρισης "έναρξης". Αυτή καταγράφει:

  • Υπολογισμένο κόστος. Το κόστος που υπολογίζεται από το σύστημα για τον αγορασμένο χρόνο.
  • Ποσό χρέωσης. Το ποσό που πραγματικά πλήρωσε ο πελάτης (συνήθως το ίδιο με το υπολογισμένο κόστος).

Για τη λειτουργία προπληρωμένης "Κλείδωμα κατά την Αγορά", αυτό το κλειδωμένο ποσό καθορίζει το κόστος της συνεδρίας ανεξαρτήτως αλλαγών τιμολόγησης κατά τη διάρκεια της συνεδρίας.

Εκκαθάριση Σταματήματος

Όταν οποιαδήποτε συνεδρία (προπληρωμένη ή μεταπληρωμένη) σταματά, δημιουργείται μια εγγραφή εκκαθάρισης "σταματήματος":

Πεδίο Περιγραφή
Υπολογισμένο κόστος Το συνολικό ποσό που υπολογίζεται από το σύστημα από όλα τα τμήματα τιμολόγησης
Ποσό χρέωσης Το ποσό που πραγματικά χρεώθηκε (προεπιλογή στο υπολογισμένο κόστος)
Χειροκίνητα προσαρμοσμένο ποσό Αν ο ταμίας προσαρμόσει χειροκίνητα την τιμή, το αρχικό υπολογισμένο κόστος διατηρείται εδώ
Ποσοστό προμήθειας Ποσοστό προμήθειας μεθόδου πληρωμής (ως ποσοστό)
commission_fee Το υπολογισμένο ποσό προμήθειας
fixed_fee Σταθερή χρέωση μεθόδου πληρωμής
computed_timeline_snapshot Μια εγγραφή JSON κάθε τμήματος τιμολόγησης στη συνεδρία

Το στιγμιότυπο χρονοδιαγράμματος παρέχει πλήρες ίχνος ελέγχου που δείχνει ακριβώς πώς υπολογίστηκε το κόστος, τμήμα προς τμήμα.

Χρεώσεις Μεθόδων Πληρωμής

Κάθε μέθοδος πληρωμής μπορεί να έχει δύο τύπους χρεώσεων:

Προμήθεια (Βάση Πόντων)

Το ποσοστό προμήθειας εκφράζεται ως ποσοστό. Η χρέωση προμήθειας υπολογίζεται εφαρμόζοντας αυτό το ποσοστό στο ποσό χρέωσης.

Παράδειγμα: Αν το ποσό χρέωσης είναι $10.00 (1000 μικρές μονάδες) και η μέθοδος πληρωμής έχει ποσοστό προμήθειας 2.5%, η χρέωση προμήθειας είναι $0.25 (25 μικρές μονάδες).

Σταθερή Χρέωση

Μια σταθερή χρέωση που αφαιρείται ανά συναλλαγή, ανεξαρτήτως ποσού. Για παράδειγμα, μια χρέωση επεξεργασίας πιστωτικής κάρτας $0.30.

Και οι δύο χρεώσεις είναι πληροφοριακές. Αντιπροσωπεύουν το κόστος για την επιχείρηση από την αποδοχή αυτής της μεθόδου πληρωμής. Καταγράφονται στην εκκαθάριση αλλά δεν προστίθενται στο λογαριασμό του πελάτη.

ΦΠΑ (Φόρος Προστιθέμενης Αξίας)

Ο ΦΠΑ ρυθμίζεται ως ποσοστό (0--100%) στις Ρυθμίσεις > Τιμολόγηση. Εφαρμόζεται πάνω από το υπολογισμένο ποσό συνεδρίας:

VAT = amount charged x (VAT rate / 100)

Το ποσό ΦΠΑ εμφανίζεται ξεχωριστά στο διάλογο πληρωμής ώστε ο ταμίας να μπορεί να δει την ανάλυση του φόρου.

Λειτουργίες Τιμολόγησης Προπληρωμένων

Όπως περιγράφεται στη Διαχείριση Συνεδριών, οι προπληρωμένες συνεδρίες υποστηρίζουν δύο λειτουργίες τιμολόγησης:

Κλείδωμα κατά την Αγορά

Όταν ξεκινά μια προπληρωμένη συνεδρία, η εκκαθάριση "έναρξης" κλειδώνει το ποσό χρέωσης. Για τη διάρκεια της συνεδρίας:

  • Ο χρόνος λήξης της συνεδρίας είναι σταθερός βάσει των αγορασμένων λεπτών.
  • Ακόμα κι αν το πρόγραμμα τιμολόγησης αλλάξει, η συνεδρία συνεχίζεται μέχρι να λήξει ο κλειδωμένος χρόνος.
  • Η εκκαθάριση σταματήματος χρησιμοποιεί το κλειδωμένο ποσό από την εκκαθάριση έναρξης.

Ζωντανό Πρόγραμμα

Ο υπόλοιπος χρόνος της συνεδρίας επαναϋπολογίζεται συνεχώς καθώς αλλάζουν οι ζώνες τιμολόγησης:

  • Αν η συνεδρία εισέλθει σε φθηνότερη ζώνη, ο υπόλοιπος χρόνος επεκτείνεται (ο πελάτης παίρνει περισσότερα λεπτά για τα χρήματά του).
  • Αν η συνεδρία εισέλθει σε ακριβότερη ζώνη, ο υπόλοιπος χρόνος συρρικνώνεται.
  • Η εκκαθάριση σταματήματος αντικατοπτρίζει την πραγματική τιμολόγηση που εφαρμόστηκε καθ' όλη τη διάρκεια της συνεδρίας.

Δεκαδικά Ψηφία

Ο αριθμός των δεκαδικών ψηφίων που χρησιμοποιούνται για την εμφάνιση νομισμάτων είναι ρυθμιζόμενος (2--4 δεκαδικά ψηφία). Αυτό επηρεάζει το πώς εμφανίζονται τα ποσά στο UI αλλά δεν αλλάζει τους εσωτερικούς υπολογισμούς μικρών μονάδων.

Παράδειγμα: Με 2 δεκαδικά ψηφία, $3.50 εμφανίζεται ως "3.50". Με 3 δεκαδικά ψηφία, θα εμφανιζόταν ως "3.500".

Πρακτικά Παραδείγματα

Παράδειγμα 1: Απλή Μεταπληρωμένη Συνεδρία

  • Βασική τιμή: $3.00/ώρα (300 μικρές μονάδες)
  • Πρόγραμμα: Κανονική ζώνη (πολλαπλασιαστής 1.0) όλη μέρα
  • Συνεδρία: 10:00 π.μ. έως 11:30 π.μ. (90 λεπτά)
  • Χρέωση εκκίνησης: $0.50

Υπολογισμός:

Τμήμα 1: (300 * 1.0 * 5400) / 3600 = 450 μικρές μονάδες ($4.50)
Σύνολο: max($4.50, $0.50) = $4.50

Παράδειγμα 2: Συνεδρία που Εκτείνεται σε Δύο Ζώνες

  • Βασική τιμή: $4.00/ώρα (400 μικρές μονάδες)
  • Πρόγραμμα: Κανονική (1.0) από 10:00--12:00, Happy Hour (0.5) από 12:00--14:00
  • Συνεδρία: 11:00 π.μ. έως 1:00 μ.μ. (120 λεπτά)
  • Χρέωση εκκίνησης: $1.00

Υπολογισμός:

Τμήμα 1 (11:00-12:00, κανονική): (400 * 1.0 * 3600) / 3600 = 400 ($4.00)
Τμήμα 2 (12:00-13:00, happy hour): (400 * 0.5 * 3600) / 3600 = 200 ($2.00)
Σύνολο: $4.00 + $2.00 = $6.00
Τελικό: max($6.00, $1.00) = $6.00

Παράδειγμα 3: Συνεδρία με Παύση

  • Βασική τιμή: $2.00/ώρα (200 μικρές μονάδες)
  • Πρόγραμμα: Κανονική ζώνη (πολλαπλασιαστής 1.0) όλη μέρα
  • Συνεδρία: Έναρξη 10:00, Παύση 10:30, Συνέχιση 11:00, Σταμάτημα 11:45
  • Χρέωση εκκίνησης: $0.50

Υπολογισμός:

Τμήμα 1 (10:00-10:30, ενεργό): (200 * 1.0 * 1800) / 3600 = 100 ($1.00)
Περίοδος παύσης (10:30-11:00): χωρίς χρέωση
Τμήμα 2 (11:00-11:45, ενεργό): (200 * 1.0 * 2700) / 3600 = 150 ($1.50)
Σύνολο: $1.00 + $1.50 = $2.50
Τελικό: max($2.50, $0.50) = $2.50

Επόμενα Βήματα