HandyCafe Docs
owner

سیشن قیمتیں

HandyCafe آپ کے انٹرنیٹ کیفے یا گیمنگ سینٹر میں سیشن کی قیمتوں کا حساب لگانے کے لئے سیگمنٹ پر مبنی قیمتوں کے انجن کا استعمال کرتا ہے۔ پورے سیشن کے لئے ایک ہی فلیٹ ریٹ لاگو کرنے کے بجائے، انجن ہر سیشن کو سیگمنٹس میں تقسیم کرتا ہے، ہر ایک کے ساتھ اپنی قیمتوں کا سیاق و سباق ہوتا ہے۔ یہ طریقہ کار درست بلنگ کو یقینی بناتا ہے یہاں تک کہ جب سیشنز متعدد وقت کے سلاٹس، قیمتوں میں تبدیلی، وقفے، یا ڈس کنکشنز کے دوران ہوتے ہیں۔

بنیادی تصورات

تفصیلات میں جانے سے پہلے، یہاں کلیدی اصطلاحات ہیں:

اصطلاح تعریف
بنیادی گھنٹہ وار ریٹ کسی بھی ملٹی پلائر کے اطلاق سے پہلے فی گھنٹہ کی قیمت۔ سیٹنگز > قیمتوں میں سیٹ کریں۔
قیمتوں کا سلاٹ ایک مخصوص ملٹی پلائر کے ساتھ نامزد وقت کی مدت۔ 8 سلاٹس ہیں، ہر ایک رنگ کوڈڈ ہے۔
ملٹی پلائر بنیادی ریٹ پر لاگو ہونے والا عنصر۔ 1.0 = معیاری قیمت، 0.5 = نصف قیمت، 2.0 = دوگنا قیمت۔
سیگمنٹ سیشن کے اندر ایک مسلسل مدت جہاں قیمتوں کا سیاق و سباق (سلاٹ، ملٹی پلائر، بنیادی قیمت) تبدیل نہیں ہوتا۔
سیٹلمنٹ حتمی حساب جو طے کرتا ہے کہ سیشن کے اختتام پر کسٹمر کو کتنا واجب الادا ہے۔

بنیادی گھنٹہ وار ریٹ

بنیادی گھنٹہ وار ریٹ تمام قیمتوں کے حسابات کی بنیاد ہے۔ یہ سیٹنگز > قیمتوں میں سیٹ کیا جاتا ہے اور پی سی کے استعمال کی فی گھنٹہ معیاری قیمت کی نمائندگی کرتا ہے۔

تمام داخلی حسابات معمولی کرنسی یونٹس کا استعمال کرتے ہیں (مثال کے طور پر، USD کے لئے سینٹس، TRY کے لئے کروش)۔ اگر آپ کا بنیادی ریٹ $3.00 فی گھنٹہ ہے، تو داخلی قیمت 300 ہے۔ یہ فلوٹنگ پوائنٹ راؤنڈنگ کے مسائل کو ختم کرتا ہے۔

دوہری کرنسی کی حمایت

HandyCafe ایک بنیادی کرنسی اور ایک مقامی کرنسی کے ساتھ ایکسچینج (FX) ریٹ کی حمایت کرتا ہے۔ اگر آپ ایسے ملک میں کام کرتے ہیں جہاں بین الاقوامی قیمتیں مقامی قیمتوں سے مختلف ہوتی ہیں:

  • بنیادی کرنسی۔ داخلی قیمتوں کے حسابات کے لئے استعمال ہونے والی کرنسی۔
  • مقامی کرنسی۔ وہ کرنسی جو صارفین کو دکھائی جاتی ہے اور ادائیگیوں کے لئے استعمال ہوتی ہے۔
  • FX ریٹ۔ بنیادی اور مقامی کرنسیوں کے درمیان تبدیلی کا عامل۔

اگر دونوں کرنسیاں ایک جیسی ہیں، تو FX ریٹ کو 1.0 سمجھا جاتا ہے اور اس کا کوئی اثر نہیں ہوتا۔

قیمتوں کے سلاٹس

8 رنگ کوڈڈ قیمتوں کے سلاٹس ہیں، ہر ایک مختلف قیمتوں کی سطح کی نمائندگی کرتا ہے:

سلاٹ رنگ عام استعمال
نیلا نیلا معیاری ریٹ
نارنجی نارنجی شام یا ویک اینڈ سرچارج
سرخ سرخ پیک اوقات کا پریمیم
سبز سبز آف پیک ڈسکاؤنٹ
نیلا سبز نیلا سبز طالب علم یا ممبر ریٹ
سرمئی سرمئی تعطیلات یا خصوصی قیمتیں
فیروزی فیروزی رات کا ریٹ
زمرد زمرد پروموشنل ریٹ

ہر سلاٹ کی تین خصوصیات ہیں:

  1. نام۔ ایک وضاحتی لیبل (مثال کے طور پر، "پیک اوقات" یا "رات کا ڈسکاؤنٹ")۔
  2. ملٹی پلائر۔ ایک اعشاریہ قیمت جو بنیادی ریٹ کو تبدیل کرتی ہے۔ عام قیمتیں شامل ہیں 1.0 (معیاری)، 0.5 (نصف قیمت)، 1.5 (50% سرچارج)، 2.0 (دوگنا قیمت)۔ ملٹی پلائر صفر یا مثبت ہونا چاہئے۔
  3. شیڈول ڈیٹا۔ ایک داخلی نمائندگی جو طے کرتی ہے کہ کون سے دنوں کے کون سے گھنٹے سلاٹ پر لاگو ہوتے ہیں۔ یہ شیڈول گرڈ کے ذریعے خودکار طور پر منظم کیا جاتا ہے۔

سلاٹس کو انفرادی طور پر فعال یا غیر فعال کیا جا سکتا ہے۔ غیر فعال سلاٹس کو قیمتوں کے انجن کے ذریعہ نظر انداز کیا جاتا ہے۔

شیڈول گرڈ

قیمتوں کا شیڈول ایک 7 دن کا 24 گھنٹے کا میٹرکس ہے (کل 168 ایک گھنٹہ بلاکس)۔ ہر بلاک کو ایک قیمتوں کے سلاٹ کے لئے تفویض کیا جاتا ہے۔ شیڈول طے کرتا ہے کہ کسی بھی لمحے کون سا ملٹی پلائر لاگو ہوتا ہے۔

گرڈ سیٹنگز > قیمتوں کے شیڈول میں ترتیب دیا گیا ہے۔ دن پیر سے اتوار تک چلتے ہیں اور گھنٹے 00:00 سے 23:00 تک چلتے ہیں۔ کسی وقت بلاک کو سلاٹ تفویض کرنے کے لئے، گرڈ میں بلاک کو منتخب کریں اور مطلوبہ سلاٹ رنگ منتخب کریں۔

انجن شیڈول کو کیسے پڑھتا ہے

داخلی طور پر، ہر گھنٹہ بلاک شیڈول ڈیٹا میں ایک پوزیشن پر نقشہ بناتا ہے۔ انجن ہر فعال سلاٹ کے شیڈول ڈیٹا کو چیک کرتا ہے تاکہ یہ طے کیا جا سکے کہ کسی بھی دن اور گھنٹے کے لئے کون سا سلاٹ فعال ہے۔

اگر کسی دیے گئے گھنٹے کے لئے کسی سلاٹ کا بٹ سیٹ نہیں ہے، تو انجن بنیادی ریٹ کے ساتھ 1.0 ملٹی پلائر پر واپس آتا ہے۔

جب قیمتوں کا شیڈول فیچر مکمل طور پر غیر فعال ہوتا ہے (سیٹنگز > قیمتوں میں)، تو تمام سیشنز بنیادی ریٹ کے ساتھ 1.0 ملٹی پلائر استعمال کرتے ہیں قطع نظر وقت کے۔

قیمتوں کے سیگمنٹس

ایک سیگمنٹ سیشن کے اندر ایک مسلسل وقت کی مدت ہے جہاں قیمتوں کا سیاق و سباق تبدیل نہیں ہوتا۔ قیمتوں کا انجن جب بھی ان حدود کے واقعات میں سے کوئی واقع ہوتا ہے تو ایک نیا سیگمنٹ بناتا ہے:

حد ٹریگر
session_start ایک نیا سیشن شروع ہوتا ہے
session_stop سیشن کو روکا جاتا ہے
pause کیشیئر سیشن کو روکتا ہے
resume کیشیئر ایک روکا ہوا سیشن دوبارہ شروع کرتا ہے
tick گھڑی ایک گھنٹہ کی حد کو عبور کرتی ہے اور ایک مختلف قیمتوں کے سلاٹ میں داخل ہوتی ہے
disconnect کلائنٹ پی سی اپنی نیٹ ورک کنکشن کھو دیتا ہے
offline کلائنٹ پی سی آف لائن ہو جاتا ہے
load_recovery سرور دوبارہ شروع ہوتا ہے اور ایک چلتا ہوا سیشن بحال کرتا ہے

ہر سیگمنٹ ریکارڈ کرتا ہے:

فیلڈ وضاحت
session_id وہ سیشن جس سے یہ سیگمنٹ تعلق رکھتا ہے
segment_start یونکس ٹائم اسٹیمپ جب سیگمنٹ شروع ہوا
segment_end یونکس ٹائم اسٹیمپ جب سیگمنٹ ختم ہوا (اگر ابھی بھی کھلا ہے تو null)
pricing_slot_id فعال قیمتوں کے سلاٹ کا ID (مثال کے طور پر، "نیلا"، "سرخ"، یا "بنیادی")
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 بٹ انٹیجرز میں کیا جاتا ہے۔
  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 ہے (2 فریکشن ڈیجٹس والی کرنسی میں $0.50 کی نمائندگی کرتا ہے)، تو $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۔

دونوں فیسیں معلوماتی ہیں۔ وہ اس ادائیگی کے طریقہ کار کو قبول کرنے کے کاروبار کی لاگت کی نمائندگی کرتی ہیں۔ وہ سیٹلمنٹ میں ریکارڈ کی جاتی ہیں لیکن کسٹمر کے بل میں شامل نہیں کی جاتی ہیں۔

VAT (ویلیو ایڈڈ ٹیکس)

VAT کو سیٹنگز > قیمتوں میں فیصد (0--100%) کے طور پر ترتیب دیا جاتا ہے۔ یہ حساب شدہ سیشن کی رقم کے اوپر لاگو ہوتا ہے:

VAT = amount charged x (VAT rate / 100)

VAT کی رقم ادائیگی کے ڈائیلاگ میں الگ سے دکھائی جاتی ہے تاکہ کیشیئر ٹیکس کی تفصیل دیکھ سکے۔

پری پیڈ قیمتوں کے موڈز

جیسا کہ سیشن مینجمنٹ میں بیان کیا گیا ہے، پری پیڈ سیشنز دو قیمتوں کے موڈز کی حمایت کرتے ہیں:

لاک ایٹ پرچیز

جب ایک پری پیڈ سیشن شروع ہوتا ہے، تو "اسٹارٹ" سیٹلمنٹ چارج کی گئی رقم کو لاک کر دیتا ہے۔ سیشن کے دورانیہ کے لئے:

  • سیشن کا اختتامی وقت خریدے گئے منٹوں کی بنیاد پر مقرر ہوتا ہے۔
  • یہاں تک کہ اگر قیمتوں کا شیڈول تبدیل ہوتا ہے، سیشن لاک شدہ وقت کے ختم ہونے تک جاری رہتا ہے۔
  • اسٹاپ سیٹلمنٹ اسٹارٹ سیٹلمنٹ سے لاک شدہ رقم کا استعمال کرتا ہے۔

لائیو شیڈول

سیشن کا باقی وقت مسلسل دوبارہ حساب کیا جاتا ہے جیسے ہی قیمتوں کے سلاٹس تبدیل ہوتے ہیں:

  • اگر سیشن ایک سستا سلاٹ میں داخل ہوتا ہے، تو باقی وقت بڑھ جاتا ہے (کسٹمر کو ان کے پیسے کے لئے زیادہ منٹ ملتے ہیں)۔
  • اگر سیشن ایک زیادہ مہنگے سلاٹ میں داخل ہوتا ہے، تو باقی وقت سکڑ جاتا ہے۔
  • اسٹاپ سیٹلمنٹ پورے سیشن کے دوران لاگو کی گئی اصل قیمتوں کی عکاسی کرتا ہے۔

فریکشن ڈیجٹس

کرنسی کی نمائش کے لئے استعمال ہونے والے اعشاریہ مقامات کی تعداد قابل ترتیب ہے (2--4 فریکشن ڈیجٹس)۔ یہ UI میں نمائش کے طریقے کو متاثر کرتا ہے لیکن داخلی معمولی یونٹ کے حسابات کو تبدیل نہیں کرتا۔

مثال: 2 فریکشن ڈیجٹس کے ساتھ، $3.50 "3.50" کے طور پر دکھایا جاتا ہے۔ 3 فریکشن ڈیجٹس کے ساتھ، یہ "3.500" کے طور پر دکھایا جائے گا۔

عملی مثالیں

مثال 1: سادہ پوسٹ پیڈ سیشن

  • بنیادی ریٹ: $3.00/گھنٹہ (300 معمولی یونٹس)
  • شیڈول: معیاری سلاٹ (ملٹی پلائر 1.0) پورا دن
  • سیشن: 10:00 AM سے 11:30 AM (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، ہیپی آور (0.5) 12:00--14:00
  • سیشن: 11:00 AM سے 1:00 PM (120 منٹ)
  • اسٹارٹ اپ فیس: $1.00

حساب:

سیگمنٹ 1 (11:00-12:00، معیاری): (400 * 1.0 * 3600) / 3600 = 400 ($4.00)
سیگمنٹ 2 (12:00-13:00، ہیپی آور): (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

اگلے مراحل