title: “Appointments” description: “Sistem appointment dengan calendar view, 6 status, payment tracking, service management, dan ERP access control di SNISHOP ERP.”
Appointments

Appointments.jsx (1015 baris) dengan tampilan kalender mingguan, tracking pembayaran, dan integrasi ke POS untuk pemilihan layanan.
Sistem ini dilindungi oleh ERPAccessGuard dengan module="appointments", memastikan hanya user dengan akses yang tepat yang bisa mengelola jadwal.
Arsitektur Komponen
Diagram Relasi Entitas (ERD)
Entity Schema Tables
Entity: Appointment
Entity: Customer (CRM Integration)
Entity: Employee (HR Integration)
Entity: CompanyPOSProduct (POS Integration)
Entity: CustomerMembership (Loyalty Integration)
Status Appointment
Status Pembayaran
Enum Reference Tables
Enum: Appointment.status
Enum: Appointment.payment_status
Enum: Customer.customer_type
Enum: Customer.status
Enum: Employee.department
Enum: Employee.employment_type
Enum: Employee.status
Enum: CompanyPOSProduct.product_type
Enum: CustomerMembership.scheme_type
Duration Options
Waktu Selesai Otomatis
FungsicalcEndTime() menghitung waktu selesai berdasarkan waktu mulai dan durasi:
Revenue Tracking
Stats dashboard menghitung 4 metrik utama:Week Calendar View
Tampilan kalender menampilkan 7 hari ke depan dari tanggal yang dipilih. Setiap slot menampilkan appointment dengan warna sesuai status. Week picker memungkinkan navigasi ke minggu-minggu sebelumnya atau berikutnya.Integrasi Lintas Modul
Sequence Diagrams
Flow Pembuatan Appointment Baru
Flow Notifikasi dan Reminder
Flow Reschedule Appointment
Flow Pembayaran Appointment
Flow Penggunaan Detail
- Buka halaman Appointments dari sidebar — lihat stats revenue dan jumlah appointment di atas
- Gunakan week picker untuk navigasi ke minggu yang diinginkan
- Klik slot waktu kosong atau tombol “Tambah Appointment” untuk booking baru
- Pilih customer dari daftar, atau buat customer baru jika belum ada
- Pilih layanan dari katalog POS Products — harga otomatis terisi
- Tentukan tanggal, waktu, durasi, dan assign ke staff yang tersedia
- Isi lokasi dan catatan tambahan jika perlu
- Klik Simpan — status awal adalah
pending - Update status ke
confirmedsaat customer mengkonfirmasi - Setelah appointment selesai, update ke
completeddan set payment status
Filter & Pencarian
RBAC Permission Table
Sistem appointment menggunakanERPAccessGuard dengan module="appointments" dan Row-Level Security (RLS) dari Base44. Berikut adalah matriks hak akses berdasarkan peran:
RLS Conditions (dari JSONC)
- Admin (
role = "admin") memiliki akses penuh ke seluruh appointment tanpa batasan company - Owner Company dapat mengakses appointment selama
company_idsesuai denganactive_company_idyang sedang aktif - Staff (creator) hanya dapat mengakses appointment yang mereka buat sendiri (
created_by_id == user.id) - User lain yang tidak memenuhi kondisi di atas tidak memiliki akses sama sekali
Akses Guard pada Komponen
appointments aktif di paket ERP mereka yang bisa mengakses halaman ini.
Tips
- Selalu gunakan durasi standar dari dropdown supaya
calcEndTimebisa menghitung waktu selesai secara akurat - Cek kalender setiap pagi untuk mengetahui jadwal hari ini dan antisipasi konflik jadwal
- Set
reminder_sent = truesetelah mengirim reminder ke customer — ini mencegah reminder ganda - Untuk customer yang tidak hadir, gunakan status
no_showdan isicancellation_reasonuntuk tracking - Manfaatkan integrasi POS Products supaya harga layanan konsisten dengan yang ada di kasir
- Denormalized fields (
customer_name,assigned_to_name,service_name) membuat card tampil cepat tanpa perlu join ke entity lain - Review appointment cancelled/no-show secara berkala untuk mengidentifikasi pola dan mengurangi kerugian
- Gunakan
confirmation_codeuntuk verifikasi customer saat check-in, terutama untuk appointment bernilai tinggi - Manfaatkan
CustomerMembershipuntuk memberikan diskon otomatis berdasarkan level membership customer - Perhatikan
Employee.status— hanya assign ke karyawan dengan statusactiveuntuk menghindari penugasan ke karyawan yang sudah resign atau cuti panjang
