Appearance
Kontrak
Buat dan kelola kontrak sewa semua penghuni — full CRUD.
Daftar Kontrak
Lihat semua kontrak dengan filter status (Draft / Aktif / Akan Berakhir / Selesai).

Tambah Kontrak
- Klik tombol Tambah Kontrak
- Pilih penghuni dan kamar
- Tentukan tanggal mulai, durasi, dan harga
- Sistem kalkulasi otomatis deposit dan prorate
- Simpan → status
Draft
Edit Kontrak
- Klik menu aksi pada baris kontrak → Edit
- Ubah detail kontrak (durasi, harga, tanggal)
- Simpan

Hapus Kontrak
- Klik menu aksi → Hapus
- Konfirmasi pada dialog
Catatan:
- Status kontrak:
Draft→Menunggu DP→Menunggu Pelunasan→Aktif→Selesai- Kontrak hanya dapat dihapus saat status
Draft. Kontrak aktif harus diakhiri (statusSelesai) sebelum bisa dihapus.
⚠️ Penting: Status
Akan Berakhirdihitung otomatis dari tanggal berakhir kontrak (1–30 hari sebelum berakhir). Tidak ada di database — hanya muncul di UI.
🧮 Cara hitung deposit:
depositadalah kolom terpisah di kontrak. Tidak termasuk DP. Default 0 jika tidak diisi saat checkout.
🤖 Otomatis: Kontrak yang lewat tanggal berakhir otomatis dipindah ke status
Selesaisetiap hari pukul 00:00 WIB (cronauto_expire_contracts_daily).
🤖 Otomatis: Kontrak dengan status
Menunggu DPyang lewat 24 jam otomatis dibatalkan setiap 30 menit (cronauto_expire_dp_contracts). Kamar yang ditahan akan dilepas kembali.
⚠️ Penting: Fitur perpanjangan kontrak masih dalam pengembangan (🚧 WIP). Saat ini perpanjangan dilakukan dengan membuat kontrak baru.
