Skip to content

Instantly share code, notes, and snippets.

@ifindev
Created March 9, 2026 11:40
Show Gist options
  • Select an option

  • Save ifindev/fbcb8728499275030c5d6c36f8178dde to your computer and use it in GitHub Desktop.

Select an option

Save ifindev/fbcb8728499275030c5d6c36f8178dde to your computer and use it in GitHub Desktop.
PRD Sistem Managemen Rental Mobil
# Product Definition Document
## Sistem Manajemen Rental Mobil (RentalKu)
> **Versi:** 1.0 — Draft
>
>
> **Tanggal:** 27 Februari 2026
>
> **Status:** In Review
>
---
# 1. Product Overview
## 1.1 Deskripsi Produk
**RentalKu** (nama sementara) adalah platform SaaS (Software as a Service) berbasis web untuk manajemen operasional usaha rental mobil di Indonesia. Platform ini membantu pemilik usaha rental mengelola armada kendaraan, booking & penyewaan, pencatatan keuangan, serta koordinasi karyawan — semuanya dalam satu sistem terpusat yang menggantikan pencatatan manual, spreadsheet, dan koordinasi via chat.
## 1.2 Target Pengguna
Platform ini ditujukan untuk **pemilik usaha rental mobil skala kecil hingga menengah** di Indonesia, dengan karakteristik umum:
- Memiliki armada 3–50 unit kendaraan
- Memiliki 1–10 karyawan (admin kantor, driver, staff lapangan)
- Saat ini mengelola operasional secara manual atau semi-manual
- Membutuhkan visibilitas yang lebih baik terhadap performa bisnis mereka
## 1.3 Masalah yang Dipecahkan
| Masalah | Dampak |
| --- | --- |
| Tracking kendaraan manual | Owner tidak tahu real-time status setiap mobil (tersedia, disewa, maintenance) |
| Tidak ada sistem booking terpusat | Rawan double-booking dan jadwal bentrok |
| Catatan keuangan tidak terstruktur | Tidak tahu profit per kendaraan, occupancy rate, atau kesehatan bisnis secara keseluruhan |
| Koordinasi karyawan via chat | Dokumentasi serah-terima mobil tidak standar, sulit di-audit, rawan terlewat |
| Tidak ada dokumentasi kondisi kendaraan | Sengketa kerusakan dengan penyewa sulit diselesaikan tanpa bukti |
## 1.4 Model Bisnis Platform
RentalKu beroperasi dengan model **SaaS berbayar dengan gated access dan free trial**:
- Pemilik platform (Super Admin) mengontrol siapa yang boleh menggunakan platform.
- Setiap usaha rental yang ingin menggunakan platform harus **mendaftar dan menunggu approval** dari Super Admin.
- Setelah di-approve, tenant mendapat **free trial selama 14 hari** dengan akses penuh ke semua fitur — tanpa perlu membayar di muka.
- Tujuan free trial adalah membiarkan pemilik rental **merasakan langsung manfaat sistem** sebelum memutuskan berlangganan, mengingat target pengguna kemungkinan besar belum terbiasa menggunakan software manajemen.
- Setelah trial berakhir, akses berubah menjadi **read-only** — tenant masih bisa login dan melihat semua data yang sudah di-input, tapi tidak bisa melakukan aksi apapun (buat booking, tambah kendaraan, dll). Pendekatan ini dipilih karena data yang sudah dimasukkan menjadi insentif kuat untuk berlangganan, dibandingkan memblokir akses sepenuhnya yang justru mempermudah tenant untuk move on.
- Untuk menjadi **Active** (berbayar), tenant menghubungi Super Admin dan melakukan pembayaran.
- Pembayaran dikelola **secara manual** di fase awal (transfer bank → verifikasi manual → aktivasi).
---
# 2. Arsitektur Aplikasi (High-Level)
## 2.1 Dua Sisi Sistem
RentalKu secara konseptual terdiri dari **dua sisi** yang saling terkait namun memiliki fungsi dan pengguna yang berbeda:
```
┌─────────────────────────────────────────────────────────┐
│ RENTALKU PLATFORM │
│ │
│ ┌──────────────────┐ ┌────────────────────────────┐ │
│ │ SUPER ADMIN │ │ TENANT APPLICATION │ │
│ │ PANEL │ │ │ │
│ │ │ │ ┌──────┐ ┌──────┐ ┌────┐ │ │
│ │ • Kelola Tenant │ │ │Rental│ │Rental│ │ .. │ │ │
│ │ • Approval │ │ │ A │ │ B │ │ │ │ │
│ │ • Monitoring │ │ └──────┘ └──────┘ └────┘ │ │
│ │ │ │ (masing-masing terisolasi) │ │
│ └──────────────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
```
**Super Admin Panel** adalah sisi yang hanya bisa diakses oleh pemilik platform (kamu). Fungsinya adalah mengelola seluruh tenant yang terdaftar — approve pendaftaran baru, mengaktifkan/menonaktifkan tenant, dan memonitor platform secara keseluruhan. Super Admin tidak ikut campur dalam operasional rental masing-masing tenant.
**Tenant Application** adalah sisi yang diakses oleh setiap usaha rental. Setiap tenant beroperasi dalam ruang datanya sendiri yang terisolasi penuh — Rental A tidak bisa melihat atau mengakses data Rental B, dan sebaliknya. Di dalam tenant-nya masing-masing, owner rental berperan sebagai Admin yang mengelola kendaraan, booking, keuangan, dan karyawan.
## 2.2 Hubungan Antar Sisi
Interaksi antara kedua sisi ini terjadi terutama pada **proses onboarding tenant**:
1. Calon tenant mendaftar melalui halaman registrasi publik.
2. Super Admin menerima notifikasi dan mereview pendaftaran.
3. Setelah pembayaran dikonfirmasi, Super Admin meng-approve tenant.
4. Tenant berstatus aktif dan bisa mulai menggunakan Tenant Application.
Setelah tenant aktif, kedua sisi beroperasi secara independen. Super Admin hanya perlu intervensi saat ada perubahan status tenant (perpanjangan, suspend, dll).
---
# 3. User Roles & Permissions
## 3.1 Ringkasan Roles
Sistem memiliki **tiga role utama** yang beroperasi di dua level berbeda:
| Role | Level | Deskripsi Singkat |
| --- | --- | --- |
| **Super Admin** | Platform | Pemilik platform. Mengelola semua tenant dan konfigurasi platform. |
| **Tenant Admin** | Tenant | Pemilik/pengelola usaha rental. Akses penuh ke semua fitur dalam tenant-nya. |
| **Tenant Staff** | Tenant | Karyawan rental. Akses terbatas sesuai yang diizinkan oleh Tenant Admin. |
## 3.2 Detail Permissions
### Super Admin (Platform Owner)
Super Admin adalah satu-satunya role yang beroperasi di **Platform Level**. Satu orang (atau tim kecil) yang mengelola seluruh platform RentalKu.
**Bisa melakukan:**
- Melihat daftar semua tenant beserta statusnya
- Approve atau reject pendaftaran tenant baru
- Mengaktifkan, suspend, atau menonaktifkan tenant
- Mengatur masa aktif langganan tenant
- Melihat statistik platform (jumlah tenant aktif, pertumbuhan, dll.)
- Mengakses konfigurasi global platform
**Tidak bisa / tidak perlu melakukan:**
- Mengakses data operasional internal tenant (kendaraan, booking, keuangan milik tenant)
- Membuat booking atau transaksi atas nama tenant
> **Catatan:** Pembatasan akses Super Admin terhadap data internal tenant ini adalah keputusan desain yang penting untuk membangun kepercayaan tenant terhadap platform. Jika di kemudian hari diperlukan akses untuk keperluan support/troubleshooting, ini bisa ditambahkan dengan mekanisme consent dari tenant.
>
### Tenant Admin (Owner Rental)
Tenant Admin adalah pemilik atau pengelola utama sebuah usaha rental. Mereka adalah "raja" di dalam tenant-nya sendiri.
**Bisa melakukan:**
- **Kendaraan:** Menambah, mengedit, menghapus data kendaraan; melihat seluruh riwayat dan kondisi armada
- **Booking:** Membuat, mengedit, membatalkan booking; melihat kalender ketersediaan; mengelola seluruh lifecycle rental
- **Pelanggan:** Mengelola data pelanggan; melihat riwayat rental per pelanggan; menandai blacklist
- **Keuangan:** Melihat seluruh data keuangan; mencatat pemasukan dan pengeluaran; mengakses laporan dan metrik bisnis; export data
- **Staff:** Menambah dan menghapus akun staff; mengatur permission staff
- **Pengaturan Tenant:** Mengonfigurasi profil usaha, harga default, kebijakan denda, dan pengaturan operasional lainnya
**Tidak bisa melakukan:**
- Mengakses data tenant lain
- Mengakses Super Admin Panel
- Mengubah status langganan sendiri (ini dikontrol oleh Super Admin)
### Tenant Staff (Karyawan Rental)
Tenant Staff adalah karyawan yang diberikan akses terbatas oleh Tenant Admin. Akses mereka secara default minimal dan bisa diperluas oleh Tenant Admin sesuai kebutuhan.
**Akses default (minimal):**
- Melihat daftar booking aktif hari ini dan yang akan datang
- Melakukan proses serah-terima kendaraan (checklist kondisi + upload foto)
- Menandai status booking: "mobil sudah diserahkan" atau "mobil sudah dikembalikan"
- Melihat detail kendaraan yang sedang dalam proses serah-terima
**Bisa diperluas oleh Tenant Admin (opsional):**
- Membuat booking baru
- Melihat data pelanggan
- Melihat laporan keuangan dasar
**Tidak bisa melakukan (hard restriction):**
- Menghapus data apapun (kendaraan, booking, pelanggan)
- Mengakses pengaturan tenant
- Mengelola akun staff lain
- Melihat laporan keuangan detail (kecuali diberi akses)
- Export data
---
# 4. Super Admin Panel (Platform Management)
## 4.1 Dashboard Platform
Halaman utama Super Admin Panel yang memberikan **overview kesehatan platform** secara sekilas.
**Informasi yang ditampilkan:**
- **Total tenant** terdaftar, dengan breakdown status: aktif, pending approval, suspended, expired
- **Tenant baru** yang menunggu approval (dengan indikator/badge supaya tidak terlewat)
- **Tenant yang akan expired** dalam 7/14/30 hari ke depan (untuk follow-up perpanjangan)
- **Grafik pertumbuhan tenant** dari waktu ke waktu (opsional di MVP, tapi berguna)
## 4.2 Manajemen Tenant
Ini adalah fitur inti dari Super Admin Panel — tempat mengelola seluruh tenant yang ada di platform.
### 4.2.1 Daftar Tenant
Tabel/list yang menampilkan seluruh tenant dengan informasi:
| Kolom | Keterangan |
| --- | --- |
| Nama Usaha | Nama rental mobil yang didaftarkan |
| Nama Owner | Nama pemilik/penanggung jawab |
| Kontak | Nomor telepon & email |
| Tanggal Registrasi | Kapan mereka mendaftar |
| Status | Active / Pending / Suspended / Expired / Rejected |
| Masa Aktif Sampai | Tanggal berakhir langganan (jika active) |
**Kemampuan filter & search:**
- Filter berdasarkan status
- Search berdasarkan nama usaha atau nama owner
- Sortir berdasarkan tanggal registrasi, tanggal expired, atau nama
### 4.2.2 Detail Tenant
Ketika Super Admin mengklik salah satu tenant, ditampilkan halaman detail yang berisi:
- Informasi lengkap yang diisi saat registrasi (nama usaha, alamat, kontak, dokumen pendukung jika ada)
- Status saat ini dan riwayat perubahan status (kapan di-approve, kapan pernah di-suspend, dll.)
- Riwayat langganan (periode aktif sebelumnya)
- **Catatan internal** — field teks bebas untuk Super Admin mencatat hal-hal penting tentang tenant ini (misalnya: "pembayaran via transfer BCA", "minta diskon untuk perpanjangan 6 bulan", dll.)
### 4.2.3 Aksi yang Bisa Dilakukan
Untuk setiap tenant, Super Admin bisa melakukan aksi berikut sesuai status tenant saat ini:
| Status Saat Ini | Aksi yang Tersedia |
| --- | --- |
| **Pending Approval** | Approve → masuk Trial (otomatis 14 hari), Reject (+ alasan) |
| **Trial** | Aktivasi berbayar (+ set masa aktif), Suspend (+ alasan), Edit info |
| **Trial Expired** | Aktivasi berbayar (+ set masa aktif), Suspend, Edit info |
| **Active** | Suspend (+ alasan), Perpanjang masa aktif, Edit info |
| **Suspended** | Reaktivasi (+ set masa aktif baru), Edit info |
| **Expired** | Reaktivasi (+ set masa aktif baru), Edit info |
| **Rejected** | Re-approve (jika berubah keputusan), Hapus permanen |
Setiap aksi yang mengubah status wajib tercatat di **audit log** — siapa yang melakukan, kapan, dan alasannya (jika ada).
### 4.2.4 Status Tenant — Definisi Lengkap
**Pending Approval:** Tenant baru mendaftar. Belum bisa menggunakan fitur apapun. Menunggu review Super Admin.
**Trial:** Tenant sudah di-approve dan sedang dalam **masa percobaan gratis 14 hari**. Akses penuh ke semua fitur Tenant Application, sama seperti status Active. Tujuannya agar tenant benar-benar merasakan manfaat sistem sebelum memutuskan berlangganan.
**Trial Expired:** Masa trial 14 hari telah habis dan tenant belum berlangganan. Akses berubah menjadi **read-only** — tenant masih bisa login dan melihat seluruh data yang sudah dimasukkan (kendaraan, booking, pelanggan, keuangan), tapi tidak bisa melakukan aksi apapun (membuat booking baru, menambah kendaraan, mengedit data, dll). Tenant Admin melihat banner permanen yang menginformasikan bahwa trial telah berakhir dengan instruksi untuk berlangganan.
**Active:** Tenant sudah membayar dan masa langganan masih berlaku. Akses penuh ke Tenant Application.
**Suspended:** Dinonaktifkan secara manual oleh Super Admin (misalnya karena pembayaran bermasalah atau pelanggaran). Data tetap utuh, tapi seluruh akses ke Tenant Application diblokir. Tenant Admin yang mencoba login akan melihat pesan bahwa akun mereka sedang di-suspend dengan instruksi untuk menghubungi Super Admin.
**Expired:** Masa langganan berbayar habis secara otomatis (triggered by system berdasarkan tanggal). Perilaku sama dengan Trial Expired — akses read-only, data utuh. Tenant Admin melihat pesan bahwa masa langganan telah berakhir dengan instruksi untuk memperpanjang.
**Rejected:** Pendaftaran ditolak oleh Super Admin. Calon tenant menerima notifikasi penolakan beserta alasannya (opsional).
> **Prinsip penting:** Tidak ada status yang menghapus data. Baik Trial Expired, Suspended, maupun Expired — data tenant tetap tersimpan utuh dan bisa diakses kembali sepenuhnya begitu tenant direaktivasi atau berlangganan. Ini krusial untuk menjaga kepercayaan pengguna terhadap platform dan menjadi insentif untuk berlangganan (data mereka sudah ada di sistem).
>
---
# 5. Tenant Application (Aplikasi Utama Rental)
Ini adalah bagian inti platform yang digunakan sehari-hari oleh setiap usaha rental untuk mengelola operasional mereka.
## 5.1 Dashboard Tenant
Halaman utama setelah Tenant Admin atau Staff login. Dashboard ini memberikan **snapshot operasional hari ini** sehingga pengguna langsung tahu apa yang perlu diperhatikan.
### Untuk Tenant Admin, dashboard menampilkan:
**Status Armada Hari Ini:**
- Jumlah kendaraan tersedia vs sedang disewa vs dalam maintenance
- Visualisasi ringkas (misalnya donut chart atau angka besar yang jelas)
**Booking Hari Ini:**
- Daftar mobil yang dijadwalkan **diambil (pickup)** hari ini
- Daftar mobil yang dijadwalkan **dikembalikan (return)** hari ini
- Booking yang **terlambat dikembalikan** (overdue) — ditandai dengan warna merah / highlight
**Ringkasan Keuangan:**
- Pemasukan hari ini / minggu ini / bulan ini
- Jumlah transaksi aktif yang belum lunas
**Notifikasi & Pengingat:**
- Pajak kendaraan yang akan jatuh tempo
- Jadwal servis berkala yang mendekat
- Booking yang mendekati tanggal return
- Langganan platform yang mendekati expired (peringatan untuk Tenant Admin)
### Untuk Tenant Staff, dashboard menampilkan versi ringkas:
- Daftar booking hari ini yang relevan dengan tugas mereka (pickup & return)
- Kendaraan yang perlu di-checklist (serah-terima)
- Notifikasi tugas yang di-assign ke mereka (jika fitur ini diimplementasi)
## 5.2 Manajemen Kendaraan (Fleet Management)
### 5.2.1 Daftar Kendaraan
Tampilan utama yang menunjukkan seluruh armada kendaraan milik tenant, dengan kemampuan filter berdasarkan status dan search berdasarkan plat nomor, merek, atau model.
Setiap kendaraan menampilkan **informasi inti** secara ringkas di daftar:
- Foto utama kendaraan
- Merek, model, tahun
- Plat nomor
- Status saat ini (ditandai warna): Tersedia, Sedang Disewa, Dalam Maintenance, Tidak Aktif
### 5.2.2 Data Kendaraan — Detail Lengkap
Ketika sebuah kendaraan dibuka, informasi yang disimpan mencakup:
**Informasi Dasar:**
- Merek, model, tahun, warna
- Nomor plat kendaraan
- Nomor rangka & nomor mesin
- Jenis transmisi (manual / automatic)
- Jenis bahan bakar
- Kapasitas penumpang
**Dokumen Kendaraan:**
- Nomor STNK & masa berlaku
- Nomor BPKB
- Nomor polis asuransi & masa berlaku
- Tanggal jatuh tempo pajak tahunan
- Foto/scan dokumen-dokumen tersebut (upload)
**Informasi Operasional:**
- Harga sewa per hari (default, bisa di-override per booking)
- Harga sewa dengan supir vs lepas kunci (jika berbeda)
- Catatan khusus (misalnya: "AC kadang bermasalah", "ban baru diganti Jan 2026")
**Status Kendaraan:**
| Status | Arti | Bisa Di-booking? |
| --- | --- | --- |
| Tersedia | Tidak sedang disewa dan siap dioperasikan | Ya |
| Sedang Disewa | Sedang dalam periode rental aktif | Tidak (kecuali untuk tanggal setelah return) |
| Dalam Maintenance | Sedang diservis, diperbaiki, atau tidak layak jalan sementara | Tidak |
| Tidak Aktif | Ditarik dari operasional (dijual, rusak berat, dll.) | Tidak |
### 5.2.3 Riwayat Kendaraan
Setiap kendaraan memiliki halaman riwayat yang mencatat seluruh "kehidupan" kendaraan tersebut di dalam sistem:
- Riwayat semua rental (siapa penyewa, kapan, berapa lama, berapa pendapatan)
- Riwayat maintenance dan servis (tanggal, jenis servis, biaya, bengkel)
- Riwayat kondisi kendaraan dari setiap checklist serah-terima
- Riwayat perubahan status
Riwayat ini sangat berharga untuk menghitung **profitabilitas per kendaraan** dan membuat keputusan apakah sebuah kendaraan masih layak dipertahankan atau sebaiknya dijual/diganti.
### 5.2.4 Reminder & Pengingat Kendaraan
Sistem secara otomatis mengirim notifikasi (di dalam dashboard) ketika:
- Pajak tahunan jatuh tempo dalam **30 hari**
- Asuransi mendekati expired dalam **30 hari**
- STNK mendekati expired
- Jadwal servis berkala yang ditentukan Tenant Admin sudah waktunya (misalnya: setiap 5.000 km atau setiap 3 bulan)
> **Fase selanjutnya:** Reminder ini bisa dikirim juga via Telegram ke Tenant Admin.
>
### 5.2.5 Checklist Kondisi Kendaraan
Fitur ini digunakan saat **serah-terima kendaraan** (pickup dan return). Bisa diakses oleh Tenant Admin maupun Tenant Staff.
**Komponen checklist:**
- **Foto eksterior** — minimal 4 sisi (depan, belakang, kiri, kanan), bisa tambah foto detail untuk area yang perlu dicatat
- **Foto interior** — dashboard, jok, bagasi
- **Foto odometer** — KM saat serah-terima
- **Foto level BBM** — indikator bahan bakar saat serah-terima
- **Checklist item** berupa daftar pengecekan standar dengan status (Baik / Ada Masalah / Catatan):
- Kondisi body eksterior (lecet, penyok, dll.)
- Kondisi ban (termasuk ban serep)
- Kondisi lampu (depan, belakang, sein)
- Kondisi AC
- Kondisi interior (jok, karpet, plafon)
- Kelengkapan (dongkrak, kunci roda, segitiga pengaman, P3K)
- Dokumen di kendaraan (STNK, dll.)
- **Catatan tambahan** — text field untuk mencatat hal-hal di luar checklist standar
**Dua momen checklist dilakukan:**
1. **Saat pickup (penyerahan ke penyewa):** Mendokumentasikan kondisi kendaraan sebelum digunakan penyewa. Checklist ini menjadi **baseline** kondisi.
2. **Saat return (pengembalian dari penyewa):** Mendokumentasikan kondisi setelah digunakan. Sistem secara otomatis menampilkan data checklist pickup sebagai **perbandingan**, sehingga perbedaan kondisi mudah teridentifikasi.
> Perbandingan pickup vs return ini adalah salah satu fitur paling berharga untuk menyelesaikan sengketa kerusakan secara adil dan berdasarkan bukti.
>
## 5.3 Manajemen Pelanggan (Customer Management)
### 5.3.1 Data Pelanggan
Setiap pelanggan yang pernah menyewa memiliki profil yang tersimpan di sistem:
**Informasi Identitas:**
- Nama lengkap
- Nomor KTP (+ foto/scan KTP)
- Nomor SIM (+ foto/scan SIM) — khusus untuk rental lepas kunci
- Nomor telepon (bisa lebih dari satu)
- Alamat
- Kontak darurat
**Informasi Riwayat:**
- Total berapa kali menyewa
- Total durasi hari sewa
- Total nilai transaksi
- Tanggal pertama dan terakhir menyewa
- Daftar lengkap riwayat rental beserta detailnya
**Status Pelanggan:**
| Status | Arti |
| --- | --- |
| Regular | Pelanggan normal |
| VIP | Pelanggan loyal (ditandai manual oleh Tenant Admin, bisa diberikan benefit khusus seperti diskon) |
| Blacklist | Pelanggan bermasalah — tidak bisa membuat booking baru |
### 5.3.2 Blacklist
Tenant Admin bisa menandai pelanggan sebagai **blacklist** dengan alasan yang dicatat (misalnya: "mengembalikan mobil rusak berat tanpa mau bertanggung jawab", "kabur tidak mengembalikan mobil", dll).
Ketika pelanggan yang di-blacklist dicoba dimasukkan ke booking baru, sistem akan menampilkan **peringatan** beserta alasan blacklist-nya. Tenant Admin masih bisa memilih untuk melanjutkan booking (override) jika ada pertimbangan khusus, tapi keputusan override ini tercatat di sistem.
> **Catatan:** Blacklist bersifat **per-tenant**. Pelanggan yang di-blacklist oleh Rental A tidak otomatis ter-blacklist di Rental B. Masing-masing tenant mengelola blacklist mereka sendiri.
>
### 5.3.3 Pencarian Pelanggan
Saat membuat booking baru, sistem menyediakan fitur **search pelanggan** berdasarkan nama, nomor KTP, atau nomor telepon. Jika pelanggan sudah pernah menyewa sebelumnya, datanya otomatis ter-fill sehingga tidak perlu input ulang — menghemat waktu dan mengurangi kesalahan input.
## 5.4 Manajemen Booking & Rental
Modul ini adalah **jantung operasional** sistem. Seluruh proses bisnis rental mobil berjalan di sini.
### 5.4.1 Lifecycle Booking
Setiap booking melewati serangkaian status yang merepresentasikan posisinya dalam proses rental:
```
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ RESERVED │────▶│ ACTIVE │────▶│ RETURNED │────▶│COMPLETED │
│(Dipesan) │ │(Berjalan)│ │(Kembali) │ │ (Selesai)│
└──────────┘ └──────────┘ └──────────┘ └──────────┘
│ │ ▲
│ │ ┌──────────┐ │
│ └──────────▶│ OVERDUE │────────────┘
│ │(Terlambat)│
│ └──────────┘
┌──────────┐
│CANCELLED │
│(Dibatalkan)│
└──────────┘
```
**Penjelasan setiap status:**
| Status | Trigger | Arti |
| --- | --- | --- |
| **Reserved** | Booking baru dibuat | Kendaraan sudah dipesan untuk periode tertentu, tapi belum diserahkan ke penyewa |
| **Active** | Checklist pickup selesai | Kendaraan sudah di tangan penyewa, rental sedang berjalan |
| **Overdue** | Otomatis oleh sistem saat melewati tanggal return | Kendaraan seharusnya sudah dikembalikan tapi belum — perlu follow-up |
| **Returned** | Checklist return selesai | Kendaraan sudah dikembalikan dan dicek kondisinya, menunggu finalisasi pembayaran |
| **Completed** | Pembayaran final diselesaikan | Seluruh proses selesai — kendaraan kembali, pembayaran lunas, tidak ada outstanding |
| **Cancelled** | Dibatalkan oleh Admin/Staff | Booking dibatalkan sebelum kendaraan diserahkan |
### 5.4.2 Komponen Payment Record (Pencatatan Pembayaran)
Sebelum membahas alur booking, penting untuk mendefinisikan bagaimana **setiap transaksi pembayaran** dicatat di dalam sistem. Prinsip utamanya: **tidak ada transaksi yang dianggap selesai tanpa bukti pembayaran yang terverifikasi.** Komponen ini digunakan secara konsisten di seluruh momen pembayaran (deposit, perpanjangan, pelunasan akhir).
Setiap kali pembayaran terjadi, sistem mencatat **Payment Record** dengan informasi berikut:
**Detail Pembayaran:**
- Jenis pembayaran: Deposit, Pelunasan, Pembayaran Perpanjangan, Denda, Biaya Tambahan, Refund Deposit
- Jumlah yang dibayar (dalam Rupiah)
- Metode pembayaran: Cash, Transfer Bank, QRIS, E-Wallet (GoPay, OVO, Dana, dll.), atau Lainnya
- Tanggal & waktu pembayaran
**Bukti Pembayaran:**
- Upload foto/screenshot bukti transfer, kwitansi, atau struk pembayaran
- Untuk pembayaran cash: foto kwitansi yang ditandatangani, atau konfirmasi bahwa uang sudah diterima secara tunai
**Verifikasi:**
- Checklist **"Pembayaran sudah diterima"** — harus dicentang oleh Admin/Staff yang memproses sebagai konfirmasi bahwa uang benar-benar sudah masuk
- Nama Admin/Staff yang memverifikasi (tercatat otomatis dari user yang login)
- Timestamp verifikasi
> **Prinsip penting:** Tanpa Payment Record yang terverifikasi (checklist dicentang + bukti di-upload), sistem **tidak mengizinkan** proses lanjutan — pickup tidak bisa dilakukan tanpa konfirmasi deposit, extend tidak berlaku tanpa konfirmasi pembayaran perpanjangan, dan booking tidak bisa di-complete tanpa konfirmasi pelunasan.
>
### 5.4.3 Membuat Booking Baru
Proses pembuatan booking baru mengikuti alur berikut:
**Langkah 1 — Pilih Kendaraan & Tanggal:**
Tenant Admin/Staff memilih tanggal mulai dan tanggal selesai rental. Sistem menampilkan **daftar kendaraan yang tersedia** pada periode tersebut. Kendaraan yang sudah di-booking orang lain, sedang dalam maintenance, atau tidak aktif otomatis tidak muncul — sehingga **double-booking tidak mungkin terjadi**.
**Langkah 2 — Pilih/Input Pelanggan:**
Mencari pelanggan existing atau input pelanggan baru. Jika pelanggan existing yang ter-blacklist dipilih, muncul peringatan.
**Langkah 3 — Detail Booking:**
- Tipe rental: lepas kunci atau dengan supir
- Jika dengan supir: pilih/assign supir (dari daftar staff)
- Harga sewa per hari (auto-fill dari harga default kendaraan, bisa di-override)
- Total harga (dihitung otomatis: harga per hari × jumlah hari)
- Jumlah deposit yang diminta
- Biaya tambahan (antar-jemput, luar kota, dll.)
- Catatan khusus
**Langkah 4 — Pencatatan Pembayaran Deposit:**
Jika pelanggan membayar deposit saat booking dibuat, Admin/Staff langsung membuat **Payment Record** untuk deposit tersebut — mengisi jumlah, metode pembayaran, upload bukti, dan mencentang verifikasi. Jika deposit belum dibayar saat itu, booking tetap bisa disimpan tapi akan ditandai sebagai **"Deposit Belum Dibayar"** dan proses pickup tidak bisa dilanjutkan sampai deposit terverifikasi.
**Langkah 5 — Konfirmasi & Simpan:**
Review ringkasan booking, lalu simpan. Status booking menjadi **Reserved**. Kendaraan otomatis ter-block di kalender untuk periode tersebut.
### 5.4.3 Kalender Ketersediaan
Fitur visual yang menampilkan ketersediaan seluruh armada dalam format kalender/timeline. Bayangkan tampilan seperti kalender hotel:
- **Sumbu vertikal (baris):** Setiap kendaraan
- **Sumbu horizontal (kolom):** Tanggal
- **Blok warna:** Menunjukkan booking yang ada
- 🟦 Biru = Reserved (sudah dipesan, belum pickup)
- 🟩 Hijau = Active (sedang disewa)
- 🟥 Merah = Overdue (terlambat return)
- 🟧 Oranye = Maintenance
- Kosong = Tersedia
Kalender ini bisa di-klik untuk langsung membuat booking baru pada kendaraan dan tanggal yang dipilih.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment