Skip to main content

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

Appointments

Appointments Halaman Appointments mengelola seluruh jadwal appointment bisnis kamu — dari booking customer, konsultasi, hingga kunjungan servis. Dibangun di atas 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

Fungsi calcEndTime() menghitung waktu selesai berdasarkan waktu mulai dan durasi:
Ini ditampilkan di AppointmentCard supaya staff tahu kapan appointment berakhir dan bisa mempersiapkan sesi berikutnya.

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

  1. Buka halaman Appointments dari sidebar — lihat stats revenue dan jumlah appointment di atas
  2. Gunakan week picker untuk navigasi ke minggu yang diinginkan
  3. Klik slot waktu kosong atau tombol “Tambah Appointment” untuk booking baru
  4. Pilih customer dari daftar, atau buat customer baru jika belum ada
  5. Pilih layanan dari katalog POS Products — harga otomatis terisi
  6. Tentukan tanggal, waktu, durasi, dan assign ke staff yang tersedia
  7. Isi lokasi dan catatan tambahan jika perlu
  8. Klik Simpan — status awal adalah pending
  9. Update status ke confirmed saat customer mengkonfirmasi
  10. Setelah appointment selesai, update ke completed dan set payment status

Filter & Pencarian

RBAC Permission Table

Sistem appointment menggunakan ERPAccessGuard dengan module="appointments" dan Row-Level Security (RLS) dari Base44. Berikut adalah matriks hak akses berdasarkan peran:

RLS Conditions (dari JSONC)

Penjelasan:
  • Admin (role = "admin") memiliki akses penuh ke seluruh appointment tanpa batasan company
  • Owner Company dapat mengakses appointment selama company_id sesuai dengan active_company_id yang 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

Guard ini memastikan hanya user yang memiliki modul appointments aktif di paket ERP mereka yang bisa mengakses halaman ini.

Tips

  • Selalu gunakan durasi standar dari dropdown supaya calcEndTime bisa menghitung waktu selesai secara akurat
  • Cek kalender setiap pagi untuk mengetahui jadwal hari ini dan antisipasi konflik jadwal
  • Set reminder_sent = true setelah mengirim reminder ke customer — ini mencegah reminder ganda
  • Untuk customer yang tidak hadir, gunakan status no_show dan isi cancellation_reason untuk 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_code untuk verifikasi customer saat check-in, terutama untuk appointment bernilai tinggi
  • Manfaatkan CustomerMembership untuk memberikan diskon otomatis berdasarkan level membership customer
  • Perhatikan Employee.status — hanya assign ke karyawan dengan status active untuk menghindari penugasan ke karyawan yang sudah resign atau cuti panjang

Cara Akses

Dari sidebar, klik menu Productivity > Appointments.