Demo — Booking Motor
Panduan demo per alur untuk modul Booking: menahan satu unit Tersedia untuk satu pelanggan di cabang yang sama, memantau umur booking, dan membatalkannya sehingga unit kembali tersedia.
Semua gambar diambil dari build develop yang berjalan dengan data uji (database terpisah, satu akun per role, cabang Cabang E2E A).
Cara membaca gambar
- Kotak biru = tombol atau kolom yang diklik atau diisi.
- Kotak hijau = hasil yang benar; kotak merah = ditolak atau gagal.
- Kotak ungu = keterangan tambahan.
- Pita hitam di bawah gambar = alur dan role yang sedang berjalan.
Akun yang dipakai
| Role | Nama | Username | Dipakai di alur |
|---|---|---|---|
| Admin PDI | Agus Salim | e2e_admin_pdi | 1, 2, 3, 4 |
| SPV | Yusuf Hidayat | e2e_spv | 5 |
| Kepala Cabang | Dewi Lestari | e2e_kepala_cabang | 5 |
| ADH | Sri Wahyuni | e2e_adh | 6 |
| Kawil | Bambang Sutrisno | e2e_kawil | 6 |
Password semua akun uji sama.
Siapa boleh apa
| Kegiatan | Role |
|---|---|
| Booking Unit (membuat) | Superadmin, Kepala Cabang, Admin PDI |
| Batalkan booking | Superadmin, Kepala Cabang, Admin PDI, SPV |
| Melihat daftar | Superadmin, Kawil, Kepala Cabang, Admin PDI, Admin H1, Sales, SPV, ADH |
Semua baris diamati di layar (alur 5, 6, 9, 10). Sales hanya melihat booking untuk pelanggannya sendiri, dan semua role selain Superadmin hanya melihat cabangnya (Kawil: cabang binaannya).
Alur satu halaman
Pelanggan + unit Tersedia ──> Booking Unit ──> Diproses (unit Booked, umur bertambah per hari)
│ │
Batalkan (unit
Tersedia lagi)
1. Melihat daftar Booking
Role: Admin PDI (Agus Salim)
- Buka Booking → Booking Motor.
- Kolom: Tgl Booking, Umur (hari unit ditahan, 0 pada hari booking), Pelanggan (dengan no telepon), Unit (dengan no rangka), Cabang, Status (Diproses, Dibatalkan, Selesai), Oleh.
- Filter: Status, urutan Terbaru dulu / Terlama dulu.

2. Membuat booking
Role: Admin PDI (Agus Salim)
- Tekan Booking Unit.
- Cari dan pilih Pelanggan (di demo: Dian Pratiwi).
- Buka pilihan Unit: hanya unit Tersedia di cabang pelanggan yang ditawarkan. Unit yang sudah booked tidak muncul.

- Pilih unit, tekan Booking.

- Toast *Unit dibooking untuk Dian Pratiwi*; baris baru berstatus Diproses, umur 0 hari.

3. Umur booking dan urutan terlama
Role: Admin PDI (Agus Salim)
Pilih status Diproses dan urutan Terlama dulu: unit yang paling lama ditahan (14 hari) ada di atas, diikuti 5 hari dan 0 hari.

4. Membatalkan booking: unit kembali Tersedia
Role: Admin PDI (Agus Salim)
- Selama booking Diproses, unit berstatus Booked di Stok Motor.

- Pada baris booking tekan Batalkan; konfirmasi *Unit kembali berstatus tersedia dan dapat dibooking pelanggan lain*.

- Toast *Booking dibatalkan, unit kembali tersedia*. Baris menjadi Dibatalkan, Umur menjadi —, dan tombol Batalkan hilang.

- Di Stok Motor unit itu kembali Tersedia.

5. SPV dan Kepala Cabang
Role: SPV (Yusuf Hidayat), Kepala Cabang (Dewi Lestari)
SPV melihat daftar tanpa tombol Booking Unit, tetapi boleh Batalkan.

Setelah SPV membatalkan, baris menjadi Dibatalkan; kolom Oleh tetap nama pembuat booking, bukan pembatal.

Kepala Cabang punya keduanya: Booking Unit dan Batalkan.

6. Role yang hanya membaca
Role: ADH (Sri Wahyuni), Kawil (Bambang Sutrisno)
Daftar tampil, tetapi tidak ada tombol Booking Unit dan Batalkan pada booking yang Diproses. Bila membatalkan lewat API, ADH ditolak 403 Role adh is not allowed here.


7. Booking Selesai (menjadi transaksi)
Role: Admin PDI (Agus Salim); transaksi dibuat oleh Admin H1
Setelah transaksi dibuat dari unit yang dibooking, status booking menjadi Selesai: Umur menjadi —, tombol Batalkan hilang.

Di Stok Motor unit itu tetap berstatus Booked (belum Terjual) setelah transaksi dibuat.

8. Pelanggan cabang lain
Role: Admin PDI (Agus Salim), cabang A
- Di dialog Booking Unit mencari pelanggan cabang B (Siti Rahmawati): tidak ada hasil.

- Lewat API pelanggan itu dengan unit cabang A:
404*Pelanggan dengan ID ... tidak ditemukan* (Admin PDI), dan400*Pelanggan dan unit harus berada di cabang yang sama* (Superadmin, yang bisa melihat pelanggan tersebut).
9. Superadmin
Role: Superadmin (Hendra Wijaya)
Memilih pelanggan cabang B, unit yang ditawarkan hanya unit Tersedia cabang B, lalu Booking.

Daftar memuat semua cabang, ada filter Semua cabang (hanya Superadmin), Booking Unit dan Batalkan.

10. Admin H1 dan Sales
Admin H1 melihat booking cabangnya tanpa tombol Booking Unit dan Batalkan:

Sales (cabang A) melihat daftar tanpa tombol; booking pelanggan cabang B tidak muncul:

Sales cabang B (Joko Prasetyo) hanya melihat booking pelanggan cabang B:

Penolakan dari server (tombol tidak tersedia di UI, dicoba lewat API):
| Percobaan | Jawaban |
|---|---|
| Admin H1 atau Sales membuat booking | 403 *Role admin_h1 / sales is not allowed here* |
| Admin H1 atau Sales membatalkan booking | 403 *Role admin_h1 / sales is not allowed here* |
| ADH membatalkan booking | 403 *Role adh is not allowed here* |
| Admin PDI cabang A membatalkan booking cabang B | 404 *Booking dengan ID ... tidak ditemukan* |
| Sales cabang A membaca booking cabang B | 404 *Booking dengan ID ... tidak ditemukan* |
Catatan teknis gambar
- Tanggal booking selalu hari ini, jadi umur 14 dan 5 hari dibuat dengan memundurkan
tgl_bookinglangsung di database demo. - Font dasar dikecilkan lewat CSS suntikan agar tabel muat; perilaku tidak berbeda.
- Data demo ada di database
tirto_demo1_e2e. Skrip:_tools/booking.mjs.