Tarification des sessions
HandyCafe utilise un moteur de tarification par segments pour calculer les coûts de session dans votre cybercafé ou centre de jeux. Au lieu d'appliquer un tarif forfaitaire unique pour toute la session, le moteur divise chaque session en segments, chacun avec son propre contexte tarifaire. Cette approche garantit une facturation précise même lorsque les sessions chevauchent plusieurs créneaux horaires, changements de tarifs, pauses ou déconnexions.
Concepts cles
Avant d'entrer dans les details, voici les termes essentiels :
| Terme | Definition |
|---|---|
| Tarif horaire de base | Le prix par heure avant application de tout multiplicateur. Defini dans Parametres > Tarification. |
| Creneau tarifaire | Une periode horaire nommee avec un multiplicateur specifique. Il y a 8 creneaux, chacun code par couleur. |
| Multiplicateur | Un facteur applique au tarif de base. 1.0 = tarif standard, 0.5 = moitie prix, 2.0 = tarif double. |
| Segment | Une periode continue au sein d'une session durant laquelle le contexte tarifaire (creneau, multiplicateur, tarif de base) reste inchange. |
| Reglement | Le calcul final qui determine le montant du au client lorsqu'une session se termine. |
Tarif horaire de base
Le tarif horaire de base est la fondation de tous les calculs tarifaires. Il est defini dans Parametres > Tarification et represente le prix standard par heure d'utilisation d'un PC.
Tous les calculs internes utilisent des unites monetaires mineures (par exemple les centimes pour l'EUR ou les kurus pour le TRY). Si votre tarif de base est de 3,00 $ par heure, la valeur interne est 300. Cela elimine les problemes d'arrondi lies aux nombres a virgule flottante.
Prise en charge de la double devise
HandyCafe prend en charge une devise de base et une devise locale avec un taux de change (FX). Si vous operez dans un pays ou la tarification internationale differe de la tarification locale :
- Devise de base. La devise utilisee pour les calculs tarifaires internes.
- Devise locale. La devise affichee aux clients et utilisee pour les paiements.
- Taux FX. Le facteur de conversion entre la devise de base et la devise locale.
Si les deux devises sont identiques, le taux FX est traite comme 1.0 et n'a aucun effet.
Creneaux tarifaires
Il existe 8 creneaux tarifaires codes par couleur, representant chacun un niveau de tarification different :
| Creneau | Couleur | Utilisation type |
|---|---|---|
| Bleu | Bleu | Tarif standard |
| Orange | Orange | Supplement soiree ou week-end |
| Rouge | Rouge | Tarif premium heures de pointe |
| Vert | Vert | Remise heures creuses |
| Sarcelle | Sarcelle | Tarif etudiant ou membre |
| Gris | Gris | Tarification jour ferie ou speciale |
| Cyan | Cyan | Tarif de nuit |
| Emeraude | Emeraude | Tarif promotionnel |
Chaque creneau possede trois proprietes :
- Nom. Un libelle descriptif (par exemple "Heures de pointe" ou "Remise nocturne").
- Multiplicateur. Une valeur decimale qui modifie le tarif de base. Les valeurs courantes incluent 1.0 (standard), 0.5 (moitie prix), 1.5 (supplement de 50 %), 2.0 (tarif double). Le multiplicateur doit etre nul ou positif.
- Donnees de la grille. Une representation interne qui definit les heures et jours auxquels le creneau s'applique. Cette donnee est geree automatiquement via la grille de planification.
Les creneaux peuvent etre actives ou desactives individuellement. Les creneaux desactives sont ignores par le moteur de tarification.
La grille de planification
La grille tarifaire est une matrice de 7 jours sur 24 heures (168 blocs d'une heure au total). Chaque bloc est assigne a un creneau tarifaire. La grille determine quel multiplicateur s'applique a un moment donne.
La grille est configuree dans Parametres > Grille tarifaire. Les jours vont du lundi au dimanche et les heures de 00h00 a 23h00. Pour assigner un creneau a un bloc horaire, selectionnez le bloc dans la grille et choisissez la couleur de creneau souhaitee.
Fonctionnement du moteur avec la grille
En interne, chaque bloc horaire correspond a une position dans les donnees de la grille. Le moteur verifie les donnees de chaque creneau active pour determiner quel creneau est actif pour un jour et une heure donnes.
Si aucun creneau n'a son indicateur active pour une heure donnee, le moteur utilise le tarif de base avec un multiplicateur de 1.0 par defaut.
Lorsque la fonctionnalite de grille tarifaire est entierement desactivee (dans Parametres > Tarification), toutes les sessions utilisent le tarif de base avec un multiplicateur de 1.0 quelle que soit l'heure.
Segments tarifaires
Un segment est une periode continue au sein d'une session durant laquelle le contexte tarifaire ne change pas. Le moteur de tarification cree un nouveau segment chaque fois que l'un de ces evenements limites se produit :
| Limite | Declencheur |
|---|---|
| session_start | Une nouvelle session commence |
| session_stop | La session est arretee |
| pause | Le caissier met la session en pause |
| resume | Le caissier reprend une session en pause |
| tick | L'horloge franchit une limite d'heure vers un creneau tarifaire different |
| disconnect | Le PC client perd sa connexion reseau |
| offline | Le PC client passe hors ligne |
| load_recovery | Le serveur redemarre et recupere une session en cours |
Chaque segment enregistre :
| Champ | Description |
|---|---|
| session_id | La session a laquelle ce segment appartient |
| segment_start | Horodatage Unix du debut du segment |
| segment_end | Horodatage Unix de la fin du segment (nul si encore ouvert) |
| pricing_slot_id | L'identifiant du creneau tarifaire actif (par exemple "blue", "red" ou "base") |
| multiplier | La valeur du multiplicateur du creneau tarifaire |
| base_price_snapshot | Le tarif horaire de base capture au moment de l'ouverture du segment |
| amount | Le cout calcule pour ce segment (defini a la cloture du segment) |
| boundary_reason | La raison de la creation de ce segment |
Pourquoi capturer le tarif de base ?
Le base_price_snapshot capture le tarif horaire de base au moment exact de l'ouverture du segment. C'est essentiel car un administrateur pourrait modifier le tarif de base en cours de session. En capturant cette valeur, chaque segment utilise le tarif en vigueur au moment de son demarrage, garantissant une facturation equitable et auditable.
Formule de calcul
Le cout d'un segment unique est calcule ainsi :
montant = arrondi_sup( (base_price_snapshot * multiplicateur * duree_en_secondes) / 3600 )
Plus precisement, le moteur utilise une arithmetique en nombres entiers mis a l'echelle pour eviter les erreurs de virgule flottante :
- Le multiplicateur est mis a l'echelle en nombre entier a virgule fixe (multiplie par 1 000 000).
- Le calcul est effectue entierement en nombres entiers de 128 bits.
- La division est arrondie au plafond. Le resultat est toujours arrondi a l'unite mineure superieure.
Calcul par minutes
Si l'option "calcul par minutes" est activee dans Parametres > Tarification, la formule change legerement :
montant = arrondi_sup( (base_price_snapshot * multiplicateur * minutes_utilisees) / 60 )
Ou minutes_utilisees = arrondi_sup(duree_en_secondes / 60). Cela signifie que toute minute entamee est comptabilisee comme une minute complete.
Calcul du total de la séance
Le cout total de la session est calcule en trois etapes :
Etape 1 : Addition de tous les segments
total_brut = somme des montants de tous les segments clos + montant partiel du segment ouvert
Le montant partiel du segment ouvert est calcule en temps reel en utilisant la formule ci-dessus avec l'horodatage actuel comme fin de segment.
Etape 2 : Application de l'arrondi
total_arrondi = arrondi_sup(total_brut, pas_arrondi)
L'arrondi est toujours au plafond (superieur) pour proteger les revenus. Le pas d'arrondi est configurable dans Parametres > Tarification. Par exemple, si le pas d'arrondi est de 50 (representant 0,50 $ dans une devise a 2 decimales), un total brut de 3,27 $ est arrondi a 3,50 $.
Etape 3 : Application du minimum des frais de demarrage
total_final = max(total_arrondi, frais_demarrage)
Les frais de demarrage constituent la facturation minimale pour toute session, quelle que soit sa duree. Si le total arrondi est inferieur aux frais de demarrage, ce sont les frais de demarrage qui sont factures.
Reglement
Le reglement est le processus de finalisation de la facturation d'une session. Il comporte deux etapes :
Reglement de demarrage (prepaye uniquement)
Lorsqu'une session prepayee commence, un enregistrement de reglement "demarrage" est cree. Il capture :
- Cout calcule. Le cout calcule par le systeme pour le temps achete.
- Montant facture. Le montant effectivement paye par le client (generalement identique au cout calcule).
Pour le mode prépayé "Verrouillage à l'achat", ce montant verrouille détermine le coût de la session indépendamment des changements tarifaires pendant la session.
Reglement d'arret
Lorsqu'une session (prepayee ou postpayee) est arretee, un enregistrement de reglement "arret" est cree :
| Champ | Description |
|---|---|
| Cout calcule | Le total calcule par le systeme a partir de tous les segments tarifaires |
| Montant facture | Le montant effectivement facture (par defaut identique au cout calcule) |
| Montant ajuste manuellement | Si le caissier a ajuste manuellement le prix, le cout calcule d'origine est conserve ici |
| Taux de commission | Taux de commission du mode de paiement (en pourcentage) |
| commission_fee | Le montant de la commission calculee |
| fixed_fee | Frais fixes du mode de paiement |
| computed_timeline_snapshot | Un enregistrement JSON de chaque segment tarifaire de la session |
L'instantane de la chronologie fournit une piste d'audit complete montrant exactement comment le cout a ete calcule, segment par segment.
Frais de mode de paiement
Chaque mode de paiement peut avoir deux types de frais :
Commission (points de base)
Le taux de commission est exprime en pourcentage. Les frais de commission sont calcules en appliquant ce taux au montant facture.
Exemple : Si le montant facture est de 10,00 $ (1000 unites mineures) et que le mode de paiement a un taux de commission de 2,5 %, les frais de commission sont de 0,25 $ (25 unites mineures).
Frais fixes
Un montant forfaitaire deduit par transaction, quel que soit le montant. Par exemple, des frais de traitement par carte bancaire de 0,30 $.
Les deux types de frais sont informatifs. Ils representent le cout pour l'entreprise d'accepter ce mode de paiement. Ils sont enregistres dans le reglement mais ne sont pas ajoutes a la facture du client.
TVA (Taxe sur la Valeur Ajoutee)
La TVA est configuree en pourcentage (0 a 100 %) dans Parametres > Tarification. Elle est appliquee en sus du montant calcule de la session :
TVA = montant facture x (taux TVA / 100)
Le montant de la TVA est affiche separement dans la boite de dialogue de paiement pour que le caissier puisse voir la ventilation fiscale.
Modes de tarification prepayee
Comme decrit dans Gestion des sessions, les sessions prepayees prennent en charge deux modes de tarification :
Verrouillage a l'achat
Lorsqu'une session prépayée démarre, le règlement de "démarrage" verrouille le montant de la facture. Pendant toute la durée de la séance :
- L'heure de fin de la session est fixee en fonction des minutes achetees.
- Meme si la grille tarifaire change, la session continue jusqu'a l'expiration du temps verrouille.
- Le reglement d'arret utilise le montant verrouille du reglement de demarrage.
Grille en temps reel
Le temps restant de la session est recalcule en continu au fil des changements de creneaux tarifaires :
- Si la session entre dans un creneau moins cher, le temps restant s'etend (le client obtient plus de minutes pour son argent).
- Si la session entre dans un creneau plus cher, le temps restant se reduit.
- Le reglement d'arret reflete la tarification effectivement appliquee tout au long de la session.
Decimales
Le nombre de decimales utilisees pour l'affichage des montants est configurable (2 a 4 decimales). Cela affecte l'affichage dans l'interface mais ne modifie pas les calculs internes en unites mineures.
Exemple : Avec 2 decimales, 3,50 $ s'affiche comme "3.50". Avec 3 decimales, il s'afficherait comme "3.500".
Exemples pratiques
Exemple 1 : Session post-payée simple
- Tarif de base : 3,00 $/heure (300 unites mineures)
- Grille : creneau standard (multiplicateur 1.0) toute la journee
- Session : de 10h00 a 11h30 (90 minutes)
- Frais de demarrage : 0,50 $
Calcul :
Segment 1 : (300 * 1.0 * 5400) / 3600 = 450 unites mineures (4,50 $)
Total : max(4,50 $, 0,50 $) = 4,50 $
Exemple 2 : Session chevauchant deux créneaux
- Tarif de base : 4,00 $/heure (400 unites mineures)
- Grille : Standard (1.0) de 10h00 à 12h00, Happy Hour (0.5) de 12h00 à 14h00
- Session : de 11h00 a 13h00 (120 minutes)
- Frais de demarrage : 1,00 $
Calcul :
Segment 1 (11h00-12h00, standard) : (400 * 1.0 * 3600) / 3600 = 400 (4,00 $)
Segment 2 (12h00-13h00, happy hour) : (400 * 0.5 * 3600) / 3600 = 200 (2,00 $)
Total : 4,00 $ + 2,00 $ = 6,00 $
Final : max(6,00 $, 1,00 $) = 6,00 $
Exemple 3 : Session avec pause
- Tarif de base : 2,00 $/heure (200 unites mineures)
- Grille : creneau standard (multiplicateur 1.0) toute la journee
- Séance : Démarrage 10h00, Pause 10h30, Reprise 11h00, Arrêt 11h45
- Frais de demarrage : 0,50 $
Calcul :
Segment 1 (10h00-10h30, actif) : (200 * 1.0 * 1800) / 3600 = 100 (1,00 $)
Periode en pause (10h30-11h00) : aucun frais
Segment 2 (11h00-11h45, actif) : (200 * 1.0 * 2700) / 3600 = 150 (1,50 $)
Total : 1,00 $ + 1,50 $ = 2,50 $
Final : max(2,50 $, 0,50 $) = 2,50 $
Etapes suivantes
- Gestion des sessions : Decouvrez le cycle de vie complet des sessions
- Parametres : Tarification : Configurez le tarif de base, l'arrondi et les frais de demarrage
- Parametres : Grille tarifaire : Configurez la grille de planification 7x24
- Modes de paiement : Configurez les modes de paiement avec commission et frais