# Gap Matrix Implementasi ERP Bebek Mba Reina

Dokumen ini memetakan target fitur vs implementasi saat ini pada codebase.

Status:
- ✅ Sudah
- 🟡 Parsial
- ❌ Belum

## Ringkasan Cepat

| No | Menu | Status |
|---|---|---|
| 1 | Dashboard | 🟡 |
| 2 | Kasir | 🟡 |
| 3 | Transaksi Global | ✅ |
| 4 | Penjualan Non-Warung | ✅ |
| 5 | Pembelian | ✅ |
| 6 | Pengeluaran | ✅ |
| 7 | Master Data | 🟡 |
| 8 | Payroll | 🟡 |
| 9 | Laporan | 🟡 |
| 10 | Kas & Bank | ✅ |

---

## 1) Dashboard

### Target dan Status
- [x] Omset hari ini (✅)
- [x] Omset bulan ini (✅)
- [x] Pengeluaran bulan ini (✅)
- [x] Pembelian bulan ini (✅)
- [x] Cabang terbaik bulan ini (✅)
- [x] Grafik penjualan 7 hari terakhir (✅)
- [x] Grafik penjualan 30 hari terakhir (✅)
- [x] Filter cabang (✅)

### Gap tersisa
- [ ] Validasi definisi metrik cabang terbaik saat filter cabang aktif (saat ini tetap global).
- [ ] Tambah indikator pembanding periode sebelumnya (opsional, untuk executive dashboard).

---

## 2) Kasir

### Submenu Kasir
- [x] Riwayat transaksi cabang aktif (✅)
- [x] Order tersimpan belum lunas (✅)
- [x] Catat pengeluaran harian kasir (✅)
- [x] Tambah pelanggan baru dari POS (✅)
- [x] Pengaturan printer dan layout struk (🟡, saat ini local browser)

### Fitur Kasir
- [x] Diskon dari data diskon (✅)
- [x] Split bill (🟡, baru simulasi UI)
- [x] Merge bill (✅)
- [x] Pelanggan wajib untuk transaksi belum bayar (✅)
- [x] Tombol reload data + pencarian produk (✅)
- [x] Nama cabang dan nama karyawan tampil (✅)
- [x] Reprint bill (✅)
- [x] Scan produk via barcode input (✅)

### Gap implementasi prioritas
- [ ] Implement split bill ke backend (membuat transaksi split real, bukan alert UI).
- [ ] Simpan setting printer/layout ke DB per cabang/per kasir.
- [ ] Tambah template struk pelanggan vs struk dapur yang benar-benar terpisah.
- [ ] Tambah endpoint reprint berdasarkan invoice number (saat ini pakai data history yang sedang dimuat).

---

## 3) Transaksi Global

### Target dan Status
- [x] Daftar transaksi seluruh cabang (✅)
- [x] Filter pelanggan (✅)
- [x] Filter cabang (✅)
- [x] Filter waktu: hari ini, kemarin, 7 hari, 30 hari, custom (✅)
- [x] Filter tipe penjualan (✅)
- [x] Filter status transaksi (✅)
- [x] Limit data 30/50/100 (✅)

### Gap tersisa
- [ ] Sinkronisasi penggunaan field status vs payment_status agar konsisten untuk user bisnis.

---

## 4) Penjualan Non-Warung

### Target dan Status
- [x] Modul transaksi reseller/franchise (✅)
- [x] Customer kemitraan + due date + paid amount (✅)
- [x] Posting jurnal otomatis (✅)

### Gap tersisa
- [ ] Tambah filter/list riwayat khusus non-warung dengan ringkasan piutang.

---

## 5) Pembelian

### Target dan Status
- [x] Pembelian bahan baku dari supplier (✅)
- [x] Item pembelian multi baris (✅)
- [x] Partial payment dan due date (✅)
- [x] Penambahan stok bahan baku otomatis (✅)

### Gap tersisa
- [ ] Tambah daftar riwayat pembelian dengan filter lanjutan (supplier/cabang/waktu).

---

## 6) Pengeluaran

### Target dan Status
- [x] Input pengeluaran operasional (✅)
- [x] Kategori akun beban COA (✅)
- [x] Metode pembayaran kas/bank (✅)
- [x] Lampiran bukti pengeluaran (✅)
- [x] Riwayat pengeluaran + filter pencarian (✅)

### Gap tersisa
- [ ] Tambah approval workflow untuk nominal besar (opsional).

---

## 7) Master Data

### a) Pengaturan
- [x] Pengaturan umum perusahaan dasar (nama, phone, pajak, service charge) (🟡)
- [ ] Logo perusahaan (❌)
- [ ] Favicon (❌)
- [ ] Opsi pajak penjualan on/off (❌)
- [ ] Harga jual sudah termasuk pajak (❌)
- [ ] Opsi service charge penjualan on/off (❌)
- [ ] Opsi pajak pembelian on/off (❌)
- [ ] Harga beli sudah termasuk pajak (❌)

### b) Data Produk
- [x] Nama produk (✅)
- [x] Kategori (✅)
- [x] Harga dasar (✅)
- [x] Varian (✅)
- [x] Harga per tipe pesanan (🟡, model ada, UI manajemen khusus belum lengkap)

### c-q) Master lain
- [x] Kategori produk (🟡, digunakan di produk, UI master dedicated belum eksplisit)
- [x] Data cabang (nama, alamat, whatsapp, kategori) (✅)
- [x] Data karyawan + akses cabang + PIN (✅)
- [x] Data supplier (🟡, dipakai pembelian, UI master dedicated belum ada)
- [x] Metode pembayaran + akun kas/bank + MDR (✅)
- [x] Data tipe penjualan (🟡, dipakai transaksi, UI dedicated belum ada)
- [ ] Data akun bank & kasir (❌, belum sebagai master dedicated terpisah)
- [x] Data pelanggan (🟡, ada via POS/API, belum ada halaman admin dedicated)
- [x] Data bahan baku (🟡, dipakai pembelian, UI dedicated belum ada)
- [x] Data akun pengeluaran (🟡, berbasis COA, belum ada menu master khusus)
- [x] Data diskon (✅)
- [x] Data harga otomatis tipe penjualan (🟡, model/relasi ada, UI/aturan otomatis penuh belum ada)
- [x] Data pajak (🟡, model ada, manajemen penuh belum ada)
- [ ] Data kategori cabang (❌, saat ini field kategori string)
- [x] Custom role (🟡, role+permission ada, form CRUD role dedicated belum ada)

### Checklist implementasi Master Data (prioritas)
- [ ] Modul Master Pelanggan admin (CRUD + filter + import sederhana).
- [ ] Modul Master Supplier admin (CRUD + status aktif/nonaktif).
- [ ] Modul Master Bahan Baku admin (CRUD + unit + minimum stock).
- [ ] Modul Master Tipe Penjualan admin (CRUD + default branch mapping).
- [ ] Modul Master Pajak admin (CRUD + akun pajak penjualan/pembelian).
- [ ] Modul Master Kategori Cabang (normalisasi tabel terpisah).
- [ ] Modul Master Akun Kas & Bank (mapping dengan payment method).
- [ ] Role management dedicated (CRUD role + template permission).
- [ ] Pengaturan branding (logo + favicon upload + preview).

---

## 8) Payroll

### Target dan Status
- [x] Data absensi manual (✅)
- [x] Data lembur manual (✅)
- [x] Data gaji pokok/tunjangan/potongan (🟡)
- [x] Download slip gaji per karyawan (PNG) (✅)
- [x] Proses payroll + posting jurnal (✅)

### Gap detail payroll
- [ ] Tambahkan field terpisah sesuai target: tanggal masuk, tunjangan transport, tunjangan masa kerja, tunjangan lembur per jam pada master gaji.
- [ ] Tambah filter payroll per cabang.
- [ ] Tambah export batch slip gaji per periode.

---

## 9) Laporan

### a) Finansial
- [x] Neraca (✅)
- [ ] Arus kas (❌)
- [x] Laba rugi (✅)
- [ ] Hutang piutang per kontak (❌)

### b) Akuntansi
- [ ] Ringkasan bank (❌)
- [x] Buku besar/Jurnal (✅)

### c) Penjualan
- [x] Total penjualan (✅)
- [x] Total transaksi (✅)
- [x] Top 5 produk terlaris (✅)
- [x] Penjualan per metode pembayaran (✅)
- [x] Penjualan per tipe pesanan (✅)
- [x] Filter cabang + rentang waktu lengkap (✅)

### d) Pembelian
- [x] Total pembelian (✅)
- [x] Total nota pembelian (✅)
- [x] Top 5 supplier pembelian terbanyak (✅)
- [x] Top 5 bahan baku pembelian terbanyak (✅)
- [x] Filter cabang + rentang waktu lengkap (✅)

### e) Pengeluaran
- [x] Total pengeluaran (✅)
- [x] Total transaksi pengeluaran (✅)
- [x] Top 5 kategori pengeluaran (✅)
- [x] Filter cabang + rentang waktu lengkap (✅)

### Checklist implementasi Laporan (prioritas)
- [x] Tambah tab laporan operasional: Penjualan, Pembelian, Pengeluaran.
- [x] Bangun service agregasi metrik + top 5 (group by + indexed query).
- [x] Standarisasi pilihan rentang waktu: hari ini, kemarin, 7 hari, minggu lalu, 30 hari, custom.
- [ ] Tambah laporan Arus Kas langsung dari jurnal (metode indirect sederhana).
- [ ] Tambah laporan Hutang Piutang per kontak (customer/supplier aging).
- [ ] Tambah ringkasan bank (saldo awal, mutasi, saldo akhir).

---

## 10) Kas & Bank

### Target dan Status
- [x] Ringkasan saldo seluruh akun kas dan bank (✅)
- [x] Detail transaksi per akun kas/bank (✅)
- [x] Transfer dana (kirim/terima) (✅)

### Gap tersisa
- [ ] Tambah validasi saldo minimal sebelum transfer.
- [ ] Tambah status transfer (draft, approved, posted) bila butuh approval flow.

---

## Prioritas Eksekusi Disarankan

### Sprint 1 (High Impact)
- [x] Laporan operasional penjualan/pembelian/pengeluaran lengkap.
- [ ] Master pelanggan/supplier/bahan baku/tipe penjualan dedicated.
- [ ] Split bill backend real transaction.

### Sprint 2
- [ ] Arus kas, hutang-piutang per kontak, ringkasan bank.
- [ ] Master pajak + kategori cabang + role CRUD.
- [ ] Pengaturan printer/layout persisten per cabang/user.

### Sprint 3
- [ ] Branding settings (logo/favicon).
- [ ] Payroll enhancement (struktur komponen gaji sesuai requirement penuh).
- [ ] Approval workflow untuk transfer dana/pengeluaran tertentu.

---

## Definisi Selesai (Definition of Done)

Setiap item dianggap selesai jika:
- [ ] UI tersedia dan bisa dipakai oleh role terkait.
- [ ] Validasi backend lengkap.
- [ ] Data tersimpan permanen di DB (bukan local-only browser).
- [ ] Terhubung ke jurnal akuntansi bila berdampak finansial.
- [ ] Sudah dites minimal untuk happy path dan 1-2 edge case.
