Manajemen Pengaturan
Modul Manajemen Pengaturan mengelola konfigurasi sistem termasuk data kantor, pengguna, template pelayanan, dan parameter lainnya. Bagian ini fokus pada menu Pelayanan yang mengelola daftar layanan notaris dan PPAT beserta persyaratan, tugas, dan biaya terkait.
MENU PELAYANAN
Menu Pelayanan memungkinkan officer untuk mengelola daftar layanan yang ditawarkan kantor dengan detail persyaratan, tugas, dan biaya.
Skenario 5.1: Lihat Daftar Pelayanan
Skenario ini menampilkan layout dual pane untuk view dan manage pelayanan.
| Aktor | Officer & Sistem |
|---|---|
| Rincian | Given officer memiliki izin akses PELAYANAN, When officer membuka menu pelayanan di /pelayanan, Then aplikasi menampilkan daftar pelayanan yang telah dibuat dengan layout dual pane (pane kiri: daftar pelayanan, pane kanan: detail pelayanan yang dipilih). |
Layout Dual Pane:
Pane Kiri (Daftar): List pelayanan dengan search dan filter
- Search by nama pelayanan
- Filter by kelompok (NOTARIS, PPAT)
- Pagination dan sorting
- Highlight item yang dipilih
Pane Kanan (Detail): Detail pelayanan yang dipilih
- View/Edit mode toggle
- Informasi umum (nama, kelompok, deskripsi)
- Sub-tab untuk syarat berkas, tugas, biaya
- Tombol aksi (Edit, Hapus)
Skenario 5.2: Lihat Detail Pelayanan
| Aktor | Officer & Sistem |
|---|---|
| Rincian | Given officer memiliki izin akses PELAYANAN, When officer membuka menu pelayanan di /pelayanan dan memilih salah satu pelayanan, Then aplikasi menampilkan detail pelayanan pada sisi kanan layout dengan tab untuk informasi umum, syarat berkas, tugas, dan biaya. |
Tab Detail Pelayanan:
| Tab | Deskripsi |
|---|---|
| Umum | Nama, kelompok (NOTARIS/PPAT), deskripsi, status |
| Syarat Berkas | Daftar dokumen yang diperlukan dengan keterangan |
| Tugas | Daftar tugas yang harus dikerjakan untuk layanan ini |
| Biaya | Daftar biaya default untuk layanan ini |
Skenario 5.3: Tambah Pelayanan Baru
Skenario ini menunjukkan proses menambahkan pelayanan baru dengan form lengkap.
| Aktor | Officer & Sistem |
|---|---|
| Rincian | Given officer memiliki izin akses PELAYANAN, When officer menekan tombol "Tambah Pelayanan" dan mengisi form pelayanan baru, Then sistem menyimpan pelayanan baru dan menambahkannya ke daftar pelayanan di pane kiri. Sistem juga menampilkan pelayanan yang baru dibuat di pane kanan untuk editing lebih lanjut. |
Form Input Pelayanan Baru:
Informasi Umum:
- Nama pelayanan (required, unique)
- Kelompok (NOTARIS/PPAT) - dropdown
- Deskripsi (optional)
- Status (Aktif/Tidak Aktif)
Syarat Berkas - Dynamic list:
- Add button untuk tambah syarat
- Field: Nama, Keterangan, Scan?, Pernyataan?
- Remove button untuk setiap syarat
Tugas - Dynamic list:
- Add button untuk tambah tugas
- Field: Nama tugas
- Remove button untuk setiap tugas
Biaya - Dynamic list:
- Add button untuk tambah biaya
- Field: Nama biaya, Nominal
- Remove button untuk setiap biaya
Skenario 5.4: Edit Detail Pelayanan
| Aktor | Officer & Sistem |
|---|---|
| Rincian | Given officer sedang melihat detail pelayanan, When officer menekan tombol "Edit" dan mengubah data pelayanan (informasi umum, syarat berkas, tugas, atau biaya), Then sistem memperbarui data pelayanan dan menampilkan data yang telah diubah. Officer dapat menambah atau menghapus syarat berkas, tugas, dan biaya dalam edit mode. |
Edit Mode Features:
- Toggle dari View Mode ke Edit Mode
- Inline editing untuk fields dan dynamic lists
- Validasi input (e.g., nama tidak boleh kosong, nominal harus angka)
- Tombol Simpan dan Batal
- Konfirmasi sebelum simpan perubahan
Skenario 5.5: Hapus Pelayanan
| Aktor | Officer & Sistem |
|---|---|
| Rincian | Given officer sedang melihat detail pelayanan, When officer menekan tombol "Hapus" dan mengonfirmasi penghapusan, Then sistem menghapus pelayanan dan menghilangkannya dari daftar pelayanan di pane kiri. Sistem juga menampilkan pesan konfirmasi sebelum penghapusan dan validasi apakah pelayanan masih digunakan. |
Validasi Penghapusan:
- Cek apakah pelayanan digunakan dalam permohonan aktif
- Jika iya, tampilkan warning dan cegah penghapusan
- Jika tidak, tampilkan konfirmasi penghapusan
- Setelah berhasil, refresh daftar dan tutup detail pane
Skenario 5.6: Cari Pelayanan
| Aktor | Officer & Sistem |
|---|---|
| Rincian | Given officer berada di menu pelayanan, When officer mengetik kata kunci di kolom pencarian atau menggunakan filter, Then sistem menampilkan daftar pelayanan yang sesuai dengan kata kunci pencarian atau filter yang dipilih secara real-time. |
Fitur Pencarian & Filter:
- Search box - Real-time search by nama pelayanan
- Filter dropdown - Filter by kelompok (NOTARIS, PPAT, Semua)
- Kombinasi - Search dan filter dapat digunakan bersamaan
- Clear button - Reset search dan filter dengan satu klik
- No results state - Tampilkan pesan jika tidak ada hasil
Detail Teknis & Perancangan
Abstraksi & Objek Inti
Modul ini berinteraksi dengan objek-objek inti berikut:
Rincian Abstraksi Modul Pengaturan - Pelayanan
| Objek | Anggota | Tipe Data/Keterangan |
|---|---|---|
| Layanan (Pelayanan) | Properti: | |
id | int (ID unik pelayanan) | |
nama | string (Nama pelayanan) | |
kelompok | enum (NOTARIS, PPAT) | |
keterangan | string? (Deskripsi pelayanan) | |
isPublic | boolean (Apakah pelayanan publik/dapat diakses customer) | |
created_at | date (Tanggal pembuatan) | |
updated_at | date (Tanggal terakhir diupdate) | |
| Metode: | ||
create() | Membuat pelayanan baru. Kembali: Layanan. | |
update() | Memperbarui data pelayanan. Kembali: boolean. | |
delete() | Menghapus pelayanan. Kembali: boolean. | |
canDelete() | Mengecek apakah pelayanan dapat dihapus (tidak digunakan aktif). Kembali: boolean. | |
getRequirements() | Mendapatkan daftar syarat berkas. Kembali: SyaratBerkas[]. | |
getTasks() | Mendapatkan daftar tugas. Kembali: TugasLayanan[]. | |
getCosts() | Mendapatkan daftar biaya. Kembali: BiayaLayanan[]. | |
| SyaratBerkas | Properti: | |
id | int (ID unik syarat berkas) | |
nama | string (Nama dokumen/berkas) | |
keterangan | string? (Deskripsi/catatan) | |
scan | boolean (Apakah perlu scan?) | |
pernyataan | boolean (Apakah perlu pernyataan?) | |
layananId | int (ID pelayanan terkait) | |
| Metode: | ||
create() | Membuat syarat berkas baru. Kembali: SyaratBerkas. | |
delete() | Menghapus syarat berkas. Kembali: boolean. | |
| TugasLayanan | Properti: | |
id | int (ID unik tugas) | |
nama | string (Nama tugas) | |
layananId | int (ID pelayanan terkait) | |
| Metode: | ||
create() | Membuat tugas layanan baru. Kembali: TugasLayanan. | |
delete() | Menghapus tugas layanan. Kembali: boolean. | |
| BiayaLayanan | Properti: | |
id | int (ID unik biaya) | |
nama | string (Nama biaya/komponen) | |
nominal | float (Jumlah biaya dalam Rp) | |
layananId | int (ID pelayanan terkait) | |
| Metode: | ||
create() | Membuat biaya layanan baru. Kembali: BiayaLayanan. | |
delete() | Menghapus biaya layanan. Kembali: boolean. |
Diagram Kelas (Class Diagram)
Diagram ini menunjukkan struktur kelas untuk manajemen pelayanan.
Endpoint API
Modul ini menggunakan endpoint API berikut:
| Method | Endpoint | Deskripsi |
|---|---|---|
GET | /office/admin/service | Mendapatkan daftar semua pelayanan |
GET | /office/admin/service/{id} | Mendapatkan detail pelayanan spesifik |
POST | /office/admin/service | Membuat pelayanan baru |
PATCH | /office/admin/service/{id} | Memperbarui detail pelayanan |
DELETE | /office/admin/service/{id} | Menghapus pelayanan |
GET | /office/admin/service/{id}/requirements | Mendapatkan syarat berkas pelayanan |
POST | /office/admin/service/{id}/requirements | Menambah syarat berkas |
DELETE | /office/admin/service/{id}/requirements/{reqId} | Menghapus syarat berkas |
GET | /office/admin/service/{id}/tasks | Mendapatkan tugas pelayanan |
POST | /office/admin/service/{id}/tasks | Menambah tugas |
DELETE | /office/admin/service/{id}/tasks/{taskId} | Menghapus tugas |
GET | /office/admin/service/{id}/costs | Mendapatkan biaya pelayanan |
POST | /office/admin/service/{id}/costs | Menambah biaya |
DELETE | /office/admin/service/{id}/costs/{costId} | Menghapus biaya |
Parameter Query untuk /office/admin/service:
kelompok(enum): Filter by NOTARIS, PPATsearch(string): Search by namaisPublic(boolean): Filter by status publikasipage(number): Nomor halamansize(number): Jumlah item per halaman
Rencana Pengujian (Test Cases)
| Nama | Verifikasi Akses Menu Pelayanan dengan Izin Valid |
|---|---|
| Deskripsi | Memastikan bahwa officer dengan izin PELAYANAN dapat mengakses menu pelayanan. |
| Langkah-langkah | 1. Login sebagai officer dengan izin PELAYANAN = true.2. Akses /pelayanan.3. Verifikasi tampilan layout dual pane. |
| Hasil yang Diharapkan | 1. Officer berhasil mengakses halaman. 2. Pane kiri menampilkan daftar pelayanan. 3. Pane kanan menampilkan detail pelayanan pertama (default selected). 4. Search box dan filter tersedia. |
| Nama | Load Daftar Pelayanan |
|---|---|
| Deskripsi | Memastikan bahwa daftar pelayanan dimuat dengan benar dari backend. |
| Langkah-langkah | 1. Akses /pelayanan.2. Verifikasi semua pelayanan ditampilkan. 3. Periksa atribut yang ditampilkan (nama, kelompok). |
| Hasil yang Diharapkan | 1. Semua pelayanan dimuat dari database. 2. Masing-masing item menampilkan: nama, kelompok, status. 3. List di-sort berdasarkan kriteria default (e.g., alfabet). 4. Pagination berfungsi jika item lebih dari limit. |
| Nama | Search Pelayanan by Nama |
|---|---|
| Deskripsi | Memastikan bahwa fitur search berfungsi dengan benar. |
| Langkah-langkah | 1. Akses /pelayanan.2. Ketik "JUAL BELI" di search box. 3. Verifikasi hasil pencarian. |
| Hasil yang Diharapkan | 1. Daftar filter menampilkan hanya pelayanan yang cocok. 2. Search case-insensitive. 3. Partial match diterima (e.g., "JUAL" match "JUAL BELI"). 4. Clear search button menampilkan semua item kembali. |
| Nama | Filter Pelayanan by Kelompok |
|---|---|
| Deskripsi | Memastikan bahwa filter kelompok berfungsi dengan benar. |
| Langkah-langkah | 1. Akses /pelayanan.2. Buka filter dropdown. 3. Pilih "NOTARIS". 4. Verifikasi hasil filter. |
| Hasil yang Diharapkan | 1. Daftar filter menampilkan hanya pelayanan NOTARIS. 2. Pelayanan PPAT disembunyikan. 3. Filter dapat dikombinasikan dengan search. 4. Clear filter menampilkan semua item. |
| Nama | Tampilkan Detail Pelayanan |
|---|---|
| Deskripsi | Memastikan bahwa detail pelayanan ditampilkan dengan benar. |
| Langkah-langkah | 1. Akses /pelayanan.2. Klik salah satu pelayanan di pane kiri. 3. Verifikasi detail di pane kanan. |
| Hasil yang Diharapkan | 1. Pane kanan menampilkan tab: Umum, Syarat Berkas, Tugas, Biaya. 2. Tab Umum menampilkan: nama, kelompok, deskripsi, status. 3. Tab Syarat Berkas menampilkan daftar dokumen yang diperlukan. 4. Tab Tugas menampilkan daftar tugas untuk layanan. 5. Tab Biaya menampilkan daftar biaya default. |
| Nama | Membuat Pelayanan Baru Lengkap |
|---|---|
| Deskripsi | Memastikan bahwa officer dapat membuat pelayanan baru dengan semua komponen. |
| Langkah-langkah | 1. Akses /pelayanan.2. Klik "Tambah Pelayanan". 3. Isi form: nama, kelompok, deskripsi. 4. Tambah 3 syarat berkas. 5. Tambah 2 tugas. 6. Tambah 2 biaya. 7. Submit form. |
| Hasil yang Diharapkan | 1. Modal form menampilkan semua field input. 2. Dynamic lists untuk syarat, tugas, biaya berfungsi. 3. Pelayanan berhasil dibuat dengan semua komponen. 4. Pelayanan muncul di daftar pane kiri. 5. Detail pelayanan ditampilkan di pane kanan. |
| Nama | Edit Data Pelayanan |
|---|---|
| Deskripsi | Memastikan bahwa officer dapat mengedit data pelayanan yang sudah ada. |
| Langkah-langkah | 1. Akses /pelayanan.2. Pilih pelayanan. 3. Klik tombol "Edit". 4. Ubah nama dan deskripsi. 5. Tambah syarat berkas baru. 6. Hapus satu syarat berkas. 7. Klik "Simpan". |
| Hasil yang Diharapkan | 1. Edit mode mengaktifkan semua input field. 2. Perubahan dapat disimpan. 3. Syarat berkas dapat ditambah/dihapus dalam edit mode. 4. Setelah simpan, tampilkan success message. 5. Perubahan persistent setelah refresh. |
| Nama | Hapus Pelayanan yang Tidak Digunakan |
|---|---|
| Deskripsi | Memastikan bahwa pelayanan yang tidak digunakan dapat dihapus. |
| Langkah-langkah | 1. Akses /pelayanan.2. Pilih pelayanan yang tidak aktif. 3. Klik tombol "Hapus". 4. Konfirmasi penghapusan di modal. |
| Hasil yang Diharapkan | 1. Modal konfirmasi ditampilkan sebelum hapus. 2. Setelah konfirmasi, pelayanan dihapus dari database. 3. Pelayanan tidak muncul lagi di daftar pane kiri. 4. Success message ditampilkan. 5. Pane kanan menampilkan pelayanan berikutnya atau empty state. |
| Nama | Cegah Penghapusan Pelayanan yang Aktif Digunakan |
|---|---|
| Deskripsi | Memastikan bahwa sistem mencegah penghapusan pelayanan yang masih digunakan dalam permohonan aktif. |
| Langkah-langkah | 1. Buat permohonan dengan pelayanan tertentu (status DALAM_PROSES). 2. Akses /pelayanan.3. Coba hapus pelayanan yang digunakan permohonan tersebut. |
| Hasil yang Diharapkan | 1. Sistem mendeteksi pelayanan masih digunakan. 2. Warning message ditampilkan: "Pelayanan masih digunakan dalam X permohonan aktif". 3. Tombol "Hapus" disabled atau tidak berfungsi. 4. Penghapusan dibatalkan. |
| Nama | Kombinasi Search dan Filter |
|---|---|
| Deskripsi | Memastikan bahwa search dan filter dapat digunakan bersamaan. |
| Langkah-langkah | 1. Akses /pelayanan.2. Filter by kelompok "NOTARIS". 3. Search "KAWIN". 4. Verifikasi hasil kombinasi. |
| Hasil yang Diharapkan | 1. Hasil menampilkan pelayanan NOTARIS dengan "KAWIN" di nama. 2. Contoh: "PERJANJIAN KAWIN" ditampilkan, "PERJANJIAN PPAT" tidak. 3. Clear search atau filter akan update hasil secara real-time. |
| Nama | Validasi Input Saat Membuat/Edit Pelayanan |
|---|---|
| Deskripsi | Memastikan bahwa form validasi berfungsi dengan benar. |
| Langkah-langkah | 1. Buka form tambah/edit pelayanan. 2. Coba submit dengan nama kosong. 3. Coba submit dengan nama duplikat. 4. Coba submit dengan nominal biaya non-numeric. 5. Submit form valid. |
| Hasil yang Diharapkan | 1. Nama kosong: error message "Nama tidak boleh kosong". 2. Nama duplikat: error message "Nama sudah digunakan". 3. Nominal non-numeric: error message "Nominal harus angka". 4. Form valid: submit berhasil, success message. |
Rincian Abstraksi Modul Keuangan & Penagihan
Rincian Abstraksi Modul Keuangan & Penagihan
| Objek | Anggota | Tipe Data/Keterangan |
|---|---|---|
| Invoice | Properti: | |
id | string (ID unik tagihan) | |
amount | float (Jumlah total tagihan) | |
status | string (paid, unpaid, overdue) | |
dueDate | date (Tanggal jatuh tempo) | |
relatedOrderId | string (ID permohonan terkait) | |
| Metode: | ||
calculateTotal(costList: Cost[]) | Menghitung jumlah total dari daftar biaya yang diberikan. Kembali: float. | |
lock() | Mengunci tagihan agar tidak bisa diubah. Kembali: boolean. | |
sendToCustomer(customer: Customer) | Mengirim tagihan ke pelanggan. Kembali: boolean. |
Diagram Kelas (Class Diagram)
Diagram ini menunjukkan struktur kelas inti dan relasinya dalam modul keuangan.
ERD (Entity-Relationship Diagram)
Diagram ini merepresentasikan struktur database untuk modul ini dan hubungannya dengan entitas lain.
Rencana Pengujian (Test Cases)
| Nama | Verifikasi Pencatatan Pengeluaran Otomatis |
|---|---|
| Deskripsi | Memastikan bahwa ketika tugas yang memiliki biaya ditandai sebagai selesai, sistem secara otomatis mencatat biaya tersebut sebagai pengeluaran kantor tanpa entri manual. |
| Langkah-langkah | 1. Buat permohonan baru.<br>2. Buat tugas di dalam permohonan dengan biaya Rp 500.000.<br>3. Tandai tugas tersebut sebagai Selesai. |
| Hasil yang Diharapkan | 1. Status tugas berubah menjadi Selesai.<br>2. Sebuah entri baru dengan jumlah Rp 500.000 dan tipe Pengeluaran muncul di laporan keuangan.<br>3. Total pengeluaran kantor bertambah Rp 500.000.<br>4. Tidak ada notifikasi kesalahan. |