Skip to content

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

AktorAdmin & Sistem
RincianGiven 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

AktorAdmin & Sistem
RincianGiven 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;
};