MultiDatePick यूज़र गाइड

हर कंपोनेंट, हर सेटिंग और हर पेच, उसी क्रम में जिसमें एडमिन उनसे मिलता है। Apex की ज़रूरत नहीं।

1. तीन कंपोनेंट: कब कौन-सा

MultiDatePick में एक साझा आधार पर बने तीन Lightning Web Component हैं। वह चुनें जो आपके डेटा से मेल खाए।

Date

बिल्डर में नाम: MultiDatePick - Dates

एक साथ कई तारीखें चुनें। RSVP, हाज़िरी, छुट्टी, ब्लैकआउट तारीखों और छुट्टियों के कैलेंडर के लिए सबसे अच्छा।

Date कंपोनेंट →

Date Time

बिल्डर में नाम: MultiDatePick - Dates & Times

तारीखें और साथ में टाइम स्लॉट। क्लास, अपॉइंटमेंट, ट्रेनिंग ब्लॉक और शिफ़्ट के लिए सबसे अच्छा।

Date Time कंपोनेंट →

Booking

बिल्डर में नाम: MultiDatePick - Resource Booking

तारीखें, समय और एक संसाधन। रूम, उपकरण, लोग और क्षमता वाली किसी भी चीज़ के लिए सबसे अच्छा।

Booking कंपोनेंट →

फ़ीचर तुलना

फ़ीचर एक के ऊपर एक जुड़ते हैं। Date में जो कुछ है, वह Date Time और Booking में भी है। Date Time समय जोड़ता है। Booking संसाधन और क्षमता जोड़ता है।

फ़ीचर Date Date Time Booking
तीनों कंपोनेंट में उपलब्ध
तारीख चुनना✓✓✓
पाँच व्यू✓✓✓
स्थिति के रंग✓✓✓
अवरुद्ध दिनांक✓✓✓
मौजूदा रिकॉर्ड लोड करना✓✓✓
संपादन मोड✓✓✓
आवर्ती पैटर्न✓✓✓
केवल Date Time और Booking
टाइम स्लॉट✓✓
Sub-block रिकॉर्ड✓✓
केवल Booking
संसाधन पिकर✓
क्षमता बैज✓

2. रिकॉर्ड संरचनाएँ: कब कौन-सी

रिकॉर्ड संरचना यह तय करती है कि चयन किस तरह रिकॉर्ड में बदलता है। यह तीन अलग-अलग फ़ैसलों से बनती है, और हर मेल काम करता है।

फ़ैसला 1
समय

Date: केवल तारीखें, समय नहीं।

Date Time / Booking: हर रिकॉर्ड का आरंभ और अंत समय होता है।

ऐड-ऑन: Consolidate Time Span चालू करें, तो पूरी समय-सीमा के लिए एक parent रिकॉर्ड बनता है, और उसके अंदर हर अंतराल के लिए एक sub-block चाइल्ड।

फ़ैसला 2
संसाधन

कोई नहीं: बिना संसाधन के Date, Date Time या Booking।

एक संसाधन: संसाधन ड्रॉपडाउन के साथ Booking।

कई संसाधन: चेकबॉक्स के साथ Booking, हर चुने गए संसाधन का एक रिकॉर्ड।

फ़ैसला 3
रेंज

हर क्लिक पर: हर चुनी गई तारीख का अपना रिकॉर्ड। पाँच क्लिक, पाँच रिकॉर्ड।

हर रेंज पर: लगातार तारीखें आरंभ और अंत वाला एक रिकॉर्ड बन जाती हैं। End Date Field API Name सेट करें।

Setup Wizard छह संरचनाओं के नाम देता है: हर तारीख का एक रिकॉर्ड, हर तारीख रेंज का एक, हर टाइम ब्लॉक का एक, parent और sub-block, एक संसाधन और कई संसाधन।

उदाहरण: 3 सवालों के जवाब दें

हर स्थिति में तीन सवालों के जवाब दें और सही संरचना मिल जाएगी। Setup Wizard भी यही तीन सवाल पूछता है।

Salesforce में MultiDatePick Setup Wizard: “मुझे चरण-दर-चरण मार्गदर्शन दें” के समय, संसाधन और रेंज वाले सवाल, हर जवाब कार्ड पर रिकॉर्ड संरचना का छोटा आरेख
“मुझे चरण-दर-चरण मार्गदर्शन दें” आपके org में यही 3 सवाल पूछता है और संरचना आपके लिए चुन देता है।

छुट्टी (PTO) का अनुरोध

क्या समय चाहिए? नहीं, केवल तारीखें।

क्या संसाधन पिकर चाहिए? नहीं।

क्या लगातार तारीखें जुड़नी चाहिए? हाँ। सोमवार से शुक्रवार की छुट्टी एक ही रिकॉर्ड होनी चाहिए।

→ हर रेंज पर: एक रिकॉर्ड, सोमवार से शुरू, शुक्रवार को खत्म।

कॉन्फ़्रेंस रूम आरक्षण

क्या समय चाहिए? हाँ, हर बुकिंग का आरंभ और अंत होता है।

क्या संसाधन पिकर चाहिए? हाँ, एक रूम चुनना है।

क्या लगातार तारीखें जुड़नी चाहिए? नहीं, हर बुकिंग अपना अलग रिकॉर्ड है।

→ एक संसाधन: हर तारीख × टाइम ब्लॉक का एक रिकॉर्ड, रूम से जुड़ा।

3 रूम में ट्रेनिंग

क्या समय चाहिए? हाँ, हर दिन वही आरंभ और अंत।

क्या संसाधन पिकर चाहिए? हाँ, चेकबॉक्स से कई रूम।

क्या लगातार तारीखें जुड़नी चाहिए? हाँ, ट्रेनिंग सोमवार से शुक्रवार तक चलती है।

→ कई संसाधन, हर रेंज पर: हर रूम का एक रिकॉर्ड, पूरे सप्ताह के लिए।

लंच ब्रेक के साथ पूरे दिन की ट्रेनिंग

क्या समय चाहिए? हाँ, सुबह 9 से शाम 5 बजे तक, बीच में लंच।

क्या संसाधन पिकर चाहिए? नहीं।

क्या अंतराल का रिकॉर्ड रखना है? हाँ, उसका अपना चाइल्ड रिकॉर्ड।

→ parent और sub-block: सुबह 9 से शाम 5 बजे तक एक parent, और लंच के लिए एक sub-block।

ग्रिड: हर संभव मेल

अपनी समय और संसाधन की ज़रूरत के हिसाब से पंक्ति चुनें। कॉलम इस पर निर्भर है कि End Date Field API Name सेट है या नहीं। हर खाना एक वैध सेटअप है।

समय + संसाधन हर क्लिक पर
(End Date Field नहीं)
हर रेंज पर
(End Date Field सेट)
Date
समय नहीं। Date कंपोनेंट।
हर तारीख का एक रिकॉर्ड
1 तारीख → 1 रिकॉर्ड।
किसके लिए: RSVP, हाज़िरी, रोज़ाना चेक-इन।
हर तारीख रेंज का एक रिकॉर्ड
लगातार तारीखें → आरंभ और अंत वाला 1 रिकॉर्ड।
किसके लिए: छुट्टी, यात्रा, कई रातों का ठहराव।
Date Time
हर रिकॉर्ड में एक टाइम ब्लॉक। Date Time कंपोनेंट।
हर टाइम ब्लॉक का एक रिकॉर्ड
1 तारीख × 1 टाइम ब्लॉक = 1 रिकॉर्ड।
किसके लिए: टाइमशीट, शिफ़्ट के हिस्से, ट्रेनिंग ब्लॉक।
साझा टाइम ब्लॉक वाली रेंज। एक जैसे समय वाली लगातार तारीखें → 1 रिकॉर्ड।
किसके लिए: हर दिन एक जैसे घंटों वाली कई दिनों की ट्रेनिंग।
Date Time + Consolidate Time Span
parent रिकॉर्ड, और अंतरालों के लिए sub-block चाइल्ड
parent और sub-block
एक parent पूरी समय-सीमा को ढकता है। उसके अंदर का हर अंतराल एक sub-block चाइल्ड बनता है।
किसके लिए: लंच ब्रेक वाली ट्रेनिंग, बीच में यात्रा वाले फ़ील्ड रूट।
Booking, एक संसाधन
एक संसाधन ड्रॉपडाउन। Booking कंपोनेंट।
एक संसाधन
हर तारीख × टाइम ब्लॉक का 1 रिकॉर्ड, संसाधन से जुड़ा।
किसके लिए: कॉन्फ़्रेंस रूम, ट्रेनर शेड्यूलिंग।
एक संसाधन की रेंज। एक संसाधन पर लगातार तारीखें → हर रेंज का 1 रिकॉर्ड।
किसके लिए: कई रातों के लिए रूम, कई दिनों के लिए उपकरण।
Booking, कई संसाधन
संसाधन चेकबॉक्स (Allow Multiple Resources)
कई संसाधन
हर संसाधन × तारीख × टाइम ब्लॉक का 1 रिकॉर्ड।
किसके लिए: एक साथ चलने वाली टीम मीटिंग, कई रूम में ट्रेनिंग।
कई संसाधनों की रेंज। N संसाधनों पर लगातार तारीखें → N रिकॉर्ड, हर संसाधन का एक।
किसके लिए: एक साथ 3 रूम में एक सप्ताह की ट्रेनिंग।
Booking + Consolidate Time Span
parent बुकिंग, और अंतरालों के लिए sub-block चाइल्ड
Booking parent और sub-block। पूरे दिन बुक एक संसाधन, जिसके ब्रेक भी रिकॉर्ड में दर्ज हैं।
किसके लिए: मेंटेनेंस विंडो वाले लैब उपकरण।

निचोड़: तीनों फ़ैसलों का कोई भी मेल काम करता है। अगर आपकी स्थिति किसी नामित पैटर्न में नहीं आती, तो हर फ़ैसला अलग से सेट करें, बाकी कंपोनेंट संभाल लेगा।

3. Setup Wizard वॉकथ्रू

Setup Wizard एक कॉन्फ़िगरेशन एक बार सहेजता है। किसी भी पेज या Flow स्क्रीन पर Config Name में उसका नाम लिखें, और वह प्लेसमेंट उसी को इस्तेमाल करेगा। कॉन्फ़िगरेशन बदलें, तो हर प्लेसमेंट अपने आप बदल जाता है।

  1. 1 नाम और प्रकार
  2. 2 ऑब्जेक्ट और फ़ील्ड
  3. 3 समय फ़ील्ड
  4. 4 स्थिति और प्रदर्शन
  5. 5 समीक्षा करें और सहेजें

शुरुआत चुनें

नया बनाएँ टैब में दो रास्ते हैं। मुझे चरण-दर-चरण मार्गदर्शन दें तीन सवाल पूछकर कंपोनेंट और संरचना चुनता है। सभी गुण कॉन्फ़िगर करें हर सेटिंग खोल देता है। उसके बगल में दो और टैब हैं: सहेजे गए कॉन्फ़िगरेशन को बदलने के लिए मौजूदा कॉन्फ़िगरेशन, और Config Library से कॉन्फ़िगरेशन पेस्ट करने के लिए आयात।

Salesforce में MultiDatePick Setup Wizard: शुरुआती स्क्रीन, जिसमें “मुझे चरण-दर-चरण मार्गदर्शन दें” और “सभी गुण कॉन्फ़िगर करें” के रास्ते हैं
“मुझे चरण-दर-चरण मार्गदर्शन दें” 3 सवाल पूछता है। “सभी गुण कॉन्फ़िगर करें” सीधे स्टेप 1 पर ले जाता है।

स्टेप 1: नाम और प्रकार

कंपोनेंट (Date, Date Time या Booking) चुनें और कॉन्फ़िगरेशन को नाम दें। यही नाम आप बाद में Config Name में लिखेंगे। इसी स्टेप में व्यू भी तय होते हैं: डिफ़ॉल्ट व्यू, स्विचर में कौन-से व्यू दिखें, और टाइमलाइन व एजेंडा के विकल्प।

Salesforce में MultiDatePick Setup Wizard, “नाम और प्रकार” स्टेप: Date, Date Time और Booking में से कंपोनेंट प्रकार चुनने का विकल्प, साथ में कॉन्फ़िगरेशन नाम और लेबल के इनपुट
स्टेप 1: कंपोनेंट चुनें, कॉन्फ़िगरेशन को नाम दें।
MultiDatePick Salesforce Setup Wizard के व्यू विकल्प: व्यू स्विचर के लिए कैलेंडर, टाइमलाइन और एजेंडा चुने गए, टाइमलाइन का समूह Advisor Specialty picklist से, और एजेंडा फ़ील्ड के रूप में Client Name, Meeting Type और Status
व्यू विकल्प: स्विचर के व्यू चुनें, टाइमलाइन की पंक्तियों को किसी भी picklist या lookup से समूहित करें, सूची से एजेंडा के कॉलम चुनें।

स्टेप 2: ऑब्जेक्ट और फ़ील्ड

सबसे अहम स्टेप। वह ऑब्जेक्ट चुनें जिसमें रिकॉर्ड रहते हैं, उसका तारीख फ़ील्ड, और parent तक वापस जाने वाला relationship फ़ील्ड। वैकल्पिक फ़ील्ड रेंज, संसाधन, क्षमता, sub-block और अवरुद्ध तारीखें जोड़ते हैं। Booking कॉन्फ़िगरेशन यहीं संसाधन ऑब्जेक्ट, क्षमता फ़ील्ड और व्यावसायिक घंटे भी सेट करते हैं।

Salesforce में MultiDatePick Setup Wizard, “ऑब्जेक्ट और फ़ील्ड” स्टेप: संबंधित ऑब्जेक्ट, तारीख फ़ील्ड, relationship फ़ील्ड और अंत तारीख फ़ील्ड के पिकर, साथ में प्लेसमेंट का चुनाव
स्टेप 2: विज़र्ड आपके org का schema पढ़ता है और हर फ़ील्ड के लिए ड्रॉपडाउन देता है।
MultiDatePick Salesforce Setup Wizard, “ऑब्जेक्ट और फ़ील्ड” स्टेप: हर फ़ील्ड एक ड्रॉपडाउन है जो चुने गए ऑब्जेक्ट (यहाँ Advisor Appointment और Advisor) तक सीमित है; Capacity Field की सूची खुली है और उसमें केवल Advisor के नंबर फ़ील्ड हैं
कोई API नाम ढूँढने की ज़रूरत नहीं। हर सूची में केवल सही टाइप के फ़ील्ड दिखते हैं, इसलिए Capacity Field में नंबर फ़ील्ड ही आते हैं।
MultiDatePick Salesforce Setup Wizard का “अवरुद्ध तारीखें” हिस्सा: स्रोत के रूप में Advisor Closure ऑब्जेक्ट, उसके Closure Date, Start Time और End Time फ़ील्ड चुने गए, और संसाधन फ़ील्ड की सूची में उसके lookup दिख रहे हैं
अवरुद्ध तारीखें किसी भी ऑब्जेक्ट से आ सकती हैं। उसे चुनें, और तारीख, समय और संसाधन की सूचियाँ भर जाती हैं।

स्टेप 3: समय फ़ील्ड

केवल Date Time और Booking। आरंभ और अंत समय फ़ील्ड मैप करें, फिर Time Interval (समय अंतराल) सेट करें (कोई भी अंतराल चलता है; आम तौर पर 15, 30 या 60 मिनट), सबसे पहला और सबसे आखिरी समय, डिस्प्ले मोड, और टकराव होने पर क्या हो।

Salesforce में MultiDatePick Setup Wizard, “समय फ़ील्ड” स्टेप: आरंभ और अंत समय फ़ील्ड, 30 मिनट का समय अंतराल, ग्रिड डिस्प्ले मोड, 08:00 से 18:00, टकराव पर Block और 90 दिन आगे तक टकराव जाँच, नीचे लाइव प्रीव्यू
स्टेप 3: समय फ़ील्ड, अंतराल और टकराव के नियम, नीचे लाइव प्रीव्यू।

स्टेप 4: स्थिति और प्रदर्शन

स्थिति फ़ील्ड और रंग, छिपाने वाली स्थितियाँ, यूज़र कौन-सी स्थितियाँ चुन सकते हैं, होवर फ़ील्ड, संपादन मोड, रिकॉर्ड का नाम, बटन लेबल, कैलेंडर का आकार और Max Dates Allowed (अधिकतम चयन) जैसी सीमाएँ।

Salesforce में MultiDatePick Setup Wizard, “स्थिति और प्रदर्शन” स्टेप: Status Field (स्थिति फ़ील्ड), रंग के नमूनों के साथ Status Colors मैपिंग, और Ignored Statuses
Status Colors आपके स्थिति फ़ील्ड से picklist मान पढ़ता है। हर मान को एक रंग मिलता है।
Salesforce में MultiDatePick Setup Wizard, “स्थिति और प्रदर्शन” स्टेप: रिकॉर्ड का नाम, होवर फ़ील्ड, कैलेंडर का आकार, दिन के हेडर का फ़ॉर्मेट और फ़ीचर टॉगल
डिस्प्ले विकल्प और फ़ीचर टॉगल, नीचे लाइव प्रीव्यू।

स्टेप 5: समीक्षा करें और सहेजें

सारांश जाँचें, लाइव प्रीव्यू आज़माएँ, फिर कॉन्फ़िगरेशन सहेजें पर क्लिक करें। विज़र्ड 30 से 60 सेकंड में कॉन्फ़िगरेशन आपके लिए डिप्लॉय कर देता है। पूरा होने पर चाहें तो विवरण जोड़ें।

Salesforce में MultiDatePick Setup Wizard, “समीक्षा करें और सहेजें” स्टेप: चुनी गई हर सेटिंग का सारांश, कॉन्फ़िगर किए गए कैलेंडर का चलता हुआ प्रीव्यू, और “कॉन्फ़िगरेशन सहेजें” बटन
स्टेप 5: हर सेटिंग एक सूची में और एक चलता हुआ प्रीव्यू। “कॉन्फ़िगरेशन सहेजें” पर क्लिक करने तक कुछ नहीं सहेजा जाता।

मौजूदा कॉन्फ़िगरेशन और आयात

सहेजे गए कॉन्फ़िगरेशन मौजूदा कॉन्फ़िगरेशन में दिखते हैं: किसी पर क्लिक करके उसे बदलें या एक्सपोर्ट करें। आयात टैब किसी भी Config Library कार्ड का JSON या किसी दूसरे org का एक्सपोर्ट लेता है।

Salesforce में MultiDatePick Setup Wizard: आयात टैब, जिसमें JSON कॉन्फ़िगरेशन पेस्ट करने का बॉक्स है और आयात के बाद विवरण सहेजने का कार्ड
आयात: JSON कॉन्फ़िगरेशन पेस्ट करें और वही सेटअप कहीं भी डिप्लॉय करें।
Salesforce में MultiDatePick Setup Wizard: “मौजूदा कॉन्फ़िगरेशन” टैब, जिसमें सहेजे गए कॉन्फ़िगरेशन अपने कंपोनेंट प्रकार, लेबल और विवरण के साथ दिखते हैं
मौजूदा कॉन्फ़िगरेशन: हर सहेजा गया कॉन्फ़िगरेशन, बदलने या एक्सपोर्ट करने के लिए तैयार।
स्क्रीन फ़्लो (Screen Flow) में Config Name सेट करें और बस। हर चेकबॉक्स कॉन्फ़िगरेशन से आता है, इसलिए आपको कभी $GlobalConstant की ज़रूरत नहीं पड़ती। parent रिकॉर्ड को Parent Record Id से बाँधें।

4. Permission set और एक्सेस

पैकेज के साथ चार permission set आते हैं। इन्हें Setup में Permission Sets से असाइन करें।

परमिशन सेटकिसे मिलेSetup Wizardकैलेंडर इस्तेमाल करना
MultiDatePick - Setupकॉन्फ़िगरेशन बनाने वाले एडमिन✓ हाँनहीं
MultiDatePick - Userकैलेंडर इस्तेमाल करने वाले सभी लोगनहीं✓ हाँ
MultiDatePick - All Accessएडमिन जो इन्हें बनाते भी हैं और इस्तेमाल भी करते हैं✓ हाँ✓ हाँ
MultiDatePick - Guestसार्वजनिक Experience Cloud साइट का guest userनहीं✓ देखना और बुक करना

कंपोनेंट हर यूज़र की अपनी अनुमतियों से चलते हैं, इसलिए यूज़र को आपके ऑब्जेक्ट और फ़ील्ड का एक्सेस भी चाहिए:

  • ऑब्जेक्ट: जिस ऑब्जेक्ट में रिकॉर्ड सहेजे जाते हैं उस पर Read और Create, और कैलेंडर जिस भी संसाधन, बंदी या चाइल्ड ऑब्जेक्ट को पढ़ता है उस पर Read।
  • फ़ील्ड, पढ़ने के लिए: कैलेंडर जो भी फ़ील्ड दिखाता है (तारीख, स्थिति, होवर फ़ील्ड)।
  • फ़ील्ड, बदलने के लिए: वह हर फ़ील्ड जिसमें कैलेंडर लिखता है (तारीख, समय, स्थिति, दूसरी picklist, नाम फ़ील्ड, parent lookup)। जिस फ़ील्ड को यूज़र बदल नहीं सकता, उस पर सहेजना फ़ेल हो जाता है, भले ही पढ़ना काम करे।
  • जुड़े हुए रिकॉर्ड: नया रिकॉर्ड जिस parent और संसाधन की ओर इशारा करता है, उन पर कम से कम Read।
एडमिन को भी फ़ील्ड एक्सेस चाहिए। नया कस्टम फ़ील्ड तब तक सबके लिए अदृश्य रहता है, System Administrator के लिए भी, जब तक कोई permission set उसका एक्सेस न दे। अगर सहेजते समय कोई फ़ील्ड गायब लगे, तो सबसे पहले field-level security जाँचें।

हर त्रुटि संदेश और उसका कारण समस्या निवारण: एक्सेस एरर पर है। guest साइट के लिए कुछ अतिरिक्त स्टेप चाहिए: सार्वजनिक guest पेज देखें।

5. Click to Save बनाम Flow-Managed Save

सहेजने के दो तरीके हैं। प्लेसमेंट के हिसाब से एक चुनें।

Click to Save

कंपोनेंट रिकॉर्ड खुद लिखता है। चार सेटिंग भरें और उसका अपना सहेजें बटन दिखने लगता है। क्लिक करें और चाइल्ड रिकॉर्ड बन जाते हैं। न Flow एलिमेंट, न कोड।

कहाँ इस्तेमाल करें: Record Page, App Page, Home Page, Experience साइट, और parent रिकॉर्ड वाली Flow स्क्रीन।

Flow-Managed Save

कंपोनेंट चयन आपके Flow को सौंप देता है। साथ आने वाला Parse Date Entries from JSON एक्शन इस्तेमाल करें, फिर अपने Loop और Create Records एलिमेंट।

कहाँ इस्तेमाल करें: उन Flow स्क्रीन पर जहाँ पूरा नियंत्रण चाहिए: अप्रूवल, शर्तों वाले रिकॉर्ड, अतिरिक्त वैलिडेशन।

Click to Save: चार सेटिंग

Setup Wizard इन्हें भर देता है। चारों में मान हो, तो सहेजें बटन दिखने लगता है।

सेटिंगइसमें क्या होता हैAPI नाम
Child Object API Nameवह ऑब्जेक्ट जिसमें रिकॉर्ड सहेजे जाते हैंrelatedObjectApiName
Date Field API Nameउस ऑब्जेक्ट पर तारीख फ़ील्डdateFieldApiName
Relationship Field API Nameparent रिकॉर्ड तक वापस जाने वाला lookuprelationshipFieldApiName
Parent Record Id या Static Parent Record Idparent रिकॉर्ड। Record Page पर यह अपने आप भर जाता है। Flow में Parent Record Id बाँधें। App, Home और Experience पेज पर Id को Static Parent Record Id में लिखें।recordId / staticRecordId
Flow स्क्रीन में दो बटन। Click to Save चालू होने पर कंपोनेंट का सहेजें रिकॉर्ड लिखता है और Flow का Next केवल आगे बढ़ाता है। यूज़र पहले सहेजें, फिर Next पर क्लिक करते हैं।

कोई पेज कौन-सा parent रिकॉर्ड इस्तेमाल करता है, और कब उसे Flow में चुनना बेहतर है, यह App, Home और Experience पेज में बताया गया है।

Flow-Managed Save: आउटपुट

चारों सेटिंग खाली छोड़ें। सहेजें बटन छिप जाता है और चयन इन Flow आउटपुट से बाहर आता है:

आउटपुटइसमें क्या हैकंपोनेंट
Selected Dates (Output)तारीखों का टेक्स्ट कलेक्शन (YYYY-MM-DD)Date, Date Time
Date Ranges JSON (Output)लगातार तारीखें रेंज में समूहितDate, Date Time
Dates With Times JSON (Output)हर तारीख अपने समय के साथDate Time
Successful Bookings Count / Conflict DatesBooking के अपने सहेजने के बाद के नतीजेBooking

JSON को Parse Date Entries from JSON को दें। यह एक सूची लौटाता है जिस पर आप Loop चला सकते हैं; हर आइटम में from date, to date, start time, end time और संसाधन Id होती है। स्टेप-बाय-स्टेप: Flow रेसिपी।

सहेजना केवल जोड़ता है

Click to Save केवल नए रिकॉर्ड बनाता है। किसी तारीख का चयन हटाने से सहेजा गया रिकॉर्ड कभी डिलीट नहीं होता, इसलिए गलत क्लिक से डेटा नहीं खोता। रिकॉर्ड बदलने या हटाने के लिए संपादन मोड या related list इस्तेमाल करें।

6. स्थिति के रंग और संपादन मोड

स्थिति के रंग और फ़िल्टर

अपने ऑब्जेक्ट की किसी भी picklist से रिकॉर्ड को रंग दें, कुछ मान छिपाएँ, और तय करें कि end user क्या चुन सकें।

सेटिंगयह क्या करता हैAPI नाम
Status Fieldवह picklist जिससे रंग तय होते हैं, जैसे Confirmed / Tentative / Cancelled।statusField
Status Colorsहर मान का एक रंग, जैसे Confirmed:#22C55E, Tentative:#fbbf24। अपने आप बने रंगों के लिए खाली छोड़ें।statusColors
Status Color Displayरंग कहाँ दिखें: कैलेंडर, ग्रिड या दोनों। बिना रंगों वाले साफ़ ग्राहक पेज के लिए इसे खाली छोड़ें।statusColorDisplay
Ignored Statusesइन मानों वाले रिकॉर्ड (जैसे No-Show,Cancelled) कैलेंडर और क्षमता की गिनती, दोनों से छिपा देता है।hideBookingsWithStatus
Selectable Statusesतय करता है कि end user कौन-से मान चुन सके, जैसे केवल Requested, जबकि स्टाफ़ को सभी दिखते हैं।selectableStatuses
दो पेज, एक ऑब्जेक्ट। ग्राहक पेज पर रंग न हों, चुनने के लिए केवल Requested हो, और No-Show व Cancelled छिपे हों। उन्हीं रिकॉर्ड पर बैक-ऑफ़िस पेज रंग चालू रखे और हर स्थिति दे।

संपादन मोड

Enable Edit Mode चालू करें और संपादित करें बटन दिखने लगता है। संपादन मोड में यूज़र:

  • मौजूदा रिकॉर्ड को उनकी तारीख और स्थिति के साथ कार्ड के रूप में देख सकते हैं
  • तारीखों पर क्लिक करके उनके रिकॉर्ड संपादन सेट में जोड़ सकते हैं
  • तारीख, समय, संसाधन या स्थिति बदल सकते हैं, और रिकॉर्ड अपडेट हो जाता है
  • दो क्लिक की पुष्टि से डिलीट कर सकते हैं, ताकि गलती से कुछ न हटे
Salesforce कैलेंडर पर MultiDatePick संपादन मोड का एनिमेटेड डेमो: Requested अपॉइंटमेंट वाले दो दिन चुने जाते हैं, “सभी चुनें” दोनों बुकिंग चुनता है, स्थिति Confirmed की जाती है, और “परिवर्तन लागू करें” के बाद दोनों दिन नीले से हरे हो जाते हैं
एक साथ स्थिति बदलना: दिन चुनें, “सभी चुनें”, स्थिति चुनें, “लागू करें”।
Salesforce कैलेंडर पर MultiDatePick संपादन मोड का एनिमेटेड डेमो: एक दिन का क्लाइंट अपॉइंटमेंट चुना जाता है, “दिनांक पर ले जाएँ” में अगला दिन डाला जाता है, और “परिवर्तन लागू करें” के बाद बुकिंग 30 अक्टूबर से हटकर 31 अक्टूबर पर आ जाती है, जो अकेला चुना हुआ दिन बचता है
बुकिंग खिसकाना: दिन चुनें, नई तारीख चुनें, “लागू करें”। इसी पैनल से संसाधन या समय भी बदलते हैं।
हर दिन पर स्थिति के रंगों वाला Salesforce बुकिंग कैलेंडर, संपादन मोड खुला: चुने गए दिन की हर बुकिंग अपनी स्थिति, समय और रूम के साथ सूची में, एक साथ स्थिति बदलने, खिसकाने या दोबारा असाइन करने के लिए तैयार
स्थिति के रंग हर दिन को रंगते हैं। संपादन मोड उस दिन के रिकॉर्ड की सूची दिखाता है, बदलने के लिए तैयार।

7. व्यू: एक कंपोनेंट, पाँच लेआउट

हर कंपोनेंट पाँच लेआउट बनाता है। ये सभी उन्हीं फ़ील्ड मैपिंग से वही रिकॉर्ड पढ़ते हैं, वही टकराव के नियम, अवरुद्ध तारीखें और व्यावसायिक घंटे मानते हैं, और एक ही तरह सहेजते हैं। व्यू बदलने से केवल रिकॉर्ड का रूप बदलता है, उनका मतलब नहीं।

पाँच व्यू, और हर एक किस सवाल का जवाब देता है

दृश्य (View)सवाललेआउटबदलाव कर सकते हैं?
कैलेंडर14 तारीख को क्या है?एक बार में एक महीना, हर दिन स्थिति के रंग।हाँ। यही डिफ़ॉल्ट है।
टाइमलाइनकौन-सा संसाधन खाली है, और कब?किनारे पर संसाधन, ऊपर तारीखें। कई दिनों के रिकॉर्ड एक बार के रूप में।हाँ
सप्ताहगुरुवार दोपहर 2 बजे कौन खाली है?सात दिन आड़े, व्यावसायिक घंटे खड़े। दिनों और घंटों पर एक साथ ड्रैग करें।हाँ
उपयोगकौन क्षमता से अधिक बुक है?हर संसाधन की हर दिन इस्तेमाल हुई क्षमता का हीटमैप।नहीं, केवल पढ़ने के लिए
एजेंडाआगे क्या है?अगले 60 दिनों की क्रम से सूची।नहीं, केवल पढ़ने के लिए
बुकिंग पेज को उपयोग या एजेंडा व्यू पर डिफ़ॉल्ट न करें। दोनों केवल पढ़ने के लिए हैं, इसलिए पेज अपना मुख्य काम ही खो देगा। इन्हें Available Views (उपलब्ध दृश्य) में दें और पेज को किसी लिखने योग्य व्यू पर खोलें।

सेटिंग

सेटिंगडिफ़ॉल्टयह क्या करता है
Viewviewकैलेंडरवह लेआउट जिस पर कंपोनेंट खुलता है।
Available ViewsavailableViewsखालीस्विचर कौन-से व्यू दिखाए, जैसे calendar,timeline,agenda। खाली छोड़ें तो पाँचों दिखते हैं। आपका डिफ़ॉल्ट व्यू हमेशा शामिल रहता है, इसलिए केवल अतिरिक्त व्यू लिखें।
Timeline Window (Days)timelineWindowDays14टाइमलाइन एक बार में कितने दिन दिखाए। पूरे महीने में हर बुकिंग लगभग बीस पिक्सेल चौड़ी रह जाती है और उसका लेबल कट जाता है। पूरे महीने के लिए 0 सेट करें। अंदर वाले तीर एक विंडो आगे बढ़ाते हैं, बाहर वाले एक महीना।
Resource RowsresourceViewFilterallbooked केवल वही संसाधन दिखाता है जिनकी दिख रही अवधि में बुकिंग है। लंबी सूची छोटी करने का सबसे अच्छा तरीका, क्योंकि खाली पंक्ति कोई जानकारी नहीं देती। कहीं भी कुछ बुक न हो, तो फिर से हर संसाधन दिखता है।
Max View ResourcesmaxViewResources0 (सभी)टाइमलाइन और उपयोग व्यू कितनी संसाधन पंक्तियाँ दिखाएँ, इसकी सीमा, सबसे व्यस्त पहले। गिनती फिर भी हर चीज़ की होती है। Resource Rows बेहतर है, जो केवल खाली पंक्तियाँ छिपाता है।
Agenda FieldsagendaFieldsखालीएजेंडा की हर पंक्ति पर अतिरिक्त फ़ील्ड, चार तक। खाली छोड़ें तो Hover Popover Fields ही इस्तेमाल होते हैं। तारीख, समय और नाम पंक्ति पर पहले से होते हैं।
Capacity FieldcapacityFieldखालीयह व्यू की सेटिंग नहीं है, लेकिन उपयोग व्यू को कच्ची गिनती की जगह प्रतिशत दिखाने के लिए इसकी ज़रूरत होती है।

हर पेज पर अलग व्यू

व्यू हर प्लेसमेंट की अपनी सेटिंग है, इसलिए वही रिकॉर्ड हर जगह अलग दिख सकते हैं। एक इंस्टॉल, फ़ील्ड मैपिंग का एक सेट।

प्लेसमेंटदृश्य (View)उपलब्ध दृश्य (Available Views)
रिक्रूटर का इंटरव्यू पेजसप्ताहcalendar,agenda
फ़ैसिलिटीज़ का रूम बुकिंग पेजकैलेंडरtimeline,utilization
शिफ़्ट मैनेजर का रोस्टरटाइमलाइनweek,agenda
ऑपरेशंस की दीवार वाली स्क्रीनएजेंडाutilization,timeline
सार्वजनिक Experience Cloud पेजकैलेंडरखाली, या छोटा रखें

संपादन मोड हर व्यू में काम करता है

Enable Edit Mode चालू होने पर संपादन बटन हर व्यू में दिखता है। टाइमलाइन, सप्ताह या एजेंडा में किसी रिकॉर्ड पर क्लिक करें और वह संपादन सेट में जुड़ जाता है, ठीक मासिक कैलेंडर की तारीख की तरह। टाइमलाइन से एक साथ स्थिति बदलना बिलकुल कैलेंडर जैसा ही काम करता है।

टाइमलाइन: सिमटी हुई पंक्तियाँ

जब किसी संसाधन की बुकिंग ओवरलैप होती हैं, तो उसकी पंक्ति एक पट्टी में सिमट जाती है जिस पर N एक साथ चिप होती है। तीर पर क्लिक करने से हर बुकिंग की अपनी लेन खुलती है। सिमटी हुई पंक्तियों पर भी ड्रैग, होवर और क्लिक काम करते हैं।

Salesforce टाइमलाइन व्यू: हर संसाधन के नीचे ओवरलैप होने वाली कई दिनों की बुकिंग अलग-अलग लेन में, कई लेन वाली हर पंक्ति पर खोलने-बंद करने का तीर, और ऊपर एक संयुक्त क्षमता पट्टी
ओवरलैप होने वाली बुकिंग लेन में जमती हैं। ऊपर की पट्टी दिखाती है कि हर दिन कितना भरा है।

टाइमलाइन: ड्रैग करके रीशेड्यूल करें

Enable Edit Mode चालू हो, तो टाइमलाइन की बार ड्रैग होती हैं। बुकिंग को दूसरे दिनों पर ले जाने के लिए बीच से पकड़ें। आरंभ या अंत बदलने के लिए किनारा पकड़ें। बार दिखाती है कि वह कहाँ जाएगी, और छोड़ते ही सहेज लेती है। Day ज़ूम में यही तरीके समय बदलते हैं।

MultiDatePick Salesforce टाइमलाइन पर रीशेड्यूलिंग का एनिमेटेड डेमो: एक एंगेजमेंट के दाएँ किनारे को ड्रैग करने से वह दो दिन बढ़ जाता है, फिर दूसरे एंगेजमेंट को ड्रैग करके दो दिन आगे खिसकाया जाता है; छोड़ते ही हर बदलाव सहेजा जाता है और नई तारीखें बार पर दिखती हैं
एक बुकिंग को किनारे से बढ़ाएँ, दूसरी को आगे के दिनों पर खिसकाएँ। छोड़ते ही हर बदलाव सहेजा जाता है।

केवल रूम नहीं, लोगों को भी शेड्यूल करें

Resource Object API Name कोई भी ऑब्जेक्ट ले सकता है। इसे User पर सेट करें, तो टाइमलाइन रोस्टर बन जाती है, सप्ताह व्यू शिफ़्ट ग्रिड, और उपयोग व्यू टीम की क्षमता का डैशबोर्ड।

  • User पर कोई स्टैंडर्ड क्षमता फ़ील्ड नहीं होता। उपयोग व्यू में प्रतिशत देखने के लिए एक कस्टम फ़ील्ड जोड़ें (जैसे Daily Capacity)।
  • Business Hours Start Field और Business Hours End Field को User के फ़ील्ड से मैप करें, तो सप्ताह ग्रिड हर व्यक्ति के अपने घंटों के हिसाब से चलता है।

Config Library में दो तैयार उदाहरण हैं: टीम क्षमता योजना और स्टाफ़ शिफ़्ट रोस्टर।

पाँचों व्यू में Salesforce बुकिंग दिखाता MultiDatePick: संसाधन टाइमलाइन, मासिक कैलेंडर, उपयोग हीटमैप, साप्ताहिक ग्रिड और एजेंडा सूची
वही बुकिंग पाँचों व्यू में।

8. संसाधन बुकिंग और क्षमता (Booking कंपोनेंट)

एक संसाधन

यूज़र ड्रॉपडाउन से एक संसाधन चुनते हैं। टाइम ग्रिड उस संसाधन की बुकिंग और क्षमता लोड करता है।

कई संसाधन

Allow Multiple Resources चालू करें, तो ड्रॉपडाउन चेकबॉक्स बन जाता है। ग्रिड केवल वही स्लॉट दिखाता है जो हर चुने गए संसाधन पर खाली हों, और सहेजें सबको एक साथ बुक करता है।

मल्टी-रिसोर्स मोड में Salesforce बुकिंग कैलेंडर, दो संसाधन चुने गए, और संयुक्त क्षमता ग्रिड में हर टाइम स्लॉट पर X/Y बैज
दो संसाधन चुने गए। हर बैज दोनों को मिलाकर क्षमता में से बुकिंग दिखाता है।

क्षमता

कई बुकिंग को एक स्लॉट साझा करने दें, लाइव 3/5 बैज के साथ। भरा हुआ स्लॉट और बुकिंग नहीं लेता।

सेटिंगयह क्या करता हैAPI नाम
Capacity Fieldसंसाधन पर एक नंबर फ़ील्ड, जैसे Capacity = 5।capacityField
Show Availability CountX/Y बैज दिखाता है।showAvailabilityCount
Capacity AggregationCombined (डिफ़ॉल्ट) चुने गए संसाधनों की बुकिंग और क्षमता जोड़ता है: 5-5 क्षमता वाले दो रूम 0/10 दिखाते हैं। Distinct कई संसाधनों पर बुक हुए एक इवेंट को एक ही बार गिनता है और सबसे बड़ी एकल क्षमता लेता है: 4 रूम में एक क्लास 1/5 दिखाती है, 4/20 नहीं।capacityAggregation
क्षमता के लिए बुकिंग के दोनों समय फ़ील्ड चाहिए। Booking Start Time Field और Booking End Time Field के बिना गिनने के लिए कोई स्लॉट नहीं होता, और कंपोनेंट कैलेंडर की जगह एक पीला बैनर दिखाता है।

टकराव

Conflict Behavior तय करता है कि चुना गया स्लॉट पहले से भरा हो तो क्या हो। Conflict Look-Ahead Days तय करता है कि कितने दिन आगे तक जाँच हो (डिफ़ॉल्ट 360)।

मानक्या होता हैकिसके लिए सबसे अच्छा
Block (डिफ़ॉल्ट)भरा हुआ स्लॉट चुना नहीं जा सकता, और सहेजना रुक जाता है, टकराव हाइलाइट होकर दिखते हैं।ज़्यादातर बुकिंग पेज
Skipखाली स्लॉट सहेज लेता है और भरे हुए छोड़ देता है। छोड़ी गई तारीखें Conflict Dates (Output) में वापस आती हैं।कई तारीखों में जो भी अब तक खाली है, उसे पकड़ लेना
Allowकोई टकराव जाँच नहीं। बुकिंग क्षमता से आगे जा सकती हैं।जान-बूझकर ओवरबुकिंग

बंदी हमेशा भारी पड़ती है। अवरुद्ध स्लॉट पर कुछ नहीं सहेजा जाता, Allow के साथ भी नहीं।

9. यूज़र क्या चुन सकें, इसकी सीमा

तय करें कि एक व्यक्ति कितना चुन सकता है, तारीखों से या टाइम स्लॉट से।

सेटिंगयह क्या करता हैAPI नाम
Max Dates Allowed
Booking में: Max Dates Per Booking
यूज़र ज़्यादा से ज़्यादा कितनी तारीखें चुन सकता है। 0 का मतलब कोई सीमा नहीं।maxSelections
Max Time Slotsसभी तारीखों को मिलाकर ज़्यादा से ज़्यादा कितने टाइम स्लॉट। 0 का मतलब कोई सीमा नहीं। हर व्यक्ति का एक अपॉइंटमेंट रखना हो तो 1 डालें।maxTimeSlotSelection
Earliest / Latest Selectable Dateतय तारीखों से बाहर की तारीखें धूसर कर देता है।minDate / maxDate
Book Up To / Minimum Noticeएक चलती हुई विंडो: ज़्यादा से ज़्यादा N दिन आगे तक, कम से कम N घंटे पहले सूचना।maxDaysAhead / minNoticeHours
Buffer Between Bookingsहर बुकिंग के बाद तैयारी का समय खाली रखता है।bufferMinutes
Add to Calendarसहेजने के बाद, अभी सहेजी गई हर चीज़ के लिए एक .ics फ़ाइल।showAddToCalendar
Allow Past Datesबंद हो, तो केवल आज और आगे की तारीखें। Date और Date Time में डिफ़ॉल्ट रूप से चालू, Booking में बंद।allowPastDates
Max Dates Allowed तारीखों की सीमा है, स्लॉट की नहीं। सीमा 1 हो, तब भी यूज़र उस एक तारीख पर कई स्लॉट चुन सकता है। बुकिंग की संख्या सीमित करने के लिए Max Time Slots (अधिकतम समय स्लॉट) जोड़ें।

10. तारीखें, समय और संसाधन ब्लॉक करना (बंदी)

कोई भी कैलेंडर किसी दूसरे ऑब्जेक्ट से बंदी (closures) पढ़ सकता है और उनसे ढकी तारीखें, टाइम स्लॉट या संसाधन धूसर कर सकता है, ताकि यूज़र केवल तभी बुक करें जब आप खुले हों। कुछ सेटिंग को बंदी वाले ऑब्जेक्ट की ओर इशारा करें, बाकी कंपोनेंट संभाल लेता है। पूरे दिन का ब्लॉक तीनों कंपोनेंट में काम करता है। समय और संसाधन के ब्लॉक के लिए Date Time या Booking का टाइम ग्रिड चाहिए।

ब्लॉक करना बनाम छिपाना: फ़र्क क्या है?

दोनों सुनने में एक जैसे लगते हैं, पर काम उलटा करते हैं। ब्लॉक करना उपलब्धता छीन लेता है: स्लॉट दिखता है, पर बुक नहीं हो सकता। छिपाना रिकॉर्ड को नज़र से हटा देता है, जिससे उनके स्लॉट खाली हो जाते हैं।

ब्लॉक करना (बंदी) छिपाना (स्थिति से)
यह क्या नियंत्रित करता हैकौन-सी तारीखें, समय और संसाधन बुक हो सकते हैंकौन-से सहेजे गए रिकॉर्ड दिखें
सेटिंगBlocked Dates Object और उसके तारीख, समय और संसाधन फ़ील्डIgnored Statuses
किससे चलता हैबंदी या छुट्टियों की सूची: उसका अपना ऑब्जेक्ट, या फ़िल्टर किया हुआ आपका बुकिंग ऑब्जेक्टखुद रिकॉर्ड पर एक स्थिति मान
यूज़र को क्या दिखता हैस्लॉट दिखता है, पर कटा हुआ, धूसर और क्लिक न होने वालारिकॉर्ड कैलेंडर से गायब
क्षमता पर असरउपलब्धता घटाता हैउपलब्धता खाली करता है: छिपा हुआ रिकॉर्ड गिनती में नहीं आता
डेटाकोई बुकिंग नहीं है; आप उसे वर्जित चिह्नित कर रहे हैंरिकॉर्ड Salesforce में बने रहते हैं
किसके लिएछुट्टियाँ, मेंटेनेंस विंडो, बंद रूम या क्षेत्रCancelled या Rejected बुकिंग, जो ग्रिड में भीड़ न करें और क्षमता में न गिनी जाएँ
एक ही स्थिति दोनों काम कर सकती है, यह इस पर निर्भर है कि उसे किस फ़ीचर से जोड़ा गया है। मान लीजिए एक Cancelled बुकिंग है:
  • Ignored Statuses = Cancelled → बुकिंग गायब हो जाती है और उसका स्लॉट खुल जाता है।
  • Blocked Dates Object = आपका बुकिंग ऑब्जेक्ट, Status = Cancelled पर फ़िल्टर → बुकिंग अपनी तारीख को ब्लॉक करती है, ताकि उसे कोई दोबारा बुक न करे।
स्लॉट खाली करना हो तो छिपाएँ। वर्जित रखना हो तो ब्लॉक करें।

अवरुद्ध तारीखों की सेटिंग

सेटिंगयह क्या करता हैAPI नाम
Blocked Dates Objectबंदी रखने वाला ऑब्जेक्ट, जैसे Office Closure ऑब्जेक्ट या आपका बुकिंग ऑब्जेक्ट। इसे सेट करते ही ब्लॉकिंग चालू हो जाती है।blockedDatesSourceObject
Blocked Dates Date Fieldउस ऑब्जेक्ट पर तारीख फ़ील्ड।blockedDatesDateField
Blocked Dates Start / End Time Fieldवैकल्पिक समय फ़ील्ड। दिन के कुछ हिस्से के ब्लॉक के लिए दोनों सेट करें; पूरे दिन के लिए खाली छोड़ें। Date Time और Booking।blockedDatesStartTimeField / blockedDatesEndTimeField
Blocked Dates Resource Fieldवैकल्पिक lookup, जो बंदी को एक संसाधन तक सीमित करता है। खाली हो तो बंदी हर संसाधन पर लागू होती है। Booking।blockedDatesResourceField
Blocked Dates Filter Field / Valueवैकल्पिक दायरा, जैसे Region = North या Status = Cancelled। इसी से बंदी की एक टेबल कई कैलेंडर के काम आती है।blockedDatesFilterField / blockedDatesFilterValue

ब्लॉकिंग के तीन स्तर

  1. पूरा दिन: बिना समय वाली बंदी पूरी तारीख धूसर कर देती है। तीनों कंपोनेंट। बंद तारीख बंद ही रहती है, भले उस पर पहले से बुकिंग हों।
  2. दिन का कुछ हिस्सा: आरंभ और अंत समय वाली बंदी केवल उन्हीं स्लॉट को ब्लॉक करती है। बाकी दिन बुक हो सकता है। तारीख चुनने पर अवरुद्ध स्लॉट दिखते हैं।
  3. एक संसाधन: किसी संसाधन की ओर इशारा करने वाली बंदी केवल उसी संसाधन को बंद करती है। एक संसाधन वाले व्यू में स्लॉट कटा हुआ दिखता है। संयुक्त व्यू में उस पर कोने में छोटा निशान लगता है और खुले संसाधनों पर वह बुक हो सकता है।

टाइम ग्रिड इस्तेमाल कर रहे हैं? तो आपको दिन के हिस्से वाले ब्लॉक चाहिए। पूरे दिन के ब्लॉक केवल तारीख वाले पिकर के लिए ठीक हैं।

बंदी ऑब्जेक्ट के दो पैटर्न

  • वही ऑब्जेक्ट, स्थिति से चिह्नित: Blocked Dates Object को अपने बुकिंग ऑब्जेक्ट पर रखें और Status = Cancelled पर फ़िल्टर करें, ताकि रद्द बुकिंग बंदी का काम भी करें। सबसे आसान, लेकिन उस ऑब्जेक्ट के हर कैलेंडर में ये साझा होती हैं। Config Library में छुट्टियों का ध्यान रखने वाली अपॉइंटमेंट बुकिंग कॉन्फ़िगरेशन देखें।
  • बंदी का अलग ऑब्जेक्ट: एक Office Closure ऑब्जेक्ट जिसमें तारीख, वैकल्पिक आरंभ और अंत समय, Region फ़ील्ड और वैकल्पिक संसाधन lookup हो। हर कैलेंडर अपने क्षेत्र से फ़िल्टर करता है, और कोई बंदी एक संसाधन को निशाना बना सकती है। समय के हिसाब से संसाधन बंदी कॉन्फ़िगरेशन देखें।

अगर लोग अपना समय खुद ब्लॉक करें (जैसे कोई मालिक अपनी सुबह ब्लॉक करे), तो किसी आंतरिक पेज या साइट पर एक Date Time कंपोनेंट लगाएँ जो बंदी ऑब्जेक्ट में सहेजे।

अवरुद्ध स्लॉट कैसे बर्ताव करते हैं

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

बंदी की एक टेबल, कई कैलेंडर

बंदी ऑब्जेक्ट में एक टैग फ़ील्ड (Region, Location, Building) रखें और वही फ़ील्ड अपने संसाधनों पर भी। फिर हर कैलेंडर अपने संसाधन दिखाने के लिए Resource Filter Field / Value और अपनी बंदी पढ़ने के लिए Blocked Dates Filter Field / Value इस्तेमाल करता है।

11. सार्वजनिक guest पेज (Experience Cloud)

Experience Cloud साइट पर कंपोनेंट लगाएँ और कोई भी बिना लॉगिन बुक कर सकता है। guest के रूप में टेस्ट करने से पहले पाँचों स्टेप पूरे करें।

  1. ऑब्जेक्ट अनुमतियाँ। साइट के guest user को हर ऑब्जेक्ट पर Read दें, और अगर guest सबमिट करते हैं तो Create भी। Salesforce guest को कभी रिकॉर्ड बदलने या डिलीट करने नहीं देता, इसलिए बदलने, रद्द करने और डिलीट करने वाले पेज लॉगिन किए यूज़र के लिए रखें।
  2. कंपोनेंट जिस भी फ़ील्ड को छूता है, हर उस पर Field-level security, संसाधन के व्यावसायिक घंटों वाले फ़ील्ड और बंदी के समय फ़ील्ड समेत। एक भी फ़ील्ड छूटा, तो संसाधन या बंदी की query रुक जाती है।
  3. एक guest sharing rule (Read), ताकि guest रिकॉर्ड देख सके। rule लागू होने के लिए ऑब्जेक्ट का external org-wide default Private होना चाहिए। metadata के रूप में डिप्लॉय किए गए rule के लिए Setup के Sharing Settings में एक बार Recalculate पर क्लिक करना होता है।
  4. साइट के guest user पर MultiDatePick - Guest अनुमति सेट। इसमें वह Apex class एक्सेस है जिसके ज़रिए कंपोनेंट अपना डेटा लोड करता है।
  5. साइट को Activate करें। Publish करना और Activate करना अलग-अलग स्टेप हैं।
guest को कैलेंडर खाली दिखता है? अगर ऑब्जेक्ट, फ़ील्ड और class एक्सेस सब ठीक लगें, तो लगभग हमेशा स्टेप 3 का sharing recalculation ही कारण होता है। उसके बाद सबसे ज़्यादा छूटने वाले स्टेप 4 और 5 हैं।
  • guest को कौन-सा रिकॉर्ड दिखता है: सार्वजनिक पेज Static Parent Record Id इस्तेमाल करता है, इसलिए हर guest एक ही parent (एक ऑफ़िस, लोकेशन या संसाधन) पर बुक करता है। हर विज़िटर का अलग रिकॉर्ड चाहिए, तो URL पैरामीटर वाले Flow से चलाएँ। हर यूज़र का सच में अलग कैलेंडर चाहिए, तो लॉगिन किए यूज़र चाहिए।
  • Contacts और Accounts: Salesforce इन पर guest एक्सेस बहुत सीमित रखता है। guest की बुकिंग किसी कस्टम ऑब्जेक्ट पर करें, या authenticated साइट इस्तेमाल करें।
  • एक पेज पर कई कंपोनेंट: ये आपस में लाइव सिंक नहीं होते। इनके बीच रिफ़्रेश का संकेत रखें, ताकि एक में किया गया ब्लॉक अगले में दिखे।

प्लेसमेंट के स्टेप App, Home और Experience पेज पर हैं। पूरी बनी हुई साइट का उदाहरण Experience Cloud Booking पर है।

12. आम पेच (FAQ)

कोई बैनर दिख रहा है, सहेजें बटन गायब है या कैलेंडर खाली है? Troubleshooting में हर संदेश स्क्रीनशॉट और समाधान के साथ है।

मेरे स्थिति के रंग लागू नहीं हो रहे
तीन चीज़ें जाँचें। (a) क्या Status Field picklist का बिलकुल सही API नाम है? इसमें छोटे-बड़े अक्षर मायने रखते हैं। (b) क्या Status Colors बिना उद्धरण चिह्नों के Value:#hex, Value:#hex फ़ॉर्मेट में है? 'Confirmed':'#22C55E' इसे चुपचाप तोड़ देता है। (c) क्या रिकॉर्ड में उस picklist का कोई मान सच में है?
रिकॉर्ड अनपेक्षित नामों से सहेजे जा रहे हैं
Record Name Field (रिकॉर्ड नाम फ़ील्ड) जाँचें: फ़ील्ड छोटा हो तो लंबे नाम कट जाते हैं। Append Date to Record Name जाँचें: चालू हो तो हर नाम में चुनी गई तारीख और समय जुड़ जाते हैं।
क्षमता ग्रिड से Cancelled रिकॉर्ड कैसे छिपाऊँ?
Ignored Statuses को Cancelled पर सेट करें, या Cancelled,Rejected जैसी सूची पर। ये कैलेंडर और क्षमता की गिनती, दोनों से हट जाते हैं।
ब्लॉक करने और छिपाने में क्या फ़र्क है?
ब्लॉक करना (बंदी) किसी तारीख, समय या संसाधन को दिखता हुआ पर बुक न होने वाला रखता है: छुट्टियाँ, मेंटेनेंस, बंद रूम। छिपाना Cancelled जैसे रिकॉर्ड को कैलेंडर और क्षमता से हटा देता है, जिससे स्लॉट खाली हो जाता है। ब्लॉक करना बनाम छिपाना देखें।
संपादन बटन नहीं दिख रहा
Enable Edit Mode चालू करें। तीनों कंपोनेंट में बस यही एक शर्त है। Status Field वैकल्पिक है; वह केवल एडिटर में स्थिति ड्रॉपडाउन जोड़ता है। अगर बटन फिर भी न दिखे, तो पेज या कॉन्फ़िगरेशन में Enable Edit Mode बंद है।
मुझे केवल कुछ संसाधन चाहिए (रूम, उपकरण नहीं)
Resource Filter Field और Resource Filter Value इस्तेमाल करें। एक मान: फ़ील्ड Active__c, मान true। कई मान (OR): North,South। कई फ़ील्ड (AND): फ़ील्ड Type__c;Active__c, मान Conference Room;true।
Date Time बार-बार एक ही साझा टाइम पिकर दिखाता है
इसकी सेटिंग Time Display Mode है: Grid या Dropdown। Grid मोड में हर तारीख एक ही ग्रिड साझा करती है। हर तारीख का अलग समय चाहिए, तो Dropdown चुनें और Allow Different Times Per Date चालू करें।
Flow-Managed Save से Click to Save पर कैसे जाऊँ?
Parent Record Id, Child Object API Name, Date Field API Name और Relationship Field API Name भरें। Parse Date Entries from JSON एक्शन और रिकॉर्ड बनाने वाला loop हटा दें। अब कंपोनेंट का अपना सहेजें बटन रिकॉर्ड लिखता है।
बिना विवरण वाला त्रुटि toast आता है
ब्राउज़र का developer console खोलें और [MDP:ERROR] से शुरू होने वाली लाइनें देखें। पूरी त्रुटि हमेशा वहाँ लॉग होती है, भले toast छोटा हो।

13. Flow रेसिपी

यहाँ सब कुछ Flow Builder में बनता है। कोई Apex नहीं।

चुनी गई तारीखों पर Loop चलाएँ

  1. Date Time कंपोनेंट वाली एक Screen जोड़ें। Click to Save की सेटिंग खाली छोड़ें।
  2. स्क्रीन के बाद Parse Date Entries from JSON एक्शन जोड़ें। उसे Dates With Times JSON (Output) दें।
  3. एक्शन की सूची पर Loop चलाएँ। हर आइटम में from date, to date, start time और end time होते हैं।
  4. loop के अंदर मानों को एक रिकॉर्ड वेरिएबल में असाइन करें और उसे एक कलेक्शन में जोड़ें। loop के बाद रिकॉर्ड एक ही बार में बनाएँ।

पहली और आखिरी तारीख parent पर रोल-अप करें

चाहते हैं कि parent पर चाइल्ड की सबसे पहली और सबसे आखिरी तारीख दिखे? अपने डेटा के हिसाब से बिना कोड वाला तरीका चुनें।

आपका सेटअपयह करें
Master-detail relationshipparent पर दो Roll-Up Summary फ़ील्ड जोड़ें: तारीख फ़ील्ड का MIN और तारीख फ़ील्ड का MAX। हो गया।
Lookup relationshipचाइल्ड पर एक Record-Triggered Flow (after save)। उसी parent के चाइल्ड ऑब्जेक्ट पर Get Records, तारीख के बढ़ते क्रम में, केवल पहला रिकॉर्ड। यही घटते क्रम में दोबारा करें। दोनों तारीखों से parent की आरंभ और अंत तारीख अपडेट करें।

Flow के और पैटर्न: Screen Flow गाइड।

14. ऑब्जेक्ट और फ़ील्ड मैपिंग

हर कंपोनेंट पेज पर ऑब्जेक्ट और फ़ील्ड मैपिंग का पूरा आरेख है:

कंपोनेंट किसी भी ऑब्जेक्ट के साथ काम करते हैं। पैकेज के सैंपल ऑब्जेक्ट (Schedule, Event, Resource, Sub Block) केवल डिफ़ॉल्ट हैं। सेटिंग को सही फ़ील्ड वाले अपने कस्टम या स्टैंडर्ड ऑब्जेक्ट की ओर इशारा करें।

15. सभी प्रॉपर्टी का संदर्भ

तीनों कंपोनेंट की हर सेटिंग, उसी लेबल से जो आपको Lightning App Builder, Experience Builder और Flow Builder में दिखता है। हर लेबल के नीचे API नाम है।

सभी प्रॉपर्टी 100+ प्रॉपर्टी खोलने के लिए क्लिक करें: खोजने योग्य
प्रॉपर्टी Date Date Time Booking प्रकार डिफ़ॉल्ट विवरण
सेटअप
Config NameconfigName✓✓✓Stringखालीवैकल्पिक: Setup Wizard से बने Config__mdt रिकॉर्ड का DeveloperName। सेट होने पर उस कॉन्फ़िगरेशन की सभी फ़ील्ड/ऑब्जेक्ट सेटिंग डिफ़ॉल्ट के रूप में लागू होती हैं। यहाँ सेट की गई टेक्स्ट और नंबर प्रॉपर्टी कॉन्फ़िगरेशन को ओवरराइड करती हैं। चेकबॉक्स हमेशा कॉन्फ़िगरेशन से आते हैं: बिना टिक वाला बॉक्स और कभी सेट न किया गया बॉक्स, दोनों में फ़र्क नहीं किया जा सकता।
व्यू
Viewview✓✓✓Stringcalendarकौन-सा रेंडरर इस्तेमाल हो। calendar मासिक ग्रिड है (डिफ़ॉल्ट)। timeline संसाधनों को पंक्तियों में और तारीखों को कॉलम में दिखाता है। week दिन-और-घंटे का ग्रिड है। utilization क्षमता का हीटमैप है, केवल पढ़ने के लिए। agenda समय के क्रम में सूची है, केवल पढ़ने के लिए।
Available ViewsavailableViews✓✓✓Stringखालीस्विचर में दिए जाने वाले व्यू की कॉमा से अलग सूची, जैसे calendar,timeline,agenda। पाँचों देने के लिए खाली छोड़ें। ऊपर वाला डिफ़ॉल्ट View हमेशा शामिल रहता है।
Timeline Window (Days)timelineWindowDays✓✓✓Integer14टाइमलाइन व्यू एक बार में कितने दिन दिखाए। पूरे महीने में हर बुकिंग लगभग बीस पिक्सेल चौड़ी रह जाती है और हर लेबल कट जाता है, इसलिए डिफ़ॉल्ट 14 है। पूरा महीना दिखाने के लिए 0 सेट करें।
Timeline ZoomtimelineZoom✓✓✓Stringweekटाइमलाइन व्यू का शुरुआती ज़ूम: day (एक दिन के घंटे), week (Timeline Window) या month। देखते समय यूज़र ज़ूम बदल सकते हैं।
Timeline Group By FieldtimelineGroupByField✓✓✓Stringखालीसंसाधन ऑब्जेक्ट पर किसी फ़ील्ड का API नाम (जैसे Building__c), जिससे टाइमलाइन की पंक्तियाँ क्षमता पट्टी वाले हेडर के नीचे समूहित हों। एक सीधी सूची के लिए खाली छोड़ें।
Max View ResourcesmaxViewResources✓✓✓Integer0टाइमलाइन और उपयोग व्यू ज़्यादा से ज़्यादा कितनी संसाधन पंक्तियाँ दिखाएँ, सबसे व्यस्त पहले। इससे संसाधनों की लंबी सूची किसी भी व्यू को न पढ़ी जा सकने वाली दीवार नहीं बनाती।
Agenda FieldsagendaFields✓✓✓Stringखालीएजेंडा व्यू की हर पंक्ति पर रिकॉर्ड नाम के बाद दिखाए जाने वाले फ़ील्ड, कॉमा से अलग। Hover Fields दोबारा इस्तेमाल करने के लिए खाली छोड़ें। तारीख, समय और रिकॉर्ड नाम वाले फ़ील्ड अपने आप छोड़ दिए जाते हैं, क्योंकि पंक्ति उन्हें पहले से दिखाती है।
Resource RowsresourceViewFilter✓✓✓Stringallटाइमलाइन और उपयोग व्यू में किन संसाधनों की पंक्ति बने। all हर संसाधन दिखाता है; booked केवल उन्हें जिनकी मौजूदा विंडो में बुकिंग है। संसाधनों की लंबी सूची छोटी करने का यही बेहतर तरीका है, क्योंकि खाली पंक्ति छिपाने से कुछ नहीं खोता।
डिस्प्ले और लेआउट
Button Labellabel✓✓✓StringDate: Select Dates; Date Time: Select Dates & Times; Booking: Book Resourceतारीख पिकर खोलने वाले बटन पर दिखने वाला टेक्स्ट। उदाहरण: 'तारीखें चुनें' या 'तारीखें जोड़ें'
Calendar TitlemodalTitle✓✓✓StringDate: Select Dates; Date Time: Select Dates & Times; Booking: Book Resourceकैलेंडर modal के ऊपर दिखने वाला शीर्षक।
Show Inline (Always Visible)इस नाम से भी: Show Inline (No Button)showInline✓✓✓BooleantrueON होने पर कैलेंडर बिना बटन क्लिक किए हमेशा दिखता है। OFF होने पर एक बटन कैलेंडर को popup में खोलता है।
Two-Month ViewtwoMonthView✓✓✓BooleanfalseON होने पर रेंज आसानी से चुनने के लिए दो महीने अगल-बगल दिखते हैं। OFF होने पर एक बार में एक महीना।
Calendar SizecalendarSize✓✓✓Stringmediumकैलेंडर का कुल आकार तय करता है। मान्य मान: tiny, xsmall (Very Small), small, medium, large। डिफ़ॉल्ट medium है। utility bar, sidebar और डैशबोर्ड टाइल के लिए tiny या xsmall, तंग जगह के लिए small, ज़्यादातर लेआउट के लिए medium, और टच के अनुकूल अनुभव के लिए large।
Day Header FormatdayHeaderFormat✓✓✓String3सप्ताह के दिनों के हेडर की लंबाई। मान्य मान: 3, 2, 1। डिफ़ॉल्ट 3 है। 3 = SUN MON TUE, 2 = SU MO TU, 1 = S M T।
Week Starts on MondayweekStartsOnMonday✓✓✓BooleanfalseON होने पर कैलेंडर का सप्ताह सोमवार से शुरू होता है (ISO मानक)। OFF होने पर सप्ताह रविवार से शुरू होता है (US मानक)।
Show Recurring Pattern ButtonshowRecurringPattern✓✓✓BooleantrueON होने पर एक बटन दिखता है जिससे यूज़र किसी अंत तारीख तक सभी कार्यदिवस, सप्ताहांत या सप्ताह के खास दिन जल्दी से चुन सकते हैं।
Show Selection SummaryshowSelectedSummary✓✓✓BooleantrueON होने पर सारांश दिखता है कि कितनी और कौन-सी तारीखें चुनी गई हैं।
Show Done Button in Inline ModeshowDoneButtonInline✓✓✓BooleanfalseON होने पर और Show Inline चालू हो, तो एक हो गया (Done) बटन दिखता है जो कैलेंडर को सारांश व्यू में समेट देता है।
Show In-Component ToastshowSuccessToast✓✓✓Booleanfalseकंपोनेंट के अंदर सफलता/त्रुटि का toast दिखाता है (Experience साइट पर ज़रूरी, जहाँ स्टैंडर्ड toast नहीं दिखता)। रिकॉर्ड पेज पर भी काम करता है।
Show Add to Calendar After SavingshowAddToCalendar✓✓✓Booleanfalseसफलतापूर्वक सहेजने के बाद “कैलेंडर में जोड़ें” बटन एक कैलेंडर फ़ाइल (.ics) डाउनलोड करता है, जिसमें अभी सहेजे गए हर रिकॉर्ड का एक इवेंट होता है। यह Outlook, Google Calendar और Apple Calendar में खुलती है और Experience Cloud guest के लिए भी काम करती है। केवल तारीख वाले रिकॉर्ड पूरे दिन के इवेंट बनते हैं; समय वाले रिकॉर्ड अपना समय रखते हैं।
Calendar File Location FieldcalendarLocationField✓Stringखालीसंसाधन ऑब्जेक्ट पर किसी फ़ील्ड का API नाम, जिसका मान “कैलेंडर में जोड़ें” फ़ाइल में हर इवेंट का Location बनता है, जैसे किसी रूम का पता, या खुद रूम के लिए Name। जब संसाधन लोग हों, जैसे सलाहकार या टेक्नीशियन, तो खाली छोड़ें: उनका नाम इवेंट के शीर्षक में पहले से है, और व्यक्ति कोई जगह नहीं होता। Show Add to Calendar After Saving ज़रूरी है।
Success Toast Message (optional)successToastMessage✓✓✓Stringखालीसफलतापूर्वक सहेजने पर वैकल्पिक कस्टम संदेश। खाली हो तो डिफ़ॉल्ट संदेश।
चयन के नियम
Requiredrequired✓✓✓BooleanfalseON होने पर Flow के अगली स्क्रीन पर जाने से पहले यूज़र को कम से कम एक तारीख चुननी होगी।
Max Dates Allowedइस नाम से भी: Max Dates Per BookingmaxSelections✓✓✓Integer0यूज़र ज़्यादा से ज़्यादा कितनी तारीखें चुन सकता है। 0 = असीमित।
Max Time SlotsmaxTimeSlotSelection✓✓Integer0यूज़र कुल मिलाकर (सभी तारीखों में) ज़्यादा से ज़्यादा कितने टाइम स्लॉट चुन सकता है। 0 = असीमित।
Allow Past DatesallowPastDates✓✓✓BooleanDate: true; Date Time: true; Booking: falseON होने पर यूज़र कोई भी बीती तारीख चुन सकते हैं। OFF होने पर केवल आज और आगे की तारीखें चुनी जा सकती हैं।
Earliest Selectable Dateइस नाम से भी: Earliest Bookable DateminDate✓✓✓Dateखालीयूज़र जो सबसे पहली तारीख चुन सकते हैं। इससे पहले की तारीखें धूसर रहती हैं। उसी दिन की बुकिंग रोकनी हो, तो इसकी जगह Minimum Notice इस्तेमाल करें: वह घड़ी के साथ आगे बढ़ता है।
Latest Selectable Dateइस नाम से भी: Latest Bookable DatemaxDate✓✓✓Dateखालीयूज़र जो सबसे आखिरी तारीख चुन सकते हैं। इसके बाद की तारीखें धूसर रहती हैं।
Book Up To (Days Ahead)maxDaysAhead✓✓✓Integer0चलती हुई बुकिंग विंडो: आखिरी चुनी जा सकने वाली तारीख आज से इतने दिन आगे है, और यह हर दिन आगे खिसकती है। 0 का मतलब कोई सीमा नहीं। अगर Latest Selectable Date भी सेट है, तो दोनों में से जो पहले आए वही लागू होता है।
Minimum Notice (Hours)minNoticeHours✓✓✓Integer0जो कुछ अभी से इतने घंटों के अंदर शुरू होता है, उसे न चुना जा सकता है न सहेजा। पहले के दिन धूसर रहते हैं, और कट-ऑफ़ वाले दिन शुरुआती टाइम स्लॉट बंद हो जाते हैं। सहेजते समय दोबारा जाँच होती है, इसलिए रात भर खुला छोड़ा गया पेज भी नोटिस विंडो के अंदर बुक नहीं कर सकता। 0 का मतलब कोई न्यूनतम सीमा नहीं।
Pre-Selected DatesdefaultDates✓✓✓String[]खालीकैलेंडर खुलते समय पहले से चुनी हुई तारीखें। ISO फ़ॉर्मेट (YYYY-MM-DD) में दें।
Blocked DatesdisabledDates✓✓✓String[]खालीखास तारीखें जिन्हें चुना नहीं जा सकता (धूसर दिखती हैं)। छुट्टियों या ब्लैकआउट तारीखों के लिए इस्तेमाल करें। ISO फ़ॉर्मेट (YYYY-MM-DD) में दें।
Only These Dates Are SelectableavailableDates✓✓✓String[]खालीसेट होने पर केवल यही तारीखें चुनी जा सकती हैं: बाकी सब धूसर रहती हैं। ISO फ़ॉर्मेट (YYYY-MM-DD) में दें। तब काम का है जब मान्य तारीखें आपके Flow में किसी और स्रोत से आती हों।
Auto-Jump to First Available DateautoJumpToFirstAvailable✓✓✓BooleanfalseON होने पर और 'Only These Dates Are Selectable' सेट हो, तो कैलेंडर अपने आप पहली उपलब्ध तारीख वाले महीने पर खुलता है।
Allow Whole-Day (No Times)allowWholeDayNoTimes✓✓Booleanfalseचालू होने पर बिना टाइम स्लॉट के चुनी गई तारीख पूरे दिन का रिकॉर्ड सहेजती है (पूरा दिन ब्लॉक या बुक करती है)। टाइम स्लॉट वाली तारीखें समय वाले रिकॉर्ड के रूप में सहेजी जाती हैं।
रिकॉर्ड और सहेजना
Parent Record IdrecordId✓✓✓Stringखालीसेट होने पर कंपोनेंट Click to Save मोड में चलता है और इस parent से जुड़े चाइल्ड रिकॉर्ड लिखता है। Get Records या recordCreate आउटपुट से एक रिकॉर्ड Id दें (जैसे {!recordVar.Id})। स्टैंडर्ड parser+loop+create पैटर्न के लिए खाली छोड़ें।
Static Parent Record IdstaticRecordId✓✓✓Stringखालीखास स्थिति: इस कैलेंडर को एक ही parent रिकॉर्ड से बाँधने के लिए Record Id सीधे लिख दें। Record Page, App Page (static id ज़रूरी), Home Page (static id ज़रूरी) और Experience Site (static id ज़रूरी) पर काम करता है। Record Page पर खाली छोड़ें: पेज का रिकॉर्ड अपने आप डाल दिया जाता है।
Parent Record Id FieldparentRecordIdField✓✓✓Stringखालीकेवल तब चाहिए जब यह कंपोनेंट parent से अलग किसी दूसरे ऑब्जेक्ट के रिकॉर्ड पेज पर हो। असली parent की ओर इशारा करने वाले lookup फ़ील्ड का API नाम डालें। कंपोनेंट parent ऑब्जेक्ट के पेज पर हो तो खाली छोड़ें।
Child Object API Nameइन नामों से भी: Related Booking Object API Name; Child Object API Name (for preload)relatedObjectApiName✓✓✓Stringखालीउस ऑब्जेक्ट का API नाम जिसमें हर चुनी गई तारीख एक रिकॉर्ड के रूप में सहेजी जाती है। उदाहरण: Appointment__c, Schedule_Entry__c। Click to Save के लिए ज़रूरी।
Date Field API Nameइस नाम से भी: Date Field API Name (for preload)dateFieldApiName✓✓✓Stringखालीचाइल्ड ऑब्जेक्ट पर उस Date फ़ील्ड का API नाम जो चुनी गई तारीख रखता है। उदाहरण: Event_Date__c, Start_Date__c
End Date Field API Nameइस नाम से भी: End Date FieldendDateField✓✓✓Stringखालीचाइल्ड ऑब्जेक्ट पर End Date फ़ील्ड का API नाम। सेट होने पर लगातार चुनी गई तारीखें हर तारीख के अलग रिकॉर्ड की जगह आरंभ और अंत तारीख वाले एक रिकॉर्ड में जुड़ जाती हैं। उदाहरण: End_Date__c
Relationship Field API Nameइस नाम से भी: Parent Record Relationship FieldrelationshipFieldApiName✓✓✓Stringखालीचाइल्ड ऑब्जेक्ट पर उस lookup फ़ील्ड का API नाम जो parent रिकॉर्ड से जोड़ता है। उदाहरण: Account__c, Contact__c, Order__c
Load Existing Datesइस नाम से भी: Load Existing BookingspreloadExistingDates✓✓✓BooleantrueON होने पर मौजूदा चाइल्ड रिकॉर्ड query करता है और लोड होते ही उनकी तारीखें कैलेंडर में दिखाता है। Child Object, Date Field और Relationship Field ज़रूरी हैं।
Existing Dates Modeइस नाम से भी: Existing Bookings ModepreloadMode✓✓✓Stringeditableलोड की गई तारीखें कैसे दिखें। केवल तब लागू जब Load Existing Dates ON हो। मान्य मान: editable, readonly। डिफ़ॉल्ट: editable। editable = तारीखें चुनी हुई होती हैं और बदली जा सकती हैं। readonly = तारीखें धूसर दिखती हैं और हटाई नहीं जा सकतीं। Flow में यह फ़्री-टेक्स्ट इनपुट के रूप में दिखता है, इसलिए इनमें से कोई एक मान ठीक वैसा ही लिखें।
Save Button LabelsaveButtonLabel✓✓✓StringसहेजेंClick to Save मोड में सहेजें बटन का टेक्स्ट। उदाहरण: 'तारीखें सहेजें', 'चयन की पुष्टि करें'
Record Name FieldrecordNameField✓✓✓Stringखालीचाइल्ड ऑब्जेक्ट पर उस टेक्स्ट फ़ील्ड का API नाम जिसमें रिकॉर्ड का लेबल सहेजा जाता है। सेट होने पर यूज़र को लेबल लिखने के लिए एक टेक्स्ट इनपुट दिखता है।
Default Record NamedefaultRecordName✓✓✓Stringखालीरिकॉर्ड नाम का इनपुट पहले से भर देता है। यूज़र इसे चलते समय बदल सकते हैं। उदाहरण: 'PTO Day', 'Team Meeting'।
Append Date/Time to Record Nameइस नाम से भी: Append Date to Record NameappendDateTimeToName✓✓✓BooleantrueON होने पर रिकॉर्ड नाम में तारीख जोड़ देता है।
स्थिति और संपादन
Status FieldstatusField✓✓✓Stringखालीचाइल्ड ऑब्जेक्ट पर picklist/स्थिति फ़ील्ड का API नाम। कॉन्फ़िगर होने पर रिकॉर्ड नाम इनपुट के साथ एक स्थिति ड्रॉपडाउन दिखता है, ताकि यूज़र तारीखें चुनते समय स्थिति दे सकें। Status Colors, Ignored Statuses, Status Field Label और Enable Edit Mode के लिए ज़रूरी। उदाहरण: Status__c
Status ColorsstatusColors✓✓✓Stringखालीस्थिति मानों और hex रंगों की कॉमा से अलग मैपिंग। फ़ॉर्मेट: Value:#hex। स्थिति के रंग कैलेंडर के तारीख वाले खानों पर दिखते हैं। Status Field ज़रूरी है। उदाहरण: Confirmed:#22C55E, Tentative:#fbbf24, Pending:#60a5fa, Cancelled:#a1a8b5
Status Color DisplaystatusColorDisplay✓✓✓StringDate: calendar; Date Time: both; Booking: bothस्थिति के रंग कहाँ दिखें। Dates कंपोनेंट में केवल 'calendar' उपलब्ध है: कैलेंडर के तारीख वाले खाने अपनी स्थिति के रंग में दिखते हैं।
Ignored Statusesइस नाम से भी: Ignored StatuseshideBookingsWithStatus✓✓✓Stringखालीस्थिति मानों की कॉमा से अलग सूची, जिनके रिकॉर्ड कैलेंडर से छिपाए जाते हैं। छिपे रिकॉर्ड दिखाए नहीं जाते, पर Salesforce में बने रहते हैं। Status Field ज़रूरी है। उदाहरण: Cancelled, Rejected
Selectable Statuses (Status Picker)selectableStatuses✓✓✓Stringखालीबुकिंग का स्थिति पिकर कौन-से मान सेट कर सकता है, कॉमा से अलग। सभी की अनुमति (बैक-ऑफ़िस) के लिए खाली छोड़ें। जैसे ग्राहक साइट के लिए 'Scheduled'। अगर ठीक एक ही स्थिति चुनी जा सकती है, तो वह अपने आप चुन ली जाती है और पिकर छिप जाता है। Status Field ज़रूरी है।
Second Picklist FieldsecondStatusField✓✓✓Stringखालीवैकल्पिक दूसरे picklist फ़ील्ड का API नाम, जिसे यूज़र सहेजते समय चुनता है (जैसे Reason__c)। इसके रंग नहीं होते: कैलेंडर के रंग statusField तय करता है। इसे दिखाने के लिए Hover Popover Fields में जोड़ें। Flow, App Builder और Communities में काम करता है।
Second Picklist LabelsecondStatusFieldLabel✓✓✓Stringखालीदूसरे picklist ड्रॉपडाउन का वैकल्पिक लेबल। खाली हो तो कंपोनेंट फ़ील्ड के API नाम को पढ़ने लायक बना देता है।
Selectable Second-Picklist ValuesselectableSecondStatuses✓✓✓Stringखालीदूसरी picklist के उन मानों की वैकल्पिक कॉमा से अलग सूची जिन्हें यूज़र चुन सकता है। सभी के लिए खाली छोड़ें। ठीक एक मान हो, तो वह अपने आप चुन लिया जाता है और पिकर छिप जाता है।
Status Field LabelstatusFieldLabel✓✓✓Stringखालीend user को दिखने वाले स्थिति ड्रॉपडाउन का वैकल्पिक लेबल। यहाँ फ़ील्ड का API नाम न डालें: यह केवल दिखने वाला लेबल है। खाली हो तो कंपोनेंट Status Field के API नाम को अपने आप पढ़ने लायक बना देता है।
Hover Popover FieldshoverFields✓✓✓Stringखालीफ़ील्ड API नामों की कॉमा से अलग सूची, जो मौजूदा रिकॉर्ड वाली कैलेंडर तारीख पर होवर करने पर दिखते हैं। फ़ील्ड Child Object से query होते हैं। relationship फ़ील्ड सपोर्टेड हैं। डेटा केवल तब दिखता है जब मौजूदा रिकॉर्ड लोड हों (Load Existing Dates से)। उदाहरण: Name, Status__c, Notes__c। होवर popover बंद करने के लिए खाली छोड़ें।
Enable Edit ModeenableEditMode✓✓✓BooleantrueON होने पर यूज़र मौजूदा तारीखों पर क्लिक करके तारीख या स्थिति बदल सकते हैं, या रिकॉर्ड डिलीट कर सकते हैं। Status Field और Status Colors, दोनों का कॉन्फ़िगर होना ज़रूरी है।
Edit Button LabeleditButtonLabel✓✓✓Stringखालीसंपादन मोड टॉगल बटन का कस्टम लेबल। खाली छोड़ें तो डिफ़ॉल्ट 'Edit Dates' (दिनांक संपादित करें) होता है।
Edit Record DisplayeditRecordDisplay✓✓✓Stringखालीकॉमा से अलग keywords, जो तय करते हैं कि संपादन मोड की रिकॉर्ड सूची में कौन-से फ़ील्ड किस क्रम में दिखें। Keywords: name, status, time, date, resource। खाली होने पर डिफ़ॉल्ट: name, status, time। उदाहरण: name, date, status
टाइम स्लॉट
Time Display ModetimeDisplayMode✓Stringgridसमय कैसे दिखाया जाए। मान्य मान: grid, dropdown। डिफ़ॉल्ट: grid। grid = स्लॉट का विज़ुअल ग्रिड, जिसमें यूज़र क्लिक या ड्रैग करके टाइम ब्लॉक चुनते हैं। dropdown = lightning-input टाइम पिकर। dropdown मोड में साझा या हर तारीख के अलग पिकर के लिए Allow Different Times Per Date इस्तेमाल करें। Flow में यह फ़्री टेक्स्ट के रूप में दिखता है, इसलिए इनमें से कोई एक मान ठीक वैसा ही लिखें।
Time Interval (Minutes)इस नाम से भी: Time Slot Interval (Minutes)timeInterval✓✓Integer30टाइम स्लॉट के बीच के मिनट। कोई भी पूर्ण संख्या चलती है; आम तौर पर 15, 30 या 60 मिनट। उदाहरण: 30 से 9:00, 9:30, 10:00 दिखते हैं।
Earliest TimeminTime✓String09:00टाइम सिलेक्टर में दिखने वाला सबसे पहला समय। 24 घंटे का फ़ॉर्मेट (HH:mm) इस्तेमाल करें। उदाहरण: 08:00 = सुबह 8:00, 13:00 = दोपहर 1:00। रात 12:00 बजे से शुरू करने के लिए खाली छोड़ें।
Latest TimemaxTime✓String18:00टाइम सिलेक्टर में दिखने वाला सबसे आखिरी समय। 24 घंटे का फ़ॉर्मेट (HH:mm) इस्तेमाल करें। उदाहरण: 17:00 = शाम 5:00, 20:00 = रात 8:00। रात 11:30 पर खत्म करने के लिए खाली छोड़ें।
Start Time Fieldइस नाम से भी: Start Time Field API NamestartTimeField✓Stringखालीचाइल्ड ऑब्जेक्ट पर स्लॉट के आरंभ समय के लिए Time फ़ील्ड का API नाम। उदाहरण: Start_Time__c
End Time Fieldइस नाम से भी: End Time Field API NameendTimeField✓Stringखालीचाइल्ड ऑब्जेक्ट पर स्लॉट के अंत समय के लिए Time फ़ील्ड का API नाम। उदाहरण: End_Time__c
Allow Different Times Per DateallowDifferentTimes✓✓BooleanfalseON होने पर और Time Display Mode 'dropdown' हो, तो हर तारीख का अपना टाइम पिकर होता है (सप्ताह के हिसाब से समूहित)। OFF होने पर सभी तारीखें एक ही समय साझा करती हैं। Time Display Mode 'grid' हो तो इसका कोई असर नहीं।
Enable End TimeenableEndTime✓BooleantrueON होने पर Start Time के साथ अलग End Time ड्रॉपडाउन दिखता है। JSON आउटपुट में startTime और endTime दोनों आते हैं। केवल dropdown मोड (Time Display Mode = 'dropdown') में लागू। grid मोड में कोई असर नहीं।
Group Time Slots by PeriodgroupTimeSlotsByPeriod✓✓BooleanfalseON होने पर टाइम स्लॉट सुबह, दोपहर और शाम के हिस्सों में बँट जाते हैं। OFF (डिफ़ॉल्ट) होने पर एक सीधा ग्रिड दिखता है। केवल तब लागू जब Time Display Mode 'grid' हो।
Time Grid OnlytimeGridOnly✓✓BooleanfalseON होने पर कैलेंडर पूरी तरह छिप जाता है और एक तय तारीख के लिए केवल टाइम स्लॉट ग्रिड दिखता है। यूज़र टाइम स्लॉट चुनता है; रिकॉर्ड Click to Save से host रिकॉर्ड पर सहेजे जाते हैं (तारीख चुनने का स्टेप नहीं)। तारीख Time Grid Date से आती है, वह न हो तो Time Grid Date Field से, वरना आज की।
Time Grid DatetimeGridDate✓✓StringखालीTime Grid Only ON होने पर तय तारीख के लिए वैकल्पिक ISO तारीख (YYYY-MM-DD)। सबसे ऊँची प्राथमिकता। Time Grid Date Field से पढ़ने या आज की तारीख लेने के लिए खाली छोड़ें।
Time Grid Date FieldtimeGridDateField✓✓StringखालीTime Grid Only ON होने पर (रिकॉर्ड पेज पर) host रिकॉर्ड के उस Date फ़ील्ड का वैकल्पिक API नाम, जिससे तारीख पढ़ी जाए। केवल तब इस्तेमाल होता है जब Time Grid Date खाली हो। उदाहरण: Appointment_Date__c
Disable Time Slot Grid (Full-Day Mode)disableTimeSlotGrid✓BooleanfalseON होने पर पूरे दिन की बुकिंग के लिए टाइम स्लॉट ग्रिड छिप जाता है, जहाँ केवल तारीख मायने रखती है। OFF (डिफ़ॉल्ट) होने पर समय के हिसाब से बारीक बुकिंग के लिए टाइम स्लॉट ग्रिड दिखता है।
संसाधन और क्षमता
Resource Object API NameresourceObjectApiName✓Stringखालीबुक किए जा सकने वाले संसाधनों को रखने वाले ऑब्जेक्ट का API नाम। हर रिकॉर्ड = ड्रॉपडाउन में दिखने वाला एक संसाधन। उदाहरण: Room__c, Equipment__c, Vehicle__c, Staff__c
Resource Name FieldresourceNameField✓StringNameसंसाधन का दिखने वाला नाम रखने वाले फ़ील्ड का API नाम। आम तौर पर 'Name'।
Resource Filter Field (optional)resourceFilterField✓Stringखालीसंसाधन ऑब्जेक्ट पर उस फ़ील्ड का API नाम जिससे पिकर में दिखने वाले संसाधन सीमित होते हैं। Resource Filter Value के साथ इस्तेमाल करें। कई फ़ील्ड जोड़ने (AND) के लिए ';' लगाएँ। उदाहरण: 'Active__c' (एक boolean फ़ील्ड), 'Type__c' (एक picklist), 'Type__c;Building__c' (AND से जुड़े दो फ़ील्ड)। हर संसाधन दिखाने के लिए खाली छोड़ें।
Resource Filter Value (optional)resourceFilterValue✓Stringखालीफ़िल्टर फ़ील्ड का मान जो मेल खाना चाहिए। एक ही फ़ील्ड के मानों के बीच ',' = OR (IN clause)। मानों के बीच ';' = कई फ़ील्ड में AND (Resource Filter Field में फ़ील्ड की संख्या से मेल खाना चाहिए)। उदाहरण: 'true': Active=true। 'Conference Room': Type=Conference Room। 'North,South': Building IN North या South। 'Conference Room;North': Type=Conference Room AND Building=North। 'Conference Room;North,South': Type=Conference Room AND Building IN North या South।
Business Hours Start FieldbusinessHoursStartField✓Stringखालीसंसाधन ऑब्जेक्ट पर उस Time फ़ील्ड का API नाम जो बताता है कि संसाधन हर दिन कब से उपलब्ध है। उदाहरण: Business_Hours_Start__c (सुबह 8:00 के लिए 08:00:00.000Z)। पूरे कॉन्फ़िगर किए गए अंतराल के टाइम स्लॉट के लिए खाली छोड़ें।
Business Hours End FieldbusinessHoursEndField✓Stringखालीसंसाधन ऑब्जेक्ट पर उस Time फ़ील्ड का API नाम जो हर दिन का आखिरी उपलब्ध समय बताता है। उदाहरण: Business_Hours_End__c (शाम 6:00 के लिए 18:00:00.000Z)।
Allow Multiple Resourcesइस नाम से भी: Allow Booking Multiple ResourcesallowMultipleResources✓BooleanfalseON होने पर यूज़र चेकबॉक्स से कई संसाधन चुनकर सबको एक साथ बुक कर सकते हैं। टाइम ग्रिड केवल वही स्लॉट दिखाता है जो सभी चुने गए संसाधनों पर उपलब्ध हों। उदाहरण: एक ही समय पर एक रूम और एक प्रोजेक्टर बुक करना।
Allow No Resourceइस नाम से भी: Allow Save Without Picking a ResourceallowNoResource✓BooleanfalseON होने पर यूज़र बिना कोई संसाधन चुने सहेज सकते हैं: सहेजे गए रिकॉर्ड का संसाधन lookup खाली (null) रहता है। यह बंदी या ब्लैकआउट लिखने वालों के लिए है, जहाँ खाली संसाधन का मतलब है 'सब पर लागू'। जो कैलेंडर प्रति-संसाधन फ़िल्टर (blockedDatesResourceField) से बंदी पढ़ते हैं, वे null संसाधन को पूरे क्षेत्र पर लागू मानते हैं, इसलिए allowNoResource के साथ यह 'वैकल्पिक सलाहकार दायरा' पैटर्न देता है। सामान्य बुकिंग के लिए, जहाँ संसाधन हमेशा चुनना ज़रूरी है, इसे OFF (डिफ़ॉल्ट) रखें।
Booking Object API NameresourceBookingObject✓Stringखालीउस ऑब्जेक्ट का API नाम जिसमें बुकिंग रिकॉर्ड बनते हैं। हर संसाधन की हर तारीख का एक रिकॉर्ड। उदाहरण: Room_Booking__c, Equipment_Reservation__c
Booking Date FieldbookingDateField✓Stringखालीबुकिंग ऑब्जेक्ट पर Date फ़ील्ड का API नाम। Date टाइप होना चाहिए (DateTime नहीं)। उदाहरण: Booking_Date__c
Booking Resource FieldbookingResourceField✓Stringखालीबुकिंग ऑब्जेक्ट पर संसाधन की ओर इशारा करने वाले lookup फ़ील्ड का API नाम। उदाहरण: Room__c (Room_Booking__c से Room__c तक lookup)
Booking Start Time FieldbookingStartTimeField✓Stringखालीबुकिंग ऑब्जेक्ट पर आरंभ समय के Time फ़ील्ड का API नाम। उदाहरण: Start_Time__c। बिना टाइम स्लॉट वाली केवल तारीख की बुकिंग के लिए खाली छोड़ें।
Booking End Time FieldbookingEndTimeField✓Stringखालीबुकिंग ऑब्जेक्ट पर अंत समय के Time फ़ील्ड का API नाम। उदाहरण: End_Time__c। सिस्टम चुने गए स्लॉट से अंत समय निकालता है।
Book Button LabelresourceBookButtonLabel✓StringBookबुकिंग की पुष्टि करने वाले बटन का टेक्स्ट। उदाहरण: 'अभी बुक करें', 'आरक्षित करें', 'बुकिंग कन्फ़र्म करें'
Capacity FieldcapacityField✓Stringखालीसंसाधन ऑब्जेक्ट पर उस Number फ़ील्ड का API नाम जो हर टाइम स्लॉट में ज़्यादा से ज़्यादा एक साथ होने वाली बुकिंग तय करता है। सेट होने पर स्लॉट पर X/Y बैज दिखता है और भरने तक स्लॉट उपलब्ध रहता है। ट्रेनिंग रूम, hot desk या क्लास रजिस्ट्रेशन के लिए आदर्श। हर स्लॉट में एक बुकिंग के लिए खाली छोड़ें। उदाहरण: Capacity__c
Capacity Aggregation (multi-resource)capacityAggregation✓StringCombinedकेवल क्षमता बुकिंग मोड (Capacity Field ज़रूरी)। कई संसाधन चुने जाने पर X/Y क्षमता कैसे गिनी जाए, यह तय करता है। COMBINED (डिफ़ॉल्ट) बुकिंग और क्षमता दोनों को जोड़ता है: तब सबसे अच्छा जब हर संसाधन अलग इन्वेंटरी हो (जैसे 5-5 क्षमता वाले 4 रूम में 4 रिकॉर्ड = 4/20)। DISTINCT अलग-अलग इवेंट गिनता है (संसाधनों में एक ही तारीख + आरंभ समय + अंत समय वाले रिकॉर्ड एक गिने जाते हैं) और किसी एक संसाधन की सबसे बड़ी क्षमता लेता है: तब सबसे अच्छा जब एक इवेंट एक साथ कई संसाधनों पर हो (4 रूम में 4 रिकॉर्ड = 1/5)।
Show Availability CountshowAvailabilityCount✓BooleantrueON होने पर संसाधन पैनल में उपलब्धता का विवरण दिखता है (जैसे '3/5 दिन उपलब्ध')। इससे यूज़र बुक करने से पहले सबसे अच्छा संसाधन चुन पाते हैं। Resource Object API Name कॉन्फ़िगर होना ज़रूरी है।
टकराव
Conflict BehaviorconflictBehavior✓✓Stringblockचुनी गई तारीखों का समय मौजूदा रिकॉर्ड से टकराए तो क्या हो, यह तय करता है। 'block' (डिफ़ॉल्ट): सहेजना रुक जाता है और टकराने वाली तारीखें हाइलाइट होती हैं। 'skip': सहेजना होता है, पर टकराने वाली तारीखें छोड़ दी जाती हैं। 'allow': कोई टकराव जाँच नहीं। केवल grid-shared मोड में लागू (Time Display Mode='grid' + Allow Different Times Per Date=OFF)।
Buffer Between Bookings (Minutes)bufferMinutes✓✓Integer0हर मौजूदा बुकिंग के बाद सफ़ाई या तैयारी के लिए खाली रखे जाने वाले मिनट; Booking में हर संसाधन के लिए अलग। जो समय बफ़र के अंदर शुरू होता, उसे हर उस जगह भरा हुआ माना जाता है जहाँ उपलब्धता दिखती है (टाइम ग्रिड, क्षमता की गिनती, सप्ताह व्यू में ड्रैग) और सहेजते समय भी, और आगे क्या हो यह Conflict Behavior तय करता है। उदाहरण: 15 डालने पर एक ही रूम में दो मीटिंग के बीच पंद्रह मिनट रहते हैं।
Conflict Look-Ahead DaysconflictLookAheadDays✓✓Integer360टाइम स्लॉट के टकराव जाँचने और उपलब्धता लोड करने के लिए कितने दिन आगे तक देखा जाए। डिफ़ॉल्ट: 360। ज़्यादा डेटा वाले ऑब्जेक्ट पर बेहतर परफ़ॉर्मेंस के लिए इसे घटाएँ।
Sub-block
Consolidate Time SpanconsolidateTimeSpan✓✓BooleanfalseON होने पर चुने गए टाइम स्लॉट पहले स्लॉट के आरंभ से आखिरी स्लॉट के अंत तक एक ही अवधि के रूप में आउटपुट होते हैं। चुने गए स्लॉट के बीच के अंतराल अपने आप नारंगी हो जाते हैं और sub-block के रूप में दर्ज होते हैं। उन शेड्यूलिंग स्थितियों के लिए जहाँ पूरी शिफ़्ट की अवधि (जैसे सुबह 9 से शाम 5) चाहिए और ब्रेक अलग से दर्ज करने हों। केवल grid मोड में लागू।
Sub-Block Button LabelsubBlockModeButtonLabel✓✓Stringखालीसेट होने पर एक टॉगल बटन जुड़ता है जिससे यूज़र स्लॉट को खुद sub-block (नारंगी) चिह्नित कर सकते हैं। काम की अवधि के किनारे वाले sub-block के लिए उपयोगी। केवल अपने आप नारंगी होने के लिए खाली छोड़ें। उदाहरण: 'ब्रेक के रूप में चिह्नित करें', 'लंच के रूप में चिह्नित करें'। Consolidate Time Span का ON होना ज़रूरी है।
Show Sub-Block Toggle ButtonshowSubBlockButton✓✓BooleanfalseON होने पर टाइम ग्रिड के हेडर में sub-block टॉगल बटन दिखता है। Consolidate Time Span ON और Sub-Block Button Label सेट होना ज़रूरी है।
Sub-Block Object API NamesubBlockObjectApiName✓✓Stringखालीsub-block रिकॉर्ड के चाइल्ड ऑब्जेक्ट का API नाम। उदाहरण: Work_Break__c। Consolidate Time Span ON और Click to Save मोड (Parent Record Id सेट) ज़रूरी है।
Sub-Block Parent Lookup FieldsubBlockParentLookupField✓✓Stringखालीsub-block ऑब्जेक्ट पर parent रिकॉर्ड से जोड़ने वाला lookup फ़ील्ड। उदाहरण: Shift__c। Sub-Block Object सेट हो तो ज़रूरी।
Sub-Block Date FieldsubBlockDateField✓✓Stringखालीsub-block ऑब्जेक्ट पर तारीख फ़ील्ड। उदाहरण: Break_Date__c। Sub-Block Object सेट हो तो ज़रूरी।
Sub-Block Start Time FieldsubBlockStartTimeField✓✓Stringखालीsub-block ऑब्जेक्ट पर आरंभ समय फ़ील्ड। उदाहरण: Break_Start__c। Sub-Block Object सेट हो तो ज़रूरी।
Sub-Block End Time FieldsubBlockEndTimeField✓✓Stringखालीsub-block ऑब्जेक्ट पर अंत समय फ़ील्ड। उदाहरण: Break_End__c। Sub-Block Object सेट हो तो ज़रूरी।
Sub-Block Name FieldsubBlockNameField✓✓Stringखालीsub-block ऑब्जेक्ट पर लेबल रखने वाला टेक्स्ट फ़ील्ड। उदाहरण: Break_Name__c। Sub-Block Object सेट हो तो ज़रूरी।
अवरुद्ध तारीखें
Blocked Dates ObjectblockedDatesSourceObject✓✓✓Stringखालीउस ऑब्जेक्ट का API नाम जिससे वे तारीखें query की जाती हैं जिन्हें चुनने से रोकना है। उदाहरण: Public_Holiday__c
Blocked Dates Date FieldblockedDatesDateField✓✓✓Stringखालीअवरुद्ध तारीखों वाले ऑब्जेक्ट पर Date फ़ील्ड का API नाम। Blocked Dates Object सेट होना ज़रूरी है।
Blocked Dates Start Time FieldblockedDatesStartTimeField✓✓✓Stringखालीवैकल्पिक: अवरुद्ध ऑब्जेक्ट पर वह Time फ़ील्ड जो दिन के कुछ हिस्से वाली बंदी का आरंभ बताता है। जब Start और End Time दोनों फ़ील्ड सेट हों और किसी अवरुद्ध रिकॉर्ड में दोनों मान हों, तो उस तारीख पर केवल वही समय-सीमा बंद होती है (बाकी बुक हो सकता है)। पूरे दिन की ब्लॉकिंग के लिए खाली छोड़ें।
Blocked Dates End Time FieldblockedDatesEndTimeField✓✓✓Stringखालीवैकल्पिक: अवरुद्ध ऑब्जेक्ट पर वह Time फ़ील्ड जो दिन के कुछ हिस्से वाली बंदी का अंत बताता है। Blocked Dates Start Time Field के साथ इस्तेमाल होता है।
Blocked Dates Resource FieldblockedDatesResourceField✓✓✓Stringखालीवैकल्पिक: किसी मौजूदा बंदी को एक संसाधन तक सीमित करता है। अवरुद्ध ऑब्जेक्ट पर lookup/संसाधन फ़ील्ड का API नाम दें; जब किसी अवरुद्ध रिकॉर्ड का संसाधन कैलेंडर में चुने गए संसाधन से मेल खाता है, तो उस समय-सीमा के लिए केवल वही संसाधन बंद होता है। खाली छोड़ें तो हर बंदी सभी संसाधनों पर लागू होती है (पूरे क्षेत्र पर)। ब्लॉकिंग खुद Blocked Dates Source Object से चालू होती है, इस फ़ील्ड से नहीं। केवल संसाधन बुकिंग में मायने रखता है।
Blocked Dates Filter FieldblockedDatesFilterField✓✓✓Stringखालीवैकल्पिक: अवरुद्ध ऑब्जेक्ट पर फ़िल्टर फ़ील्ड। दो मोड: (a) value मोड: Blocked Dates Filter Value सेट हो, तो अवरुद्ध रिकॉर्ड को <field> = <value> से सीमित करता है (जैसे Status__c = Cancelled)। (b) parent-scope मोड: Filter Value खाली हो, तो इस फ़ील्ड को मौजूदा रिकॉर्ड का lookup मानता है और <field> = recordId से सीमित करता है। हर जगह ब्लॉक करने के लिए खाली छोड़ें।
Blocked Dates Filter ValueblockedDatesFilterValue✓✓✓Stringखालीवैकल्पिक: Blocked Dates Filter Field को किस मान से फ़िल्टर करें। सेट होने पर अवरुद्ध रिकॉर्ड का <filterField> = <filterValue> से मेल खाना ज़रूरी है (जैसे Status__c = Cancelled)। इससे एक ही टेबल में कई तरह के ब्लॉक साथ रह सकते हैं: हर कैलेंडर चुनता है कि उस पर कौन-सी श्रेणी लागू हो।
Flow आउटपुट
Output Date Ranges as JSONoutputAsJson✓✓BooleanfalseON होने पर Date Ranges JSON आउटपुट में लगातार तारीखें रेंज में समूहित होकर भरी जाती हैं। रेंज पर loop चलाने के लिए MultiDatePickParser एक्शन इस्तेमाल करना हो तो ज़रूरी।
Selected Dates (Output)selectedDates✓✓String[]खालीआउटपुट: ISO फ़ॉर्मेट (YYYY-MM-DD) में सभी चुनी गई तारीखों का array। अपने Flow में रिकॉर्ड बनाने या अगली स्क्रीन को देने के लिए इस्तेमाल करें।
Date Ranges JSON (Output)selectedDateRangesJson✓✓Stringखालीआउटपुट: रेंज में समूहित लगातार तारीखों का JSON। केवल तब भरा जाता है जब 'Output Date Ranges as JSON' ON हो। Flow में loop के लिए MultiDatePickParser को दें।
Dates With Times JSON (Output)selectedDatesWithTimesJson✓Stringखालीआउटपुट: हर तारीख और उसके चुने गए समय वाली JSON string। अपने Flow में loop के लिए MultiDatePickParser को दें।
Sub-Blocks JSON (Output)subBlocksJson✓Stringखालीआउटपुट: हर तारीख की sub-block (अंतराल/ब्रेक) अवधियों का JSON। केवल तब भरा जाता है जब Consolidate Time Span ON हो। चाइल्ड रिकॉर्ड बनाने के लिए Flow loop में इस्तेमाल करें।
Successful Bookings Count (Output)bookingSuccessCount✓Integerखालीआउटपुट: सफलतापूर्वक बने बुकिंग रिकॉर्ड की संख्या। अपने Flow में पुष्टि संदेश दिखाने के लिए इस्तेमाल करें।
Conflict Dates (Output)bookingConflictDates✓String[]खालीआउटपुट: उन तारीखों की सूची जिन पर मौजूदा आरक्षण से टकराव के कारण बुकिंग नहीं बन सकी।

16. सुरक्षा और एक्सेसिबिलिटी

  • Salesforce AppExchange Security Review पास।
  • 100% नेटिव। आपका डेटा आपके Salesforce org में ही रहता है। कोई बाहरी सर्वर नहीं, कोई callout नहीं। Trust और Security देखें।
  • हमेशा आपकी अनुमतियाँ। हर पढ़ना और सहेजना यूज़र के अपने एक्सेस से चलता है, इसलिए हर रिकॉर्ड पर ऑब्जेक्ट अनुमतियाँ, field-level security और sharing लागू रहती हैं।
  • सुलभ (Accessible)। WCAG 2.1 AA, axe-core से टेस्ट किया गया। पूरा VPAT 2.5।
  • 9 भाषाएँ: अंग्रेज़ी, स्पैनिश, फ़्रेंच, जर्मन, जापानी, हिंदी, पुर्तगाली (ब्राज़ील), इतालवी, चीनी (सरलीकृत)।

17. सवाल या बग?

इस गाइड में कुछ छूटा है, या कुछ टूटा हुआ मिला? support@multidatepick.com पर ईमेल करें।

अपने org में देखने के लिए तैयार हैं?

$20 प्रति यूज़र प्रति माह, हर फ़ीचर शामिल, 30 दिन का फ़्री ट्रायल। जल्द ही Salesforce AppExchange पर।