📦 Inventory Module (inv_*)
Modul Inventory mengelola material master, stok per branch, semua movement, dan stock adjustment sebagai basis SCM & POS.
1. Module Purpose
- Menyimpan material master (
inv_mat). - Menyimpan stok per branch/material (
inv_stock). - Menyimpan semua pergerakan stok (
inv_move). - Menyimpan hasil opname & penyesuaian (
inv_adj,inv_adj_line).
2. Tables & Structure
| Tabel | Deskripsi singkat |
|---|---|
inv_mat | Material master per company |
inv_stock | Snapshot stok per branch + material |
inv_move | Semua movement stok (IN/OUT/ADJ) |
inv_adj | Header stock adjustment (hasil opname) |
inv_adj_line | Detail adjustment (system_qty vs physical_qty per material) |
3. Key Fields & Relationships
3.1 inv_mat
- Fields:
company_id,code,name,uom,category,is_active. - Unik per company:
UNIQUE(company_id, code).
3.2 inv_stock
- Fields:
branch_id,mat_id,qty,last_updated_at. - FK:
branch_id→core_branch.idmat_id→inv_mat.id
3.3 inv_move
- Fields:
branch_id,mat_id,move_date,type,qty,ref_type,ref_id,note. - Contoh
type:IN_PURCHASE,OUT_SALES,OUT_POS,ADJ_IN,ADJ_OUT,TRANSFER_IN,TRANSFER_OUT.
3.4 inv_adj & inv_adj_line
inv_adj:branch_id,adj_date,reason,status.inv_adj_line:- FK:
adj_id→inv_adj.id,mat_id→inv_mat.id. - Fields:
system_qty,physical_qty,diff_qty.
- FK:
4. Business Flows
4.1 Purchase Receipt → Stock In
- Goods Receipt di
po_gr/po_gr_line. - Untuk tiap line, sistem membuat
inv_movedengantype = 'IN_PURCHASE'. inv_stockdiupdate berdasarkan agregasi movement.
4.2 Sales / POS → Stock Out
- Penjualan di
so_invoice_lineatauso_pos_line. - Sistem membuat
inv_movedengantype = 'OUT_SALES'atauOUT_POS. inv_stockturun sesuai kuantitas.
4.3 Stock Opname & Adjustment
- Opname fisik menghasilkan record di
inv_adj+inv_adj_line. - Selisih antara
physical_qtydansystem_qtydihitung sebagaidiff_qty. - Sistem membuat movement
ADJ_INatauADJ_OUTdiinv_move.
5. Example Reports (SQL)
Query di bawah adalah contoh SELECT untuk laporan inventory. Tidak ada DDL/migrasi di sini.