Modul Permohonan
Spesifikasi Perilaku & Alur
Skenario 1: Membuat Permohonan atas Kuasa Pemohon (Walk-in)
INFO
presumption: Admin telah terautentikasi dan memiliki izin MANAGE_ORDERS
Diagram ini menggambarkan bagaimana Admin membuat permohonan baru atas permintaan pemohon (walk-in / manual) dengan formulir bertahap (wizard).
(Sequence Diagram)(Flowchart Diagram)
SKENARIO 1.1: Memilih pelayanan pada submenu pelayanan
| Aktor | Admin & Sistem |
|---|---|
| Rincian | Given Admin mengakses submenu pertama yaitu pelayanan pada formulir permohonan baru When Admin memilih salah satu pelayanan yang dituju Then Sistem menyimpan detail pelayanan ke dalam state fromulir sehingga formulir tugas, biaya, dan syarat berkas terisi otomatis |
Tipe Data
ts
type Service = {
id: string;
name: string;
chargeAppFee: boolean;
paymentMode: 'POSTPAY' | 'PREPAY' | 'DOWNPAYMENT';
description?: string | null;
category: 'NOTARIS' | 'PPAT';
coverFileId?: string | null;
createdAt: Date;
updatedAt: Date;
};SKENARIO 1.2: Melengkapi formulir permohonan
- Rincinan *behavior* formulir permohonan
Submenu selanjutnya adalah Informasi Umum, Objek Pajak (opsional), Para Pihak, Tagihan, Penugasan, dan Syarat Berkas. Pemilihan pelayanan sebelumnya melengkapi detail tagihan, penugasan, dan syarat berkas dengan preset yang telah diatur
| Aktor | Admin & Sistem |
|---|---|
| Rincian | Given Admin mengakses submenu selanjutnya formulir permohonan baru When Admin melengkapi formulir selanjutnya Then Sistem menyimpan detail formulir yang telah dilengkapi untuk dikirimkan ke server melalui API |
Tipe Data
ts
type Order = {
id: string;
applicant: string;
chargeAppFee: boolean;
paymentMode: 'POSTPAY' | 'PREPAY' | 'DOWNPAYMENT';
pic?: string | null;
vip: boolean;
week?: number | null;
status: string;
description?: string | null;
title?: string | null;
ticketNumber?: number | null;
public: boolean;
serviceId: string;
kickoff?: Date | null;
duration: number;
deadline?: Date | null;
completionDate?: Date | null;
room: string;
label?: string | null;
createdAt: Date;
updatedAt: Date;
};