Mode Gelap
Day-Use Hotel
Modul Day-Use memungkinkan hotel menjual kamar dalam mode selain overnight (menginap satu malam atau lebih). Ada 4 jenis tipe stay yang bisa diaktifkan per tipe kamar.
Path menu: Pengaturan → Day-Use Hotel (/settings/hotel/day-use)
Untuk hotel apa?
- Hotel transit / airport — tamu butuh kamar 6–8 jam sebelum penerbangan
- Hotel city / butik — meeting room / staycation half-day
- Resort / villa dengan ruang serbaguna — sewa harian non-overnight
- Hotel villa overnight murni — fitur ini tetap opsional, default OFF, behavior identik tanpa Day-Use
4 Jenis Stay Type
| Stay Type | Durasi | Contoh Penggunaan | Cara Charge |
|---|---|---|---|
| Overnight | Multi-malam, default 14:00 → 12:00 keesokan hari | Menginap biasa | rate × jumlah malam |
| Day Use | 1 hari penuh, mis. 10:00–18:00 (6–12 jam) | Staycation siang, day pass | rate × 1 session |
| Half Day | Setengah hari, mis. 08:00–12:00 atau 13:00–17:00 (3–7 jam) | Meeting room, transit pendek | rate × 1 session |
| Hourly | Pay-per-hour, durasi custom (min 2 jam) | Transit short, ruang meeting per jam | rate × jumlah jam |
Overnight selalu wajib — semua tipe kamar minimal allow overnight. Stay type lain bersifat opsional dan bisa di-aktif/non-aktifkan per tipe kamar.
Cara Aktivasi (3 Langkah)
Langkah 1 — Aktifkan Master Switch
Buka Pengaturan → Day-Use Hotel dan aktifkan toggle Master Switch.
Setelah master switch aktif:
- Form reservasi akan menampilkan dropdown "Tipe Menginap"
- Form rate plan akan menampilkan section "Harga per Tipe Stay"
- Calendar akan punya toggle "Timeline View"
- Dashboard akan menampilkan badge "DAY-USE" saat ada booking non-overnight hari itu
Default Waktu yang bisa diatur:
| Setting | Default | Keterangan |
|---|---|---|
| Overnight Check-In | 14:00 | Jam check-in standar overnight |
| Overnight Check-Out | 12:00 | Jam check-out standar overnight |
| Day-Use Check-In | 10:00 | Default jam mulai untuk day_use |
| Day-Use Check-Out | 18:00 | Default jam selesai untuk day_use |
| Half-Day Default Durasi | 4 jam | Durasi default saat memilih half_day |
| Hourly Min Durasi | 2 jam | Minimum jam untuk reservasi hourly |
| Housekeeping SLA | 120 menit | Window cleaning maksimum antara checkout & next check-in (back-to-back) |
Master switch OFF (default)
Jika master switch dimatikan, sistem menolak semua reservasi non-overnight di backend (bahkan jika UI bypass). Hotel villa murni bisa biarkan default OFF — perilaku 100% identik dengan tanpa modul Day-Use.
Langkah 2 — Set Allowed Stay Types per Tipe Kamar
Buka Master Data → Tipe Kamar lalu edit tipe kamar yang relevan. Scroll ke section Allowed Stay Types dan centang stay type yang allowed:
Aturan:
- Overnight selalu tercentang — tidak bisa di-uncheck
- Stay type lain hanya bisa dicentang jika master switch aktif
- Bisa berbeda per tipe kamar (mis. villa = overnight only, meeting room = half_day + hourly, suite = overnight + day_use)
Contoh konfigurasi hotel campuran:
| Tipe Kamar | Allowed Stay Types |
|---|---|
| Standar Room | Overnight, Hourly |
| Deluxe | Overnight |
| Suite | Overnight, Day Use |
| Family Room | Overnight |
| Meeting Room | Day Use, Half Day, Hourly |
Daftar tipe kamar di halaman list akan menampilkan kolom Stay Types dengan badge berwarna untuk masing-masing yang aktif:
Langkah 3 — Set Harga per Tipe Stay di Rate Plan
Buka Master Data → Rate Plans lalu edit rate plan. Section Harga per Tipe Stay akan otomatis muncul jika tipe kamar yang dipilih punya >1 allowed stay type:
Aturan:
- Overnight wajib — auto-sync dengan field "Harga per Malam" di atas
- Stay type lain opsional — uncheck jika rate plan ini tidak menggunakan stay type tersebut
- Hanya stay type yang allowed di tipe kamar yang dipilih akan ditampilkan
Contoh konfigurasi rate:
| Tipe Stay | Standar Room | Suite | Meeting Room |
|---|---|---|---|
| Overnight | Rp 300.000 / malam | Rp 750.000 / malam | — |
| Day Use | — | Rp 500.000 / session | Rp 600.000 / session |
| Half Day | — | — | Rp 300.000 / session |
| Hourly | Rp 50.000 / jam | — | Rp 80.000 / jam |
Rate belum dikonfigurasi
Jika sebuah stay type allowed di tipe kamar tapi rate-nya belum di-set, sistem akan menolak reservasi dengan pesan: "rate belum dikonfigurasi untuk stay_type 'X' di tipe kamar ini". Pastikan setiap stay type yang allowed punya rate.
Membuat Reservasi Day-Use
Buka Reservasi → Tambah Reservasi dan ikuti flow normal. Setelah memilih guest dan tipe kamar yang mendukung non-overnight, dropdown Tipe Menginap akan muncul:
Field yang berubah saat memilih non-overnight:
- Check-In Date & Check-Out Date — wajib same day (auto-set sama)
- Check-In Time & Check-Out Time — muncul time picker, default sesuai setting (mis. 10:00–18:00 untuk day_use)
- Tarif — auto-fetch dari rate plan, label berubah ("/malam" → "/jam" / "/session")
- Untuk hourly: Estimasi Total ditampilkan =
rate × jumlah jam
Validasi yang berjalan otomatis:
- Hourly < 2 jam → "durasi hourly minimal 2 jam"
- Half-day di luar 3–7 jam → "durasi half_day harus 3-7 jam"
- Day-use di luar 6–12 jam → "durasi day_use harus 6-12 jam"
- Stay type tidak allowed di tipe kamar → "stay_type 'X' tidak diaktifkan untuk room_type ini"
Setelah submit, halaman detail reservasi akan menampilkan badge stay type, jam check-in/out, dan durasi (bukan jumlah malam):
Back-to-Back Booking
Back-to-back = 1 kamar dipakai 2× (atau lebih) dalam satu hari oleh tamu yang berbeda dengan time slot tidak overlap.
Contoh: Kamar 103 di tanggal 12 Mei 2026
Jam: 00 ─── 06 ─── 12 ─── 14 ─── 18 ─── 20 ─── 23
│ │ │ │
Tamu A: ████████████████ (overnight, checkout 12:00)
Tamu B: ████████████ (hourly, 14:00-20:00)
Gap: ←── 2 jam HK cleaning ──→Hasil: 1 kamar dijual 2× dalam 12 Mei → revenue 2× dari kamar yang sama.
Aturan Overlap (di-enforce backend otomatis)
| Skenario | Hasil |
|---|---|
| End reservasi 1 < Start reservasi 2 (no overlap) | ✅ Both confirmed |
| End reservasi 1 > Start reservasi 2 (overlap) | ❌ Reject reservasi kedua: "kamar sudah dipesan jam X-Y" |
| Gap < SLA housekeeping (mis. 30 menit) | ⚠️ Bisa dibuat, tapi task HK auto-set priority high + badge URGENT |
| Gap = 0 (back-to-back persis) | ⚠️ Sama seperti di atas, deadline = now + 30 menit minimum |
Housekeeping SLA Tracking
Saat tamu A check-out dan ada reservasi B yang akan check-in di kamar yang sama dalam 24 jam, sistem otomatis:
- Membuat task Housekeeping Cleaning dengan
expected_completion_at=next.check_in_time - SLA buffer(default 120 menit sebelum next check-in) - Set priority = High
- Tampilkan kolom SLA Deadline di halaman Housekeeping Tasks dengan color coding:
- 🔴 OVERDUE — deadline sudah lewat
- 🟡 URGENT — sisa < 30 menit
- 🔵 Normal — masih cukup waktu
Calendar Timeline View
Untuk visualisasi multi-occupancy, Reservasi → Kalender Reservasi punya 2 mode (toggle muncul kalau master switch aktif):
Date Matrix (default)
Tampilan tradisional: kamar di Y-axis, tanggal di X-axis, cell = jumlah kamar tersedia. Cocok untuk planning multi-night.
Timeline View (untuk day-use)
Tampilan 24-jam: kamar di Y-axis, jam (00–23) di X-axis. Block reservasi color-coded per stay type:
| Warna Block | Stay Type |
|---|---|
| 🔵 Biru | Overnight |
| 🟣 Ungu | Day Use |
| 🟡 Pink | Half Day |
| 🟠 Amber | Hourly |
Pilih tanggal dengan datepicker → klik block reservasi → langsung navigate ke detail. Indikator "✓ Hari ini ada non-overnight" muncul di atas tabel jika ada day-use/half-day/hourly booking di tanggal tersebut.
Dashboard Occupancy Awareness
Saat hari yang sedang ditampilkan ada non-overnight booking, card Occupancy Rate di Dashboard Hotel akan menampilkan:
- Badge DAY-USE (warna ungu) di sebelah judul card
- Metric tambahan Transactional % di bawah Occupancy Rate utama
Beda metrik:
| Metrik | Formula | Range | Kapan Dipakai |
|---|---|---|---|
| Time-Weighted (default) | rooms occupied / total rooms × 100 | 0–100% | Snapshot saat ini, bagus untuk villa |
| Transactional | today_check_ins / total rooms × 100 | bisa >100% | Sold-room-nights basis, account for turnover |
Contoh: hotel 10 kamar, 8 check-in hari ini (5 overnight + 3 day-use turnover di kamar yg sama dengan overnight checkout pagi):
- Time-weighted: 8/10 = 80% (saat snapshot 14:00 kalau sebagian sudah checkout)
- Transactional: 8/10 = 80% (count semua check-in)
Kalau hari sangat sibuk dengan banyak day-use turnover (mis. 15 check-in di 10 kamar):
- Time-weighted: max 100%
- Transactional: 150% — tampil sebagai metric tambahan supaya manajemen tahu hari turnover tinggi
Public Booking (Status: Belum Tersedia)
Saat ini fitur Day-Use hanya bisa diakses dari backoffice (FD/admin). Public booking page (untuk tamu booking online sendiri) tidak men-display dropdown stay type — semua reservasi public default overnight.
Hotel transit yang butuh public day-use booking bisa:
- Terima inquiry via WhatsApp/telepon → FD input via backoffice
- Tunggu fitur public booking day-use (di-roadmap, akan di-aktifkan saat ada signal market)
FAQ
Bagaimana cara matikan Day-Use setelah aktif?
Buka Pengaturan → Day-Use Hotel → toggle Master Switch ke OFF → Simpan. Reservasi non-overnight yang sudah ada tidak terhapus (tetap bisa di-checkout/manage), tapi reservasi baru hanya bisa overnight.
Apakah backward-compatible dengan rate plan lama?
Ya. Rate plan existing otomatis dapat row overnight dengan rate = Harga per Malam saat migration V22 dijalankan. Tidak ada data loss.
Channel manager / OTA support?
Lihat istilah day-use di industri channel manager — Booking.com, Expedia, DayUse.com, dll punya support tapi naming berbeda. Saat integrasi channel manager nanti, perlu adapter layer mapping stay_type → vendor-specific room_type/product_type.
Reservasi hourly minimal berapa jam?
Default 2 jam, bisa diubah di setting Hourly Min Durasi. Sistem reject jika kurang.
Bisakah 1 reservasi mix stay type (overnight + day-use)?
Tidak — 1 reservasi = 1 stay type. Untuk multi-occupancy 1 kamar 1 hari, buat 2 reservasi berbeda (back-to-back booking).
Apakah perlu dilakukan migration database manual?
Tidak — migrasi V21, V22, V23 otomatis dijalankan saat backend service start. Status migrasi bisa dicek via support team.
Bagaimana cara tracking revenue per stay type?
Field stay_type ada di setiap row reservations. Untuk laporan Revenue per Stay Type, bisa request ke Liburania support atau gunakan query custom.
Troubleshooting
| Masalah | Penyebab | Solusi |
|---|---|---|
| Dropdown "Tipe Menginap" tidak muncul saat create reservasi | Master switch OFF, atau room_type cuma allow overnight | Aktifkan master switch, atau tambah allowed stay type lain di tipe kamar |
| Submit reservasi: "rate belum dikonfigurasi" | Rate plan tidak punya row untuk stay type yang dipilih | Buka rate plan, centang & isi rate untuk stay type tersebut, simpan |
| Submit reservasi: "durasi minimal X jam" | Time picker melanggar batasan durasi per stay type | Atur ulang check-in / check-out time sesuai aturan |
| Calendar Timeline View tidak muncul tombolnya | Master switch OFF | Aktifkan master switch di Pengaturan Day-Use |
| Block kamar tidak terdeteksi back-to-back | Reservasi B kelelawan 24 jam dari checkout A | Sistem hanya track back-to-back dalam window 24 jam |
| HK task tidak punya SLA deadline | Tidak ada reservasi B di kamar yang sama dalam 24 jam | Normal, deadline tidak set kalau tidak ada back-to-back |