HandyCafe Docs
owner

सत्र मूल्य निर्धारण

HandyCafe आपके इंटरनेट कैफे या गेमिंग सेंटर में सत्र लागत की गणना करने के लिए एक खंड-आधारित मूल्य निर्धारण इंजन का उपयोग करता है। पूरे सत्र के लिए एक समान दर लागू करने के बजाय, इंजन प्रत्येक सत्र को खंडों में विभाजित करता है, प्रत्येक का अपना मूल्य निर्धारण संदर्भ होता है। यह दृष्टिकोण तब भी सटीक बिलिंग सुनिश्चित करता है जब सत्र कई समय स्लॉट, मूल्य निर्धारण में परिवर्तन, ठहराव या डिस्कनेक्शन तक फैला हो।

मूल अवधारणाएँ

विवरण में जाने से पहले, यहां मुख्य शर्तें दी गई हैं:

अवधि परिभाषा
आधार प्रति घंटा दर किसी भी गुणक को लागू करने से पहले प्रति घंटे की कीमत। सेटिंग्स > मूल्य निर्धारण में सेट करें।
मूल्य निर्धारण स्लॉट एक विशिष्ट गुणक के साथ नामित समयावधि। इसमें 8 स्लॉट हैं, प्रत्येक रंग-कोडित है।
गुणक आधार दर पर लागू एक कारक. 1.0 = मानक कीमत, 0.5 = आधी कीमत, 2.0 = दोगुनी कीमत।
खंड एक सत्र के भीतर एक सतत अवधि जहां मूल्य निर्धारण संदर्भ (स्लॉट, गुणक, आधार मूल्य) अपरिवर्तित रहता है।
बस्ती अंतिम गणना यह निर्धारित करती है कि सत्र समाप्त होने पर ग्राहक पर कितना बकाया है।

आधार प्रति घंटा दर

आधार प्रति घंटा दर सभी मूल्य निर्धारण गणनाओं का आधार है। यह सेटिंग्स > मूल्य निर्धारण में सेट है और पीसी उपयोग के प्रति घंटे मानक मूल्य का प्रतिनिधित्व करता है।

सभी आंतरिक गणना छोटी मुद्रा इकाइयों का उपयोग करती हैं (उदाहरण के लिए, यूएसडी के लिए सेंट, टीआरवाई के लिए कुरु)। यदि आपकी आधार दर $3.00 प्रति घंटा है, तो आंतरिक मूल्य 300 है। यह फ़्लोटिंग-पॉइंट राउंडिंग समस्याओं को समाप्त करता है।

दोहरी मुद्रा समर्थन

HandyCafe विनिमय (एफएक्स) दर के साथ आधार मुद्रा और स्थानीय मुद्रा का समर्थन करता है। यदि आप ऐसे देश में काम करते हैं जहां अंतर्राष्ट्रीय मूल्य निर्धारण स्थानीय मूल्य निर्धारण से भिन्न है:

  • आधार मुद्रा। आंतरिक मूल्य निर्धारण गणना के लिए उपयोग की जाने वाली मुद्रा।
  • स्थानीय मुद्रा। ग्राहकों को प्रदर्शित की जाने वाली और भुगतान के लिए उपयोग की जाने वाली मुद्रा।
  • एफएक्स दर। आधार और स्थानीय मुद्राओं के बीच रूपांतरण कारक।

यदि दोनों मुद्राएं समान हैं, तो एफएक्स दर को 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 गुणक के साथ आधार दर का उपयोग करते हैं।

मूल्य निर्धारण खंड

एक खंड एक सत्र के भीतर एक सतत समय अवधि है जहां मूल्य निर्धारण संदर्भ नहीं बदलता है। जब भी इनमें से कोई भी सीमावर्ती घटना घटित होती है, तो मूल्य निर्धारण इंजन एक नया खंड बनाता है:

सीमा ट्रिगर
सत्र_प्रारंभ एक नया सत्र शुरू होता है
सेशन_स्टॉप सत्र रोक दिया गया है
विराम खजांची ने सत्र रोक दिया
बायोडाटा कैशियर रुके हुए सत्र को फिर से शुरू करता है
टिक करें घड़ी एक घंटे की सीमा को पार कर एक अलग मूल्य निर्धारण स्लॉट में पहुंच जाती है
डिस्कनेक्ट करें क्लाइंट पीसी अपना नेटवर्क कनेक्शन खो देता है
ऑफ़लाइन क्लाइंट पीसी ऑफ़लाइन हो जाता है
लोड_रिकवरी सर्वर पुनरारंभ होता है और चल रहे सत्र को पुनर्प्राप्त करता है

प्रत्येक खंड रिकॉर्ड करता है:

| फ़ील्ड | विवरण | |-------|----|| | सत्र_आईडी | यह खंड जिस सत्र से संबंधित है | | सेगमेंट_स्टार्ट | यूनिक्स टाइमस्टैम्प जब खंड शुरू हुआ | | खंड_अंत | खंड समाप्त होने पर यूनिक्स टाइमस्टैम्प (यदि अभी भी खुला है तो शून्य) | | मूल्य निर्धारण_स्लॉट_आईडी | सक्रिय मूल्य निर्धारण स्लॉट की आईडी (उदाहरण के लिए, "नीला", "लाल", या "आधार") | | गुणक | मूल्य निर्धारण स्लॉट से गुणक मूल्य | | बेस_प्राइस_स्नैपशॉट | खंड खुलने के समय आधार प्रति घंटा की दर कैप्चर की गई | | राशि | इस खंड के लिए परिकलित लागत (खंड बंद होने पर निर्धारित) | | सीमा_कारण | यह खंड क्यों बनाया गया |

आधार मूल्य का स्नैपशॉट क्यों?

बेस_प्राइस_स्नैपशॉट सेगमेंट खुलने के ठीक उसी समय आधार प्रति घंटा की दर को कैप्चर करता है। यह महत्वपूर्ण है क्योंकि कोई व्यवस्थापक आधार दर को मध्य सत्र में बदल सकता है। स्नैपशॉटिंग द्वारा, प्रत्येक खंड उस दर का उपयोग करता है जो उसके शुरू होने पर प्रभावी थी, जिससे निष्पक्ष और श्रव्य बिलिंग सुनिश्चित होती है।

लागत सूत्र

एकल खंड की लागत की गणना इस प्रकार की जाती है:

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)

स्टार्टअप शुल्क किसी भी सत्र के लिए न्यूनतम शुल्क है, चाहे अवधि कुछ भी हो। यदि पूर्णांकित कुल स्टार्टअप शुल्क से कम है, तो इसके बदले स्टार्टअप शुल्क लिया जाता है।

निपटान

निपटान एक सत्र के लिए बिलिंग को अंतिम रूप देने की प्रक्रिया है। निपटान के दो चरण हैं:

निपटान प्रारंभ करें (केवल प्रीपेड)

जब प्रीपेड सत्र शुरू होता है, तो एक "प्रारंभ" निपटान रिकॉर्ड बनाया जाता है। यह कैप्चर करता है:

  • गणना की गई लागत। खरीदे गए समय के लिए सिस्टम-गणना की गई लागत।
  • चार्ज की गई राशि। ग्राहक द्वारा वास्तव में भुगतान की गई राशि (आमतौर पर गणना की गई लागत के समान)।

"लॉक एट परचेज़" प्रीपेड मोड के लिए, यह लॉक की गई राशि सत्र के दौरान मूल्य परिवर्तन की परवाह किए बिना सत्र की लागत निर्धारित करती है।

निपटान बंद करो

जब कोई सत्र (प्रीपेड या पोस्टपेड) रोका जाता है, तो एक "स्टॉप" निपटान रिकॉर्ड बनाया जाता है:

| फ़ील्ड | विवरण | |-------|----|| | परिकलित लागत | सभी मूल्य निर्धारण खंडों से सिस्टम-परिकलित कुल | | चार्ज की गई राशि | वास्तव में ली गई राशि (गणना की गई लागत पर डिफ़ॉल्ट) | | मैन्युअल रूप से समायोजित राशि | यदि कैशियर ने कीमत को मैन्युअल रूप से समायोजित किया है, तो मूल गणना लागत यहां संरक्षित है | | कमीशन दर | भुगतान विधि कमीशन दर (प्रतिशत के रूप में) | | कमीशन_शुल्क | परिकलित कमीशन राशि | | निश्चित_शुल्क | भुगतान विधि निश्चित शुल्क | | कंप्यूटेड_टाइमलाइन_स्नैपशॉट | सत्र में प्रत्येक मूल्य निर्धारण खंड का JSON रिकॉर्ड |

टाइमलाइन स्नैपशॉट एक संपूर्ण ऑडिट ट्रेल प्रदान करता है जो दिखाता है कि लागत की गणना कैसे की गई थी, खंड दर खंड।

भुगतान विधि शुल्क

प्रत्येक भुगतान विधि में दो प्रकार की फीस हो सकती है:

कमीशन (आधार अंक)

कमीशन दर प्रतिशत के रूप में व्यक्त की जाती है। इस दर को ली गई राशि पर लागू करके कमीशन शुल्क की गणना की जाती है।

उदाहरण: यदि चार्ज की गई राशि $10.00 (1000 छोटी इकाइयाँ) है और भुगतान विधि में 2.5% कमीशन दर है, तो कमीशन शुल्क $0.25 (25 छोटी इकाइयाँ) है।

निश्चित शुल्क

राशि की परवाह किए बिना, प्रति लेनदेन एक निश्चित शुल्क काटा जाता है। उदाहरण के लिए, क्रेडिट कार्ड प्रोसेसिंग शुल्क $0.30।

दोनों शुल्क सूचनात्मक हैं. वे उस भुगतान पद्धति को स्वीकार करने की व्यवसाय की लागत का प्रतिनिधित्व करते हैं। उन्हें निपटान में दर्ज किया जाता है लेकिन ग्राहक के बिल में नहीं जोड़ा जाता है।

वैट (मूल्य वर्धित कर)

VAT को सेटिंग्स > मूल्य निर्धारण में प्रतिशत (0--100%) के रूप में कॉन्फ़िगर किया गया है। इसे गणना की गई सत्र राशि के ऊपर लागू किया जाता है:

VAT = amount charged x (VAT rate / 100)

वैट राशि भुगतान संवाद में अलग से प्रदर्शित की जाती है ताकि कैशियर कर विवरण देख सके।

प्रीपेड मूल्य निर्धारण मोड

जैसा कि सत्र प्रबंधन में वर्णित है, प्रीपेड सत्र दो मूल्य निर्धारण मोड का समर्थन करते हैं:

खरीद पर ताला

जब प्रीपेड सत्र शुरू होता है, तो "प्रारंभ" निपटान चार्ज की गई राशि को लॉक कर देता है। सत्र की अवधि के लिए:

  • सत्र समाप्ति का समय खरीदे गए मिनटों के आधार पर तय किया जाता है।
  • भले ही मूल्य निर्धारण अनुसूची बदल जाए, सत्र तब तक जारी रहता है जब तक कि लॉक किया गया समय समाप्त नहीं हो जाता।
  • स्टॉप सेटलमेंट स्टार्ट सेटलमेंट से लॉक की गई राशि का उपयोग करता है।

लाइव शेड्यूल

मूल्य निर्धारण स्लॉट बदलते ही सत्र के शेष समय की लगातार पुनर्गणना की जाती है:

  • यदि सत्र सस्ते स्लॉट में प्रवेश करता है, तो शेष समय बढ़ जाता है (ग्राहक को अपने पैसे के लिए अधिक मिनट मिलते हैं)।
  • यदि सत्र अधिक महंगे स्लॉट में प्रवेश करता है, तो शेष समय सिकुड़ जाता है।
  • स्टॉप सेटलमेंट पूरे सत्र में लागू वास्तविक मूल्य निर्धारण को दर्शाता है।

भिन्न अंक

मुद्रा प्रदर्शन के लिए उपयोग किए जाने वाले दशमलव स्थानों की संख्या कॉन्फ़िगर करने योग्य है (2--4 अंश अंक)। यह प्रभावित करता है कि यूआई में मात्राएँ कैसे प्रदर्शित की जाती हैं लेकिन आंतरिक लघु-इकाई गणनाओं में परिवर्तन नहीं होता है।

उदाहरण: 2 भिन्न अंकों के साथ, $3.50 को "3.50" के रूप में प्रदर्शित किया जाता है। 3 भिन्न अंकों के साथ, यह "3.500" के रूप में प्रदर्शित होगा।

व्यावहारिक उदाहरण

उदाहरण 1: सरल पोस्टपेड सत्र

  • आधार दर: $3.00/घंटा (300 छोटी इकाइयाँ)
  • शेड्यूल: पूरे दिन मानक स्लॉट (गुणक 1.0)।
  • सत्र: सुबह 10:00 बजे से 11:30 बजे तक (90 मिनट)
  • स्टार्टअप शुल्क: $0.50

गणना:

Segment 1: (300 * 1.0 * 5400) / 3600 = 450 minor units ($4.50)
Total: 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 बजे से दोपहर 1:00 बजे तक (120 मिनट)
  • स्टार्टअप शुल्क: $1.00

गणना:

Segment 1 (11:00-12:00, standard): (400 * 1.0 * 3600) / 3600 = 400 ($4.00)
Segment 2 (12:00-13:00, 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

उदाहरण 3: विराम के साथ सत्र

  • आधार दर: $2.00/घंटा (200 छोटी इकाइयाँ)
  • शेड्यूल: पूरे दिन मानक स्लॉट (गुणक 1.0)।
  • सत्र: प्रारंभ 10:00, रुकें 10:30, फिर से शुरू 11:00, रुकें 11:45
  • स्टार्टअप शुल्क: $0.50

गणना:

Segment 1 (10:00-10:30, active): (200 * 1.0 * 1800) / 3600 = 100 ($1.00)
Paused period (10:30-11:00): no charge
Segment 2 (11:00-11:45, active): (200 * 1.0 * 2700) / 3600 = 150 ($1.50)
Total: $1.00 + $1.50 = $2.50
Final: max($2.50, $0.50) = $2.50

अगले कदम