Skip to content

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. |