التوفر والتقويم
كيف يقرر المنتج أي الليالي خالية، وكيف يعرضها تقويم الموقع وتقويم لوحة التحكم، والتواريخ المحظورة، والاحتجازات، والمنطقة الزمنية للشركة.
لحزمة الحزمة الكاملة
ليالٍ لا أيام
كل حجز وكل نطاق محظور يشغل الفترة نصف المفتوحة [check-in, check-out): يوم الوصول مأخوذ، ويوم المغادرة حر. ضيف يغادر في العاشر يحرّر العاشر للوافد التالي، وحجز من ثلاث ليال يغطي ثلاث ليال.
- خدمة واحدة في واجهة API تجيب أي الليالي خالية، من الحجوزات التي تحتفظ بليالٍ مع النطاقات المحظورة. يسألها تقويم الموقع وبطاقة الحجز وإتمام الطلب وتقويم لوحة التحكم والمساعد الذكي، فلا يمكن أن يختلفوا.
- الحجوزات قيد الانتظار والمؤكدة وتلك التي سُجّل وصولها والمكتملة تحتفظ بلياليها. والحجز الملغى لا يحتفظ بشيء، فلا يقف أبدًا في طريق حجز جديد.
- كل تاريخ هو يوم تقويمي في المنطقة الزمنية للشركة، إعداد
timezone(America/New_York)، يُكتبYYYY-MM-DD، وليس لحظة أبدًا. وهذا هو معنى «اليوم» في الوصول والتقويم ونافذة الإلغاء والاحتجازات، على جانبي تغيير التوقيت الصيفي.
ما تقبله الإقامة
| الرفض | متى | ما تقوله واجهة API |
|---|---|---|
past | مضى يوم الوصول | «اختر تاريخ وصول لم يمض بعد.» |
min_nights | ليالٍ أقل من الحد الأدنى للإقامة | «لمكان الإقامة هذا حد أدنى لعدد الليالي.» |
capacity | ضيوف أكثر مما تتسع له الإقامة | «لا يتسع مكان الإقامة هذا لهذا العدد من الضيوف.» |
taken | حجز أو حظر يشغل إحدى الليالي بالفعل | «هذه الليالي محجوزة بالفعل.» |
يتحقق عرض السعر وإتمام الطلب من الأربعة نفسها، ويتحقق إتمام الطلب منها مرة أخرى حين يُكتب الحجز، فلا يمكن أن يدفع ضيفان عن الليلة نفسها.
الاحتجازات
- يحتفظ حجز البطاقة أو PayPal بلياليه منذ لحظة إنشائه، قبل إرسال الضيف إلى المعالج، مدة 30 دقيقة. وإذا لم يُسوَّ الدفع بحلولها، يلغي فحص دوري يعمل كل دقيقة الحجز ويحرّر الليالي.
- الحجز بالدفع عند الوصول الذي ينتظر المضيف لا احتجاز له: يحتفظ بلياليه حتى يؤكده المضيف أو يلغيه.
- الحجز المدفوع يحتفظ بلياليه حتى يُلغى.
التقويم في الموقع
تعرض صفحة الإقامة شهرين وتميّز خمس حالات، لكل منها لون في مفتاح الرموز:
| الحالة | المعنى |
|---|---|
| متاح | حر للاختيار |
| غير متاح | في الماضي، أو مغادرة تقع داخل الحد الأدنى للإقامة |
| محجوز | محتجز بحجز أو حظر، ومشطوب |
| محدد | الوصول والمغادرة المختاران |
| ضمن النطاق | الليالي بينهما، بتعبئة أفتح من الليلة المحجوزة |
تسعّر بطاقة الحجز بجانبه الليالي المختارة بمجرد اختيار اليومين.
التقويم في لوحة التحكم
- يعرض
/en/dashboard/calendarشهرًا من الليالي، وصفًا لكل إقامة. يغطي شريط الحجز لياليه ويتوقف قبل يوم المغادرة، ويفتح تفاصيل الحجز. - تخرج نافذة التواريخ المحظورة ليالي إقامة من التقويم، من أول ليلة إلى يوم مغادرة، مع سبب (صيانة أو استخدام الشركة أو أخرى) وملاحظة اختيارية. وتُرفض حين يشغل حجز أو حظر آخر إحدى تلك الليالي، وتسميه النافذة: «الحجز B0021 يشغل بعض هذه الليالي بالفعل. اختر تواريخ أخرى.»، أو الشيء نفسه لحظر مثل
K003. - تحتفظ حقول التاريخ باليوم الذي تختاره أيًا كانت المنطقة الزمنية للحاسوب، فلا يقع حظر أو مرشح على اليوم السابق أبدًا.
- يُسرد كل حظر تحت التقويم، الأقرب أولًا، للتعديل أو الإزالة.
- إذا كانت الإقامة مدرجة أيضًا في موقع آخر، فاحظر الليالي المحجوزة هناك يدويًا: ليس في المنتج مدير قنوات ولا استيراد iCal ولا تصديره.
من يستطيع فعل ماذا
| الصلاحية | يتيح |
|---|---|
calendar.view | رؤية الشهر والحظر |
calendar.block | إضافة الحظر وتغييره وإزالته |
الدوران المضافان، Super Admin وManager، يملكان الاثنتين.
المسارات خلفه
- يجيب
GET /api/stays/:slug/availability?from=&to=بالليالي المحجوزة لإقامة منشورة لمدة 92 يومًا على الأكثر في المرة، ويجيبGET /api/stays/:slug/quote?checkIn=&checkOut=&guests=بلياليها والمجموع الفرعي ورسوم التنظيف والإجمالي، معavailableوسبب الرفض. GET /api/calendar?month=YYYY-MM&stay=هو عرض الشهر في لوحة التحكم.- يسرد
/api/availability/blocksالحظر ويضيفه (stay_idوfromوtoوreasonوnoteاختياريان) ويغيّره ويزيله. ويجيب التعارض بـ409معcode: "dates_taken"وdetails: { "held_by": "booking", "reference": "B0021" }(أو"block"ومرجعK) وmessageالمترجمة «الحجز B0021 يشغل بعض هذه الليالي بالفعل.»