akuntansi-sia/diagrams/use-cases.md

69 lines
3.4 KiB
Markdown

**Karyawan — Use Cases**
- **Aktor:** `User` (role = employee / karyawan).
- **Prasyarat:** Terdaftar dan terautentikasi (login).
- **Melihat Stok Produk:**
- **Goal:** Menampilkan ketersediaan barang di `Stock` per `Branch`.
- **Alur Utama:** 1) Buka menu Stok → 2) Pilih `Branch` → 3) Sistem menampilkan daftar `Product` dengan `quantity`.
- **Alur Alternatif:** Filter/cari berdasarkan `Product` atau kategori; jika kosong tampilkan "Tidak ditemukan".
- **Postcondition:** Karyawan melihat stok terkini.
- **Mencatat Penjualan:**
- **Goal:** Mencatat transaksi di `Sale` dan mengurangi `Stock`.
- **Alur Utama:** 1) Pilih `Product` → 2) Masukkan `quantity` → 3) Sistem validasi stok → 4) Simpan `Sale` → 5) Update `Stock`.
- **Alur Alternatif:** Jika stok tidak cukup → tampilkan pesan dan batalkan atau arahkan ke proses pembelian (`Purchase`).
- **Postcondition:** `Sale` tersimpan, `Stock` berkurang sesuai.
- **Mencatat Pembelian (opsional sesuai izin):**
- **Goal:** Menyimpan transaksi di `Purchase` dan menambah `Stock`.
- **Alur:** 1) Input supplier/item/quantity/total → 2) Simpan `Purchase` → 3) Update `Stock`.
- **Postcondition:** `Purchase` tersimpan, stok bertambah.
- **Melihat Laporan Dasar:**
- **Goal:** Melihat ringkasan penjualan harian dan status stok untuk tugas operasional.
- **Alur:** Buka menu Laporan → pilih rentang waktu/branch → tampilkan ringkasan sederhana.
**Admin — Use Cases**
- **Aktor:** `User` (role = admin).
- **Prasyarat:** Terdaftar, terautentikasi, memiliki hak admin.
- **Kelola Produk (CRUD):**
- **Goal:** Menambah, mengubah, dan menghapus data `Product`.
- **Alur Utama:** 1) Buka menu Produk → 2) Tambah/Ubah/Hapus produk → 3) Sistem validasi dan simpan.
- **Postcondition:** Data `Product` ter-update di database.
- **Kelola Stok & Penyesuaian:**
- **Goal:** Koreksi `Stock` per `Branch` (penyesuaian fisik atau koreksi kesalahan).
- **Alur:** 1) Pilih `Branch` → 2) Pilih `Product` → 3) Ubah `quantity` → 4) Simpan (simpan audit log jika perlu).
- **Postcondition:** Stok tersinkronisasi.
- **Kelola Cabang (`Branch`):**
- **Goal:** CRUD `Branch`.
- **Alur:** 1) Buka menu Cabang → 2) Tambah/Ubah/Hapus → 3) Simpan.
- **Kelola Karyawan / User:**
- **Goal:** Menambah/mengedit/menonaktifkan akun `User`, assign `role` dan `branch`.
- **Alur:** 1) Akses manajemen pengguna → 2) Kelola hak akses/branch → 3) Simpan.
- **Kelola Biaya Operasional (`OperationalCost`):**
- **Goal:** Input dan review biaya operasional per `Branch`.
- **Alur:** 1) Input label/amount/date/branch → 2) Simpan → 3) Tampilkan rekap biaya.
- **Laporan & Rekonsiliasi:**
- **Goal:** Menghasilkan laporan gabungan (`Purchase`, `Sale`, `OperationalCost`, `Stock`) per `Branch`/periode dan ekspor (CSV/PDF).
- **Alur:** 1) Pilih tipe laporan dan rentang waktu → 2) Sistem kumpulkan data → 3) Tampilkan / ekspor.
**Catatan Integrasi dengan Model Anda**
- Relasi penting: `User` berasosiasi dengan `Branch`; `Product` terkait `Stock`, `Purchase`, dan `Sale`.
- Transaksi `Sale` dan `Purchase` wajib melakukan perubahan konsisten pada `Stock`.
- Admin sebaiknya memiliki audit log untuk operasi sensitif (penyesuaian stok, hapus produk, perubahan user).
Jika Anda ingin, saya dapat:
- Mengkonversi ini menjadi diagram Use Case (draw.io) dan menyimpan di folder `diagrams/`.
- Menambahkan contoh API endpoint atau skenario test untuk tiap use case.