> For the complete documentation index, see [llms.txt](https://docs.diro.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.diro.app/operasional/jadwal-layanan.md).

# Mengatur Jadwal Layanan

Jadwal menentukan slot apa yang dilihat pelanggan. Ini bagian yang paling menentukan apakah storefront Anda menerima booking atau terlihat kosong.

Buka **Data Master → Layanan → pilih layanan → Jadwal**. Ada dua tab.

## Dua tab, dua fungsi

```mermaid
flowchart TD
  A["Jadwal Operasional & Harga<br/>(tab mingguan)"] -->|"berulang tiap minggu"| C{{"Slot yang tampil<br/>pada satu tanggal"}}
  B["Jadwal Tanggal Tertentu<br/>(tab specific date)"] -->|"menimpa jadwal mingguan<br/>pada tanggal itu"| C
  R["Ketersediaan Resource<br/>(provider / ruangan)"] -->|"memotong slot"| C
```

**Tab Jadwal Operasional & Harga** — pola mingguan. Anda mengatur per hari (Senin sampai Minggu): buka atau tutup, dan slot waktu apa saja yang tersedia di hari itu. Pola ini berlaku terus, setiap minggu, tanpa tanggal akhir.

**Tab Jadwal Tanggal Tertentu** — pengecualian. Berlaku hanya pada tanggal yang Anda sebutkan, dan **menimpa** jadwal mingguan pada tanggal itu. Dipakai untuk libur, jadwal khusus, atau sesi yang tidak berulang.

{% hint style="info" %}
Aturannya sederhana: **kalau ada jadwal tanggal tertentu untuk suatu tanggal, jadwal mingguan diabaikan untuk tanggal itu.** Bukan digabung — diganti.
{% endhint %}

## Isi sebuah hari

Setiap hari (atau tanggal) berisi satu atau lebih **slot waktu**. Tiap slot punya:

| Kolom                   | Fungsi                                                                                             |
| ----------------------- | -------------------------------------------------------------------------------------------------- |
| **Nama**                | Label opsional, misal "Sesi Pagi", "Kelas Sore". Tampil ke pelanggan.                              |
| **Jam mulai & selesai** | Rentang waktu slot.                                                                                |
| **Kapasitas**           | Berapa booking yang muat di slot ini. Isi `1` untuk sesi privat, `12` untuk kelas berisi 12 orang. |
| **Harga**               | Opsional. Kalau diisi, menimpa harga dasar layanan — untuk harga akhir pekan atau jam sibuk.       |
| **Provider / ruangan**  | Resource mana yang bertugas di slot ini, lengkap dengan harga khusus per provider bila ada.        |
| **Batas waktu booking** | Opsional. Menimpa batas booking layanan khusus untuk slot ini.                                     |

Selain slot, tiap hari juga bisa punya **waktu terkunci** — potongan waktu di tengah hari yang tidak bisa dibooking, misalnya istirahat makan siang. Beri nama, jam mulai, dan jam selesai.

## Contoh 1 — Salon dengan jam operasional harian

Bisnis buka Selasa sampai Minggu, 10.00–20.00, istirahat 13.00–14.00, tutup setiap Senin.

Di tab **Jadwal Operasional & Harga**:

* Senin — nonaktifkan hari ini.
* Selasa sampai Minggu — aktif, satu slot `10:00–20:00`, kapasitas sesuai jumlah kursi Anda.
* Tambahkan waktu terkunci `13:00–14:00` bernama "Istirahat" di setiap hari aktif.

Pelanggan akan melihat slot mengikuti durasi layanan di dalam rentang itu, dengan jeda makan siang tidak tersedia.

## Contoh 2 — Kelas yoga mingguan

Kelas Vinyasa setiap Selasa dan Kamis, jam 18.00–19.00, maksimal 12 peserta.

Di tab **Jadwal Operasional & Harga**:

* Selasa — aktif, satu slot `18:00–19:00`, nama "Vinyasa Flow", kapasitas `12`, provider: instruktur yang mengajar.
* Kamis — sama.
* Hari lain — nonaktif.

Kelas ini otomatis berulang setiap minggu tanpa Anda sentuh lagi. Pelanggan melihatnya di halaman **Timetable** storefront.

## Contoh 3 — Kelas rutin yang kadang perlu diubah atau dibatalkan

Masalah dengan Contoh 2: kalau instruktur berhalangan tanggal 12, Anda tidak bisa membatalkan satu pertemuan saja — jadwal mingguan berlaku untuk semua minggu sekaligus.

Solusinya **Materialize**. Fitur ini mengubah pola mingguan menjadi entri tanggal-per-tanggal untuk rentang waktu yang Anda pilih.

```mermaid
flowchart LR
  W["Pola mingguan<br/>Selasa 18:00"] -->|"Materialize<br/>1–31 Oktober"| D1["Sel, 7 Okt 18:00"]
  W --> D2["Sel, 14 Okt 18:00"]
  W --> D3["Sel, 21 Okt 18:00"]
  W --> D4["Sel, 28 Okt 18:00"]
  D2 -.->|"bisa diedit atau<br/>dibatalkan sendiri"| X["Ditutup:<br/>instruktur cuti"]
```

Cara pakainya:

1. Buat pola mingguannya dulu di tab Jadwal Operasional & Harga.
2. Buka **Materialize**, pilih rentang tanggal — misal 1 Oktober sampai 31 Desember.
3. Jalankan. Setiap pertemuan sekarang jadi baris tersendiri di tab Jadwal Tanggal Tertentu.
4. Edit atau nonaktifkan pertemuan tertentu sesuai kebutuhan.

{% hint style="warning" %}
Setelah di-materialize, tanggal-tanggal itu **tidak lagi mengikuti** jadwal mingguan. Kalau Anda mengubah jam kelas di tab mingguan, tanggal yang sudah dimaterialisasi tetap memakai jam lamanya. Ubah keduanya, atau materialize ulang untuk rentang berikutnya.
{% endhint %}

## Contoh 4 — Sesi bulanan atau jadwal tidak beraturan

Workshop yang jalan sebulan sekali, atau sesi yang tanggalnya Anda tentukan manual.

DIRO **tidak punya aturan perulangan bulanan** ("setiap Sabtu pertama") sebagai pengaturan tersendiri. Yang perlu Anda lakukan: masukkan tanggal-tanggalnya sebagai jadwal tanggal tertentu.

Di tab **Jadwal Tanggal Tertentu**, satu entri bisa mencakup:

* **Satu tanggal** — 5 Oktober.
* **Rentang tanggal** — 5 sampai 9 Oktober, jadwal sama untuk semua hari di rentang itu.
* **Daftar tanggal** — 5 Oktober, 2 November, 7 Desember sekaligus dalam satu entri.

Untuk workshop bulanan, pakai bentuk **daftar tanggal**: masukkan semua tanggal satu kuartal ke depan dalam satu entri, dengan slot waktu dan kapasitas yang sama. Tambahkan tanggal berikutnya saat mendekati akhir periode.

## Contoh 5 — Menutup tanggal tertentu

Libur nasional, renovasi, atau cuti bersama.

Di tab **Jadwal Tanggal Tertentu**, buat entri untuk tanggal (atau rentang tanggal) tersebut dan **nonaktifkan statusnya**. Karena jadwal tanggal tertentu menimpa jadwal mingguan, tanggal itu jadi tertutup meskipun jadwal mingguannya buka.

## Durasi, jeda, dan pilihan durasi

Di form layanan (bukan di tab jadwal):

* **Durasi** — berapa lama satu booking berlangsung. Ini yang memecah rentang slot jadi pilihan jam untuk pelanggan.
* **Jeda tambahan** — waktu bersih-bersih atau persiapan setelah booking, sebelum booking berikutnya boleh mulai.
* **Batas waktu booking minimum** — berapa lama sebelum jadwal, pelanggan masih boleh booking.
* **Maksimal booking per slot** — kapasitas dasar, bisa ditimpa per slot waktu.

Satu layanan juga bisa punya **beberapa pilihan durasi** dengan harga berbeda — misalnya pijat 60 menit Rp 150.000 dan 90 menit Rp 210.000. Pelanggan memilih durasinya saat booking, dan slot dihitung sesuai durasi yang dipilih.

## Ketersediaan resource memotong jadwal

Jadwal layanan menentukan kapan layanan **bisa** dijalankan. Ketersediaan provider dan ruangan menentukan siapa yang **sanggup** menjalankannya.

Kalau sebuah slot menugaskan tiga terapis dan hanya satu yang tersedia pada jam itu menurut jadwal resource-nya, pelanggan hanya melihat satu pilihan. Kalau tidak ada satu pun yang tersedia, slot tersebut tidak muncul sama sekali.

Atur ini di **Data Master → Resources → Item Resource → pilih item → Jadwal**. Formatnya mingguan per hari. Lihat [Resource: Provider & Ruangan](/operasional/resource.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.diro.app/operasional/jadwal-layanan.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
