Documentation Index
Fetch the complete documentation index at: https://docs-mstore.faisalaffan.com/llms.txt
Use this file to discover all available pages before exploring further.
๐งฎ ERP Schema V2 Overview
ERP Schema V2 adalah schema ERP generik yang menyederhanakan lebih dari 250 tabel menjadi sekitar 60 tabel terstruktur, dengan fokus pada:
- Universal Journal ala SAP S/4HANA
- Master data minimalis (material, business partner)
- Alur transaksi inti yang bersih (PRโPOโGRโAPโGL, SOโInvoiceโARโGL, dll.)
- Multi-tenant, multi-company, multi-branch untuk skala nasional/enterprise.
1. Executive Summary
1.1 Latar Belakang
Schema lama:-
250 tabel untuk POS, SCM, Manufacturing, Promo Engine, Wallet, Finance, dll.
- Banyak duplikasi:
- Kode seperti
merchant_code,branch_code,product_codetersebar di banyak tabel. - Banyak tabel log dan derived yang sebenarnya bisa dinormalisasi.
- Kode seperti
- Sulit dipakai sebagai ERP core karena:
- Tidak ada universal journal.
- Master data tersebar dan saling overlap.
- Konsolidasi menjadi sekitar 60 tabel.
- Pemisahan jelas antara:
- Master data (material, customer, vendor, COA).
- Dokumen bisnis (PO, SO, GR, invoice).
- Posting keuangan (GL).
- Logistik (stock, movement).
- Fokus ke ERP tanpa kehilangan kemampuan POS/retail.
1.2 Tujuan & Manfaat
- Sebagai core ERP generik yang bisa diadopsi berbagai bisnis.
- Memudahkan integrasi:
- Antar modul internal (inventory, finance, HR, CRM).
- Dengan sistem eksternal (billing, data warehouse, BI).
- Menurunkan kompleksitas:
- Lebih sedikit tabel.
- Struktur dan naming yang konsisten.
- Memperkuat kualitas data:
- Satu sumber kebenaran untuk master & journal.
- Mengurangi duplikasi dan inkonsistensi.
2. Architecture Overview
2.1 Prinsip Desain Inti
-
Universal Journal sebagai pusat
Semua transaksi keuangan berakhir digl_entry+gl_line. -
Master Data Minimalis
inv_matsebagai material master tunggal.so_customer&po_vendorsebagai business partner ringan.- Atribut turunan dipecah ke tabel kecil spesifik bila perlu.
-
Transaction Core yang Clean
- Procurement โ
po_*+inv_*+fi_ap_*+gl_*. - Sales/POS โ
so_*+fi_ar_*+gl_*. - Inventory โ selalu lewat
inv_move.
- Procurement โ
-
Multi-tenant, Multi-company, Multi-branch
- Tenant > Company > Branch sebagai hirarki standar.
-
Domain Prefix
- Prefix tabel per domain (
core_,fi_,gl_,inv_,po_,so_,hr_,crm_,cs_,au_,an_,ic_,rg_) untuk menjaga boundary dan memudahkan navigasi.
- Prefix tabel per domain (
2.2 Domain Prefixes
| Prefix | Domain | Contoh tabel |
|---|---|---|
core_ | Core, auth, RBAC, config | core_user, core_audit |
fi_ | Finance AR/AP/Cash | fi_ar_inv, fi_cash_tx |
gl_ | General Ledger / Universal Journal | gl_entry, gl_line |
inv_ | Inventory & stock | inv_mat, inv_move |
po_ | Procurement | po_order, po_gr |
so_ | Sales & POS | so_order, so_pos |
hr_ | Human Resources | hr_emp, hr_payroll |
crm_ | Customer Relationship Management | crm_contact, crm_lead |
cs_ | Customer Service / Ticketing | cs_ticket |
au_ | Audit & Segregation of Duties | au_sod |
an_ | Analytics & KPI | an_kpi, an_kpi_val |
ic_ | Intercompany / Holding | ic_entity, ic_tx |
rg_ | Region, Currency, Policy | rg_rate, rg_policy |
2.3 Multi-tenant โ Company โ Branch
-
core_tenant
Level SaaS / grup tertinggi. -
core_company
Entitas legal akuntansi (PT/CV). COA, GL, AR/AP terikat ke sini. -
core_branch
Unit operasional (toko, gudang, cabang). Stock dan POS terjadi di level ini.
2.4 Konvensi PK/FK & Penamaan
- PK:
id BIGINT UNSIGNED AUTO_INCREMENT. - FK umum:
tenant_idโcore_tenant.idcompany_idโcore_company.idbranch_idโcore_branch.idmat_idโinv_mat.idcust_idโso_customer.idvendor_idโpo_vendor.id
- Kode unik lokal:
codeunik per company (material, customer, vendor, COA) untuk memudahkan integrasi dan import dari sistem lain.
2.5 Alignment dengan SAP / S4HANA
ERP Schema V2 mengadopsi spirit SAP Universal Journal (ACDOCA) dan Material Master namun dengan eksekusi yang lebih ringan dan mudah dioperasikan di startup atau mid-size enterprise.
-
Universal Journal
- SAP ACDOCA โ V2:
gl_entry+gl_line. - Semua posting AR/AP/expense/cash dihantarkan ke GL.
- SAP ACDOCA โ V2:
-
Material & Stock
- SAP MARA/MBEW/MCHB โ V2:
inv_mat,inv_stock,inv_move.
- SAP MARA/MBEW/MCHB โ V2:
-
Document Flow
- SAP: PRโPOโGRโInvoiceโPayment.
V2:po_reqโpo_orderโpo_grโfi_ap_invโfi_ap_payโgl_entry.
- SAP: PRโPOโGRโInvoiceโPayment.
3. ERD Overview (Global)
4. Business Process Flows
- Procurement: PR โ PO โ GR โ AP โ GL
- Sales: SO โ Invoice โ AR โ GL
- POS Mini Flow
- Inventory: Stock โ Movement โ Adjustment
- Payroll Mini Flow
- CRM & Ticket
Flow Ringkas
- Purchase Request (PR)
- User cabang membuat kebutuhan di
po_req+po_req_line.
- User cabang membuat kebutuhan di
- Purchase Order (PO)
- Buyer meng-approve PR โ generate
po_order+po_order_line.
- Buyer meng-approve PR โ generate
- Goods Receipt (GR)
- Barang datang โ create
po_gr+po_gr_line. - GR men-trigger
inv_move(movement type =IN_PURCHASE) dan updateinv_stock.
- Barang datang โ create
- AP Invoice
- Finance menerima invoice supplier โ
fi_ap_inv+fi_ap_inv_line.
- Finance menerima invoice supplier โ
- AP Payment
- Pembayaran ke supplier โ
fi_ap_pay.
- Pembayaran ke supplier โ
- GL Posting
- AP invoice dan payment di-post ke
gl_entry+gl_line(debit/credit COA terkait).
- AP invoice dan payment di-post ke
Diagram
5. Design Rationale
5.1 Kenapa Universal Journal?
- Fakta:
- Schema lama memisahkan jurnal per modul (AR, AP, POS, dsb).
- Sulit membuat laporan konsolidasi & audit trail.
- Pendekatan V2:
- Semua posting keuangan selalu lewat
gl_entry+gl_line.
- Semua posting keuangan selalu lewat
- Manfaat:
- Laporan keuangan dan audit hanya perlu satu sumber data.
- Implementasi AR/AP/asset/cash hanyalah โ/viewโ domain di atas GL.
5.2 Kenapa Material Master Dinormalisasi?
- Fakta:
- Banyak duplikasi
productvsinventoryvsproduct_price.
- Banyak duplikasi
- Pendekatan V2:
- Satu tabel
inv_matuntuk material. - Harga, stock, movement dipisahkan ke tabel spesifik (
inv_stock,inv_move, dsb.).
- Satu tabel
- Manfaat:
- Satu ID material di seluruh sistem.
- Menyederhanakan integrasi dengan POS, e-commerce, dan sistem eksternal.
5.3 Kenapa POS Disederhanakan?
- Fakta:
- POS lama mencampur konsep GL dan inventory di banyak tabel.
- Pendekatan V2:
- POS cukup
so_pos+so_pos_line. - Posting GL & movement inventory dilakukan oleh service terpisah (terhadap
fi_cash_tx,inv_move,gl_entry).
- POS cukup
- Manfaat:
- Engine POS tetap ringan & offline-friendly.
- Akuntansi dan stock tetap terkendali dengan cara yang konsisten.
5.4 Kenapa Domain Prefix Penting?
- Memudahkan:
- Pengembang baru memahami batas domain.
- Query & migrasi berdasarkan modul.
- Pemetaan ke tim/domain (core, finance, inventory, dsb.).
- Mengurangi:
- Risiko konflik nama.
- Risiko mencampur domain (mis. tabel finance dipakai langsung oleh modul inventory).
6. Glossary
| Istilah | Definisi singkat |
|---|---|
| Tenant | Pemilik instance ERP (grup/holding/penyedia layanan) |
| Company | Entitas legal akuntansi (PT/CV) |
| Branch | Unit operasional (toko, gudang, cabang) |
| Material | Item/barang yang dikelola di inventory (inv_mat) |
| COA (Chart of Accounts) | Daftar akun buku besar untuk GL (gl_coa) |
| Universal Journal | Model di mana semua posting keuangan masuk ke satu struktur GL |
| PR (Purchase Request) | Permintaan pembelian awal (po_req) |
| PO (Purchase Order) | Pesanan pembelian ke vendor (po_order) |
| GR (Goods Receipt) | Pencatatan barang masuk (po_gr) |
| AR (Accounts Receivable) | Piutang usaha (fi_ar_*) |
| AP (Accounts Payable) | Hutang usaha (fi_ap_*) |
| POS (Point of Sale) | Transaksi penjualan kasir (so_pos) |
| Movement | Pergerakan stok yang mempengaruhi inv_stock (inv_move) |
| Adjustment | Penyesuaian stok akibat opname/selisih (inv_adj, inv_adj_line) |
| SoD (Segregation of Duties) | Pemisahan tugas untuk mencegah fraud (au_sod) |
| KPI | Key Performance Indicator (an_kpi, an_kpi_val) |
| Intercompany | Transaksi antar entitas dalam satu grup (ic_entity, ic_tx) |
| Region/Policy | Pengaturan regional, mata uang, dan kebijakan (rg_*) |
7. Navigasi ke Dokumentasi Modul
Gunakan file modul di folder40-database/erp-v2/:
- Satu file per modul (Core, Finance, GL, Inventory, Procurement, Sales, HR, CRM, CS, Audit, Analytics, Intercompany, Global) mencakup:
- List tabel & deskripsi pendek.
- Key fields & FK.
- Hubungan antar tabel per modul.
- Contoh flow minimal & snippet query
SELECTuntuk laporan.