# Notification dan Approval Flow Sistem Inventory Walet

## 1. Tujuan
Dokumen ini mendefinisikan event penting yang layak memicu notifikasi atau approval agar kontrol bisnis lebih baik tanpa membuat operasional terlalu lambat.

## 2. Prinsip
- tidak semua transaksi perlu approval
- approval dipakai untuk aksi berisiko tinggi
- notifikasi dipakai untuk awareness dan respons cepat
- approval tidak boleh menghambat proses gudang rutin yang volumenya tinggi

## 3. Event Notifikasi yang Direkomendasikan
### A. Purchase Submitted
Notifikasi ke:
- Owner
- Purchasing supervisor jika ada

Isi:
- nomor pembelian
- supplier
- total nilai
- jumlah line

### B. Receipt Finalized
Notifikasi ke:
- Owner opsional
- Gudang lead
- Purchasing

Isi:
- nomor receipt
- supplier
- jumlah lot terbentuk
- ada/tidak selisih

### C. Large Shrinkage / Adjustment
Notifikasi ke:
- Owner
- Gudang lead
- QC lead jika terkait kualitas

Trigger contoh:
- shrinkage di atas threshold
- cost impact di atas threshold

### D. Regrade Event
Notifikasi ke:
- Owner opsional
- QC lead
- Sales opsional jika pengaruh ke order aktif

### E. Sales Allocation Conflict
Notifikasi ke:
- Sales
- Gudang

Trigger:
- stok kurang
- lot hold terpilih
- qty dialokasikan bentrok

### F. Picking Variance
Notifikasi ke:
- Sales
- Gudang

Trigger:
- qty picked beda dari qty allocated

### G. Lot Hold / Release
Notifikasi ke:
- Gudang
- QC
- Sales jika lot terkait order aktif

## 4. Approval Flow yang Direkomendasikan
### A. Purchase Approval
Kapan perlu:
- nilai pembelian di atas limit tertentu
- supplier baru
- harga beli di atas toleransi historis

Approver:
- Owner
- Purchasing manager

### B. Adjustment Approval
Kapan perlu:
- qty adjustment besar
- cost impact besar
- reason sensitif seperti loss/missing

Approver:
- Gudang lead atau Owner

### C. Regrade Approval
Kapan perlu:
- downgrade signifikan bernilai besar
- lot terkait order customer aktif

Approver:
- QC lead / Owner

### D. Sales Override Approval
Kapan perlu:
- manual override dari policy FIFO
- memakai lot non-prioritas
- allow oversell draft exception

Approver:
- Sales lead / Owner

## 5. Threshold yang Bisa Diatur
Contoh parameter konfigurasi:
- purchase_approval_amount_threshold
- adjustment_qty_threshold
- adjustment_cost_threshold
- shrinkage_percent_threshold
- regrade_qty_threshold
- manual_override_requires_approval

## 6. Status Workflow Tambahan yang Bisa Dipakai
### Purchase
- DRAFT
- PENDING_APPROVAL
- SUBMITTED
- APPROVED
- CANCELLED

### Adjustment
- DRAFT
- PENDING_APPROVAL
- APPROVED
- POSTED
- REJECTED

### Regrade
- DRAFT
- PENDING_APPROVAL
- APPROVED
- EXECUTED
- REJECTED

## 7. UI Flow Sederhana
### Purchase approval
- purchasing submit purchase
- jika melewati threshold -> status PENDING_APPROVAL
- owner approve/reject
- jika approve -> lanjut SUBMITTED

### Adjustment approval
- gudang buat adjustment
- jika kecil -> langsung POSTED
- jika besar -> PENDING_APPROVAL
- approver setujui -> POSTED

## 8. Notifikasi Channel
MVP cukup dukung:
- in-app notification
- email optional
- WhatsApp internal opsional nanti kalau dibutuhkan

## 9. Kesimpulan
Approval dan notifikasi harus fokus ke transaksi berisiko tinggi, bukan semua transaksi. Dengan begitu sistem tetap lincah untuk operasional harian, tapi owner tetap punya kontrol di titik-titik penting.