🧱 Core Module (core_*, au_*)
Modul Core menyediakan fondasi multi-tenant, multi-company, multi-branch, user management, RBAC, konfigurasi, dan audit trail untuk seluruh ERP Schema V2.
1. Module Purpose
- Menyimpan struktur hirarki tenant → company → branch.
- Mengelola user, role, permission dan mapping-nya (RBAC).
- Menyimpan konfigurasi global/tenant/company.
- Menyimpan audit log dan rule Segregation of Duties (SoD).
2. Tables & Structure
| Tabel | Deskripsi singkat |
|---|---|
core_tenant | Master tenant (instance ERP) |
core_company | Master company per tenant |
core_branch | Master branch/outlet/gudang per company |
core_user | Akun user sistem |
core_role | Master role |
core_permission | Master permission granular |
core_role_perm | Mapping role ke permission |
core_user_role | Mapping user ke role |
core_config | Konfigurasi key/value per tenant/company |
core_notif | Notifikasi sistem untuk user |
core_audit | Audit trail aktivitas penting |
au_sod | Rule Segregation of Duties (role yang tidak boleh digabung) |
3. Key Fields & Relationships
3.1 Hirarki Tenant → Company → Branch
-
core_tenant- Key:
id,code,name - Dipakai oleh:
core_company.tenant_id,core_user.tenant_id,ic_entity.tenant_id.
- Key:
-
core_company- Key:
id,tenant_id,code,name - FK:
tenant_id→core_tenant.id - Dipakai oleh:
core_branch.company_id,gl_coa.company_id,inv_mat.company_id,fi_*,so_customer.company_id,po_vendor.company_id,hr_emp.company_id.
- Key:
-
core_branch- Key:
id,company_id,code,name - FK:
company_id→core_company.id - Dipakai oleh:
inv_stock.branch_id,inv_move.branch_id,po_req.branch_id,po_order.branch_id,so_order.branch_id,so_pos.branch_id, dll.
- Key:
3.2 User & RBAC
-
core_user- Fields:
id,tenant_id,email,password_hash,is_active.
- Fields:
-
core_role- Fields:
id,tenant_id,code,name.
- Fields:
-
core_permission- Fields:
id,tenant_id,code,name,description.
- Fields:
-
Mapping tabel:
core_user_role.user_id→core_user.idcore_user_role.role_id→core_role.idcore_role_perm.role_id→core_role.idcore_role_perm.perm_id→core_permission.id
3.3 Config, Notif, Audit, SoD
-
core_config- Scope per tenant/company:
tenant_id,company_id,k,v. - Unik minimal per tenant:
UNIQUE(tenant_id, company_id, k).
- Scope per tenant/company:
-
core_notif- Target user:
user_id→core_user.id. - Fields:
title,body,is_read,created_at.
- Target user:
-
core_audituser_id→core_user.identity_type,entity_id,action,payload_before,payload_after.
-
au_sod- Menyimpan kombinasi role yang bertentangan:
role_a_id,role_b_id→core_role.id.
- Menyimpan kombinasi role yang bertentangan:
4. Example Business Flows
4.1 Onboarding Tenant Baru
- Buat record di
core_tenant. - Buat minimal satu
core_companydancore_branch. - Buat user admin di
core_user. - Assign role admin di
core_user_role. - Isi konfigurasi dasar di
core_config(timezone, default currency, dsb.).
4.2 Approval Workflow & SoD (Konseptual)
- Role
REQUESTERhanya boleh buat PR (po_req). - Role
APPROVERhanya boleh approve PR/PO. au_sodmendefinisikan bahwa roleREQUESTERdanAPPROVERtidak boleh dimiliki oleh user yang sama.
5. Example Reports (SQL)
Contoh di bawah ini adalah query ilustratif (SELECT-only), bukan definisi schema. Sesuaikan nama kolom/indeks dengan implementasi aktual.