HandyCafe Docs
owner

Oturum Fiyatlandırması

HandyCafe, internet kafenizde veya oyun merkezinizde oturum maliyetlerini hesaplamak için segment tabanlı bir fiyatlandırma motoru kullanır. Tüm oturum için tek bir sabit oran uygulamak yerine, motor her oturumu kendi fiyatlandırma bağlamına sahip segmentlere böler. Bu yaklaşım, oturumlar birden fazla zaman dilimine yayıldığında, fiyat değişiklikleri, duraklamalar veya bağlantı kesilmeleri olduğunda bile doğru faturalandırma sağlar.

Temel Kavramlar

Detaylara girmeden önce, işte anahtar terimler:

Terim Tanım
Temel saatlik ücret Herhangi bir çarpan uygulanmadan önceki saat başı fiyat. Ayarlar > Fiyatlandırma bölümünde ayarlanır.
Fiyatlandırma dilimi Belirli bir çarpana sahip adlandırılmış bir zaman dilimi. Her biri renk kodlu 8 dilim vardır.
Çarpan Temel orana uygulanan bir faktör. 1.0 = standart fiyat, 0.5 = yarı fiyat, 2.0 = iki katı fiyat.
Segment Fiyatlandırma bağlamının (dilim, çarpan, temel fiyat) değişmediği bir oturum içindeki kesintisiz süre.
Hesaplama Bir oturum sona erdiğinde müşterinin ne kadar borçlu olduğunu belirleyen nihai hesaplama.

Temel Saatlik Ücret

Temel saatlik ücret, tüm fiyatlandırma hesaplamalarının temelidir. Ayarlar > Fiyatlandırma bölümünde ayarlanır ve PC kullanımının saat başı standart fiyatını temsil eder.

Tüm iç hesaplamalar küçük para birimi birimlerini kullanır (örneğin, USD için sent, TRY için kuruş). Eğer temel ücret saatte 3.00 $ ise, iç değer 300'dür. Bu, kayan nokta yuvarlama sorunlarını ortadan kaldırır.

Çift Para Birimi Desteği

HandyCafe, bir temel para birimi ve bir yerel para birimi ile bir döviz (FX) kuru destekler. Uluslararası fiyatlandırmanın yerel fiyatlandırmadan farklı olduğu bir ülkede faaliyet gösteriyorsanız:

  • Temel para birimi. İç fiyatlandırma hesaplamaları için kullanılan para birimi.
  • Yerel para birimi. Müşterilere gösterilen ve ödemelerde kullanılan para birimi.
  • FX kuru. Temel ve yerel para birimleri arasındaki dönüşüm faktörü.

Her iki para birimi de aynıysa, FX kuru 1.0 olarak kabul edilir ve etkisi olmaz.

Fiyatlandırma Dilimleri

8 renk kodlu fiyatlandırma dilimi vardır, her biri farklı bir fiyatlandırma katmanını temsil eder:

Dilim Renk Tipik Kullanım
Mavi Mavi Standart oran
Turuncu Turuncu Akşam veya hafta sonu ek ücreti
Kırmızı Kırmızı Yoğun saatler primi
Yeşil Yeşil Yoğun olmayan saat indirimi
Turkuaz Turkuaz Öğrenci veya üye oranı
Gri Gri Tatil veya özel fiyatlandırma
Camgöbeği Camgöbeği Gece oranı
Zümrüt Zümrüt Promosyon oranı

Her dilimin üç özelliği vardır:

  1. Ad. Tanımlayıcı bir etiket (örneğin, "Yoğun Saatler" veya "Gece İndirimi").
  2. Çarpan. Temel oranı değiştiren ondalık bir değer. Yaygın değerler arasında 1.0 (standart), 0.5 (yarı fiyat), 1.5 (%50 ek ücret), 2.0 (iki katı fiyat) bulunur. Çarpan sıfır veya pozitif olmalıdır.
  3. Program verisi. Dilimin hangi günlerin hangi saatlerinde geçerli olduğunu tanımlayan dahili bir temsil. Bu, program ızgarası aracılığıyla otomatik olarak yönetilir.

Dilimler bireysel olarak etkinleştirilebilir veya devre dışı bırakılabilir. Devre dışı bırakılan dilimler fiyatlandırma motoru tarafından göz ardı edilir.

Program Izgarası

Fiyatlandırma programı, 7 günlük ve 24 saatlik bir matristir (toplamda 168 bir saatlik blok). Her blok bir fiyatlandırma dilimine atanır. Program, herhangi bir anda hangi çarpanın uygulanacağını belirler.

Izgara, Ayarlar > Fiyatlandırma Programı bölümünde yapılandırılır. Günler Pazartesi'den Pazar'a kadar ve saatler 00:00'dan 23:00'e kadar uzanır. Bir zaman bloğuna bir dilim atamak için, ızgaradaki bloğu seçin ve istenen dilim rengini seçin.

Motorun Programı Okuma Şekli

Dahili olarak, her saat bloğu program verisindeki bir konuma eşlenir. Motor, herhangi bir gün ve saat için hangi dilimin aktif olduğunu belirlemek için her etkin dilimin program verilerini kontrol eder.

Belirli bir saat için hiçbir dilimin biti ayarlanmamışsa, motor temel oran ve 1.0 çarpanı ile geri döner.

Fiyatlandırma programı özelliği tamamen devre dışı bırakıldığında (Ayarlar > Fiyatlandırma'da), tüm oturumlar zaman fark etmeksizin 1.0 çarpanı ile temel oranı kullanır.

Fiyatlandırma Segmentleri

Bir segment, bir oturum içindeki fiyatlandırma bağlamının değişmediği kesintisiz bir zaman dilimidir. Fiyatlandırma motoru, bu sınır olaylarından herhangi biri gerçekleştiğinde yeni bir segment oluşturur:

Sınır Tetikleyici
session_start Yeni bir oturum başlar
session_stop Oturum durdurulur
pause Kasiyer oturumu duraklatır
resume Kasiyer duraklatılmış oturumu devam ettirir
tick Saat, farklı bir fiyatlandırma dilimine geçer
disconnect İstemci PC ağ bağlantısını kaybeder
offline İstemci PC çevrimdışı olur
load_recovery Sunucu yeniden başlar ve çalışan bir oturumu kurtarır

Her segment şunları kaydeder:

Alan Açıklama
session_id Bu segmentin ait olduğu oturum
segment_start Segmentin başladığı Unix zaman damgası
segment_end Segmentin sona erdiği Unix zaman damgası (hala açıksa null)
pricing_slot_id Aktif fiyatlandırma diliminin ID'si (örneğin, "mavi", "kırmızı" veya "temel")
multiplier Fiyatlandırma diliminden gelen çarpan değeri
base_price_snapshot Segment açıldığında yakalanan temel saatlik ücret
amount Bu segment için hesaplanan maliyet (segment kapandığında ayarlanır)
boundary_reason Bu segmentin neden oluşturulduğu

Temel Fiyatı Neden Anlık Görüntüleyelim?

base_price_snapshot, segment açıldığında geçerli olan temel saatlik ücreti yakalar. Bu kritik bir adımdır çünkü bir yönetici oturum sırasında temel ücreti değiştirebilir. Anlık görüntüleme sayesinde, her segment başladığında geçerli olan oranı kullanır, bu da adil ve denetlenebilir faturalandırmayı sağlar.

Maliyet Formülü

Tek bir segmentin maliyeti şu şekilde hesaplanır:

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

Daha kesin olarak, motor kayan nokta hatalarını önlemek için ölçeklenmiş tamsayı aritmetiği kullanır:

  1. Çarpan, sabit noktalı bir tamsayıya ölçeklenir (1,000,000 ile çarpılır).
  2. Hesaplama tamamen 128 bit tamsayılarla yapılır.
  3. Tavan bölme kullanılır. Sonuç her zaman bir sonraki küçük birime yuvarlanır.

Dakikalarla Hesaplama

Eğer "dakikalarla hesapla" seçeneği Ayarlar > Fiyatlandırma'da etkinleştirilmişse, formül biraz değişir:

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

Burada used_minutes = ceil(duration_seconds / 60). Bu, herhangi bir kısmi dakikanın tam dakika olarak sayıldığı anlamına gelir.

Oturum Toplam Hesaplaması

Toplam oturum maliyeti üç adımda hesaplanır:

Adım 1: Tüm Segmentleri Topla

raw_total = tüm kapalı segment miktarlarının toplamı + açık segment kısmi miktarı

Açık segment kısmi miktarı, yukarıdaki formül kullanılarak mevcut zaman damgası segment sonu olarak alınarak gerçek zamanlı hesaplanır.

Adım 2: Yuvarlama Uygula

rounded_total = round_up(raw_total, rounding_step)

Yuvarlama her zaman yukarı (tavan) yapılır, bu da geliri korur. Yuvarlama adımı Ayarlar > Fiyatlandırma'da yapılandırılabilir. Örneğin, yuvarlama adımı 50 (2 ondalık basamaklı bir para biriminde 0.50 $ temsil eder) ise, 3.27 $'lık ham toplam 3.50 $'a yuvarlanır.

Adım 3: Başlangıç Ücreti Minimumunu Uygula

final_total = max(rounded_total, startup_fee)

Başlangıç ücreti, herhangi bir oturum için minimum ücrettir, süreye bakılmaksızın. Yuvarlanmış toplam başlangıç ücretinden azsa, başlangıç ücreti yerine alınır.

Hesaplama

Hesaplama, bir oturumun faturalandırmasını nihai hale getirme sürecidir. İki hesaplama aşaması vardır:

Başlangıç Hesaplaması (Sadece Ön Ödemeli)

Bir ön ödemeli oturum başladığında, bir "başlangıç" hesaplama kaydı oluşturulur. Bu, şunları yakalar:

  • Hesaplanan maliyet. Satın alınan süre için sistem tarafından hesaplanan maliyet.
  • Tahsil edilen miktar. Müşterinin gerçekten ödediği miktar (genellikle hesaplanan maliyetle aynıdır).

"Satın Alma Anında Kilitle" ön ödemeli modunda, bu kilitli miktar, oturum sırasında fiyat değişikliklerinden bağımsız olarak oturumun maliyetini belirler.

Durdurma Hesaplaması

Herhangi bir oturum (ön ödemeli veya sonradan ödemeli) durdurulduğunda, bir "durdurma" hesaplama kaydı oluşturulur:

Alan Açıklama
Hesaplanan maliyet Tüm fiyatlandırma segmentlerinden sistem tarafından hesaplanan toplam
Tahsil edilen miktar Gerçekten tahsil edilen miktar (varsayılan olarak hesaplanan maliyet)
Manuel ayarlanmış miktar Kasiyer fiyatı manuel olarak ayarladıysa, orijinal hesaplanan maliyet burada korunur
Komisyon oranı Ödeme yöntemi komisyon oranı (yüzde olarak)
komisyon ücreti Hesaplanan komisyon miktarı
sabit ücret Ödeme yöntemi sabit ücreti
hesaplanmış zaman çizelgesi anlık görüntüsü Oturumdaki her fiyatlandırma segmentinin JSON kaydı

Zaman çizelgesi anlık görüntüsü, maliyetin segment segment nasıl hesaplandığını tam olarak gösteren eksiksiz bir denetim izi sağlar.

Ödeme Yöntemi Ücretleri

Her ödeme yöntemi iki tür ücrete sahip olabilir:

Komisyon (Baz Puanlar)

Komisyon oranı yüzde olarak ifade edilir. Komisyon ücreti, bu oranı tahsil edilen miktara uygulayarak hesaplanır.

Örnek: Tahsil edilen miktar 10.00 $ (1000 küçük birim) ve ödeme yöntemi %2.5 komisyon oranına sahipse, komisyon ücreti 0.25 $ (25 küçük birim) olur.

Sabit Ücret

Miktardan bağımsız olarak, işlem başına kesilen sabit bir ücret. Örneğin, kredi kartı işleme ücreti 0.30 $.

Her iki ücret de bilgilendiricidir. İşletmenin bu ödeme yöntemini kabul etme maliyetini temsil ederler. Hesaplamada kaydedilirler ancak müşterinin faturasına eklenmezler.

KDV (Katma Değer Vergisi)

KDV, Ayarlar > Fiyatlandırma bölümünde yüzde olarak (0--100%) yapılandırılır. Hesaplanan oturum miktarının üzerine uygulanır:

KDV = tahsil edilen miktar x (KDV oranı / 100)

KDV miktarı, ödeme diyalogunda ayrı olarak gösterilir, böylece kasiyer vergi dökümünü görebilir.

Ön Ödemeli Fiyatlandırma Modları

Oturum Yönetimi bölümünde açıklandığı gibi, ön ödemeli oturumlar iki fiyatlandırma modunu destekler:

Satın Alma Anında Kilitle

Bir ön ödemeli oturum başladığında, "başlangıç" hesaplama tahsil edilen miktarı kilitler. Oturum süresince:

  • Oturum bitiş süresi satın alınan dakikalara göre sabitlenir.
  • Fiyatlandırma programı değişse bile, oturum kilitli süre bitene kadar devam eder.
  • Durdurma hesaplaması, başlangıç hesaplamasındaki kilitli miktarı kullanır.

Canlı Program

Oturumun kalan süresi, fiyatlandırma dilimleri değiştikçe sürekli olarak yeniden hesaplanır:

  • Oturum daha ucuz bir dilime girerse, kalan süre uzar (müşteri parasına daha fazla dakika alır).
  • Oturum daha pahalı bir dilime girerse, kalan süre kısalır.
  • Durdurma hesaplaması, oturum boyunca uygulanan gerçek fiyatlandırmayı yansıtır.

Ondalık Basamaklar

Para birimi görüntüleme için kullanılan ondalık basamak sayısı yapılandırılabilir (2--4 ondalık basamak). Bu, miktarların kullanıcı arayüzünde nasıl görüntüleneceğini etkiler ancak iç küçük birim hesaplamalarını değiştirmez.

Örnek: 2 ondalık basamakla, 3.50 $ "3.50" olarak görüntülenir. 3 ondalık basamakla, "3.500" olarak görüntülenir.

Pratik Örnekler

Örnek 1: Basit Sonradan Ödemeli Oturum

  • Temel oran: 3.00 $/saat (300 küçük birim)
  • Program: Tüm gün standart dilim (çarpan 1.0)
  • Oturum: 10:00 - 11:30 (90 dakika)
  • Başlangıç ücreti: 0.50 $

Hesaplama:

Segment 1: (300 * 1.0 * 5400) / 3600 = 450 küçük birim (4.50 $)
Toplam: max(4.50 $, 0.50 $) = 4.50 $

Örnek 2: İki Dilimi Kapsayan Oturum

  • Temel oran: 4.00 $/saat (400 küçük birim)
  • Program: 10:00--12:00 arası Standart (1.0), 12:00--14:00 arası Mutlu Saat (0.5)
  • Oturum: 11:00 - 13:00 (120 dakika)
  • Başlangıç ücreti: 1.00 $

Hesaplama:

Segment 1 (11:00-12:00, standart): (400 * 1.0 * 3600) / 3600 = 400 (4.00 $)
Segment 2 (12:00-13:00, mutlu saat): (400 * 0.5 * 3600) / 3600 = 200 (2.00 $)
Toplam: 4.00 $ + 2.00 $ = 6.00 $
Son: max(6.00 $, 1.00 $) = 6.00 $

Örnek 3: Duraklatılmış Oturum

  • Temel oran: 2.00 $/saat (200 küçük birim)
  • Program: Tüm gün standart dilim (çarpan 1.0)
  • Oturum: Başlangıç 10:00, Duraklat 10:30, Devam 11:00, Durdur 11:45
  • Başlangıç ücreti: 0.50 $

Hesaplama:

Segment 1 (10:00-10:30, aktif): (200 * 1.0 * 1800) / 3600 = 100 (1.00 $)
Duraklatılmış dönem (10:30-11:00): ücret yok
Segment 2 (11:00-11:45, aktif): (200 * 1.0 * 2700) / 3600 = 150 (1.50 $)
Toplam: 1.00 $ + 1.50 $ = 2.50 $
Son: max(2.50 $, 0.50 $) = 2.50 $

Sonraki Adımlar