Dokumentasi Modul
Halaman ini berisi contoh dari standar format modul dan hanya digunakan sebagai contoh yang bisa di-copy-paste saat menyusun modul.
TIP
Jangan lupa untuk mengimpor komponen Diagram di setiap halaman modul yang menggunakannya. Impor dapat dilakukan dengan menambahkan blok skrip berikut di bagian atas file:
vue
<script setup>
import Diagram from '../components/Diagram.vue';
<\/script>markdown
## **Spesifikasi Perilaku & Alur**
#### **Skenario 6.1: Mencatat Pemasukan dan Pengeluaran Kantor**
Diagram ini menggambarkan bagaimana `Admin` mencatat transaksi keuangan yang masuk atau keluar dari kantor.
<Diagram id="variabel2" :code="variabel2_sequence" />
<Diagram id="variabel1" :code="variabel1_flowchart" />
| Aktor | Officer & Sistem |
|:---|:---|
| Rincian | Given Admin telah login dan memiliki akses untuk mengatur informasi kantor, When Admin membuka profil kantor dan menekan tombol ubah nomor, Then sistem menampilkan kode QR dari WhatsApp, And panduan untuk memindai kode tersebut. Setelah Admin memindai kode, sistem akan menyimpan nomor dan sesi WhatsApp di basis data pusat dan lokal. |Rincian ditulis mengikuti format Given-When-Then yang diadopsi dari pendekatan Behavior-Driven-Development (BDD).
Diagram yang pertama menggambarkan prilaku antara sistem dan pengguna. Diagram kedua menampilkan diagram flowchart yang menggambarkan cara kerja internal dari skenario tersebut.
markdown
### **Detail Teknis & Perancangan**
#### **Abstraksi & Objek Inti**
Modul ini berinteraksi dengan objek-objek inti berikut:
Tentu, saya akan menyajikan rincian abstraksi dalam format tabel Markdown seperti yang Anda minta. Tabel ini akan merinci setiap objek, properti, dan metodenya, memberikan gambaran yang jelas dan terstruktur tentang fondasi data dalam modul ini.
---
### **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.
classDiagram
class Admin {
+String id
+String name
+manageInvoice()
}
class Invoice {
+String id
+float totalAmount
+String status
+Date dueDate
+lock()
+sendToCustomer()
}
class Transaction {
+String id
+float amount
+String type
+Date date
}
class Cost {
+String id
+float amount
+String description
}
Admin "1" -- "0..*" Invoice : manages
Invoice "1" -- "0..*" Cost : contains
Transaction "1" -- "1" Cost : records
Admin "1" -- "0..*" Transaction : records
#### **ERD (Entity-Relationship Diagram)**
Diagram ini merepresentasikan struktur database untuk modul ini dan hubungannya dengan entitas lain.
erDiagram
PELANGGAN ||--o{ PERMOHONAN : mengajukan
PERMOHONAN ||--o{ TAGIHAN : memiliki
TAGIHAN ||--o{ BIAYA_TUGAS : terdiri dari
ADMIN ||--o{ PERMOHONAN : mengelola
ADMIN ||--o{ TRANSAKSI : mencatat
PERMOHONAN {
int id PK
string status
date createdAt
}
TAGIHAN {
int id PK
int permohonan_id FK
float jumlah
string status
date jatuhTempo
}
TRANSAKSI {
int id PK
int admin_id FK
float jumlah
string jenis
date tanggal
}
BIAYA_TUGAS {
int id PK
int tagihan_id FK
float jumlah
string deskripsi
}
ADMIN {
int id PK
string nama
}
#### **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. |