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