सत्र मूल्य निर्धारण
HandyCafe आपके इंटरनेट कैफे या गेमिंग सेंटर में सत्र लागत की गणना के लिए खंड-आधारित मूल्य निर्धारण इंजन का उपयोग करता है। पूरे सत्र के लिए एकल फ्लैट दर लागू करने के बजाय, इंजन प्रत्येक सत्र को खंडों में विभाजित करता है, जिनमें से प्रत्येक का अपना मूल्य निर्धारण संदर्भ होता है। यह दृष्टिकोण सुनिश्चित करता है कि बिलिंग सटीक हो, भले ही सत्र कई समय स्लॉट्स, मूल्य परिवर्तन, विराम, या डिस्कनेक्शन में फैला हो।
मुख्य अवधारणाएँ
विवरण में जाने से पहले, यहाँ कुछ प्रमुख शब्द हैं:
| शब्द | परिभाषा |
|---|---|
| आधार प्रति घंटा दर | किसी भी गुणक के लागू होने से पहले प्रति घंटे की कीमत। सेटिंग्स > मूल्य निर्धारण में सेट करें। |
| मूल्य निर्धारण स्लॉट | एक नामित समय अवधि जिसमें एक विशिष्ट गुणक होता है। 8 स्लॉट्स होते हैं, प्रत्येक रंग-कोडित। |
| गुणक | आधार दर पर लागू एक कारक। 1.0 = मानक मूल्य, 0.5 = आधा मूल्य, 2.0 = दोगुना मूल्य। |
| खंड | सत्र के भीतर एक निरंतर अवधि जहां मूल्य निर्धारण संदर्भ (स्लॉट, गुणक, आधार मूल्य) अपरिवर्तित रहता है। |
| निपटान | अंतिम गणना जो निर्धारित करती है कि सत्र समाप्त होने पर ग्राहक कितना बकाया है। |
आधार प्रति घंटा दर
आधार प्रति घंटा दर सभी मूल्य निर्धारण गणनाओं की नींव है। इसे सेटिंग्स > मूल्य निर्धारण में सेट किया जाता है और यह पीसी उपयोग के प्रति घंटे का मानक मूल्य दर्शाता है।
सभी आंतरिक गणनाएँ माइनर मुद्रा इकाइयों का उपयोग करती हैं (उदाहरण के लिए, USD के लिए सेंट, TRY के लिए कुरुस)। यदि आपकी आधार दर $3.00 प्रति घंटा है, तो आंतरिक मूल्य 300 है। यह फ्लोटिंग-पॉइंट राउंडिंग समस्याओं को समाप्त करता है।
दोहरी मुद्रा समर्थन
HandyCafe एक आधार मुद्रा और एक स्थानीय मुद्रा को एक विनिमय (FX) दर के साथ समर्थन करता है। यदि आप ऐसे देश में काम करते हैं जहाँ अंतरराष्ट्रीय मूल्य निर्धारण स्थानीय मूल्य निर्धारण से भिन्न होता है:
- आधार मुद्रा। आंतरिक मूल्य निर्धारण गणनाओं के लिए उपयोग की जाने वाली मुद्रा।
- स्थानीय मुद्रा। ग्राहकों को प्रदर्शित की जाने वाली और भुगतान के लिए उपयोग की जाने वाली मुद्रा।
- FX दर। आधार और स्थानीय मुद्राओं के बीच रूपांतरण कारक।
यदि दोनों मुद्राएँ समान हैं, तो FX दर को 1.0 के रूप में माना जाता है और इसका कोई प्रभाव नहीं होता।
मूल्य निर्धारण स्लॉट्स
8 रंग-कोडित मूल्य निर्धारण स्लॉट्स होते हैं, जिनमें से प्रत्येक एक अलग मूल्य निर्धारण स्तर का प्रतिनिधित्व करता है:
| स्लॉट | रंग | सामान्य उपयोग |
|---|---|---|
| नीला | नीला | मानक दर |
| नारंगी | नारंगी | शाम या सप्ताहांत अधिभार |
| लाल | लाल | पीक आवर्स प्रीमियम |
| हरा | हरा | ऑफ-पीक छूट |
| टील | टील | छात्र या सदस्य दर |
| ग्रे | ग्रे | अवकाश या विशेष मूल्य निर्धारण |
| सियान | सियान | रात की दर |
| पन्ना | पन्ना | प्रचार दर |
प्रत्येक स्लॉट में तीन गुण होते हैं:
- नाम। एक वर्णनात्मक लेबल (उदाहरण के लिए, "पीक आवर्स" या "नाइट डिस्काउंट")।
- गुणक। एक दशमलव मूल्य जो आधार दर को संशोधित करता है। सामान्य मानों में 1.0 (मानक), 0.5 (आधा मूल्य), 1.5 (50% अधिभार), 2.0 (दोगुना मूल्य) शामिल हैं। गुणक शून्य या सकारात्मक होना चाहिए।
- शेड्यूल डेटा। एक आंतरिक प्रतिनिधित्व जो परिभाषित करता है कि किस दिन के किन घंटों में स्लॉट लागू होता है। इसे शेड्यूल ग्रिड के माध्यम से स्वचालित रूप से प्रबंधित किया जाता है।
स्लॉट्स को व्यक्तिगत रूप से सक्षम या अक्षम किया जा सकता है। अक्षम स्लॉट्स को मूल्य निर्धारण इंजन द्वारा अनदेखा किया जाता है।
शेड्यूल ग्रिड
मूल्य निर्धारण शेड्यूल एक 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 | यूनिक्स टाइमस्टैम्प जब खंड समाप्त हुआ (अभी भी खुला है तो शून्य) |
| pricing_slot_id | सक्रिय मूल्य निर्धारण स्लॉट की आईडी (उदाहरण के लिए, "नीला", "लाल", या "आधार") |
| multiplier | मूल्य निर्धारण स्लॉट से गुणक मूल्य |
| base_price_snapshot | खंड के खुलने के क्षण में कैप्चर की गई आधार प्रति घंटा दर |
| amount | इस खंड के लिए गणना की गई लागत (जब खंड बंद होता है तो सेट की जाती है) |
| boundary_reason | यह खंड क्यों बनाया गया था |
आधार मूल्य को स्नैपशॉट क्यों करें?
base_price_snapshot खंड के खुलने के सटीक क्षण में आधार प्रति घंटा दर को कैप्चर करता है। यह महत्वपूर्ण है क्योंकि एक व्यवस्थापक मध्य-सत्र में आधार दर बदल सकता है। स्नैपशॉटिंग द्वारा, प्रत्येक खंड उस दर का उपयोग करता है जो जब यह शुरू हुआ था, यह सुनिश्चित करते हुए कि बिलिंग निष्पक्ष और ऑडिटेबल हो।
लागत सूत्र
एकल खंड की लागत की गणना इस प्रकार की जाती है:
amount = ceil( (base_price_snapshot * multiplier * duration_seconds) / 3600 )
अधिक सटीक रूप से, इंजन फ्लोटिंग-पॉइंट त्रुटियों से बचने के लिए स्केल्ड पूर्णांक अंकगणित का उपयोग करता है:
- गुणक को एक निश्चित-बिंदु पूर्णांक में स्केल किया जाता है (1,000,000 से गुणा किया जाता है)।
- गणना पूरी तरह से 128-बिट पूर्णांकों में की जाती है।
- छत विभाजन का उपयोग किया जाता है। परिणाम हमेशा अगले माइनर यूनिट तक राउंड अप होता है।
मिनटों द्वारा गणना
यदि "मिनटों द्वारा गणना करें" विकल्प सेटिंग्स > मूल्य निर्धारण में सक्षम है, तो सूत्र थोड़ा बदल जाता है:
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 माइनर यूनिट्स)
- शेड्यूल: 10:00--12:00 से मानक (1.0), 12:00--14:00 से हैप्पी आवर (0.5)
- सत्र: 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
अगले कदम
- सत्र प्रबंधन: पूरे सत्र जीवनचक्र को जानें
- सेटिंग्स: मूल्य निर्धारण: आधार दर, राउंडिंग, और स्टार्टअप शुल्क को कॉन्फ़िगर करें
- सेटिंग्स: मूल्य निर्धारण शेड्यूल: 7x24 शेड्यूल ग्रिड सेट करें
- भुगतान विधियाँ: कमीशन और शुल्क के साथ भुगतान विधियों को कॉन्फ़िगर करें