Data Master Import Guide
Panduan ini menjelaskan end-to-end flow untuk setup data master MStore dari CSV import hingga siap transaksi. Mengikuti SAP S/4HANA architecture dengan prinsip:Hide Complexity Behind Simplicity UI/UX onboarding tetap super gampang, complexity disembunyikan di belakang engine.
🏗️ Architecture Overview
Three-Layer Architecture
📋 Import Flow Overview
🗂️ PART 1: Import Order (Dependency-Aware)
| Phase | Order | CSV File | Target Table(s) | Dependencies |
|---|---|---|---|---|
| 1 | 1.1 | 1-setup-branch-warehouse.csv | branches, warehouses, branch_warehouses | None |
| 2 | 2.1 | 2-template-onboarding-category.csv | inventory_category | None |
| 2 | 2.2 | 2-template-onboarding-uom.csv | uom | None |
| 2 | 2.3 | 2-template-onboarding-supplier.csv | partners, supplier_details, partner_bank_accounts | None |
| 2 | 2.4 | 2-template-onboarding-customer.csv | partners, customer_details | None |
| 2 | 2.5 | 2-template-onboarding-chart-of-accounting.csv | chart_of_accounts | None |
| 2 | 2.6 | 2-template-onboarding-users.csv | users, user_mapping | branches, roles |
| 2 | 2.7 | 2-template-onboarding-inventory.csv | inventory, inventory_prices | inventory_category, partners |
| 2 | 2.8 | 2-template-onboarding-product.csv | product, product_prices | inventory_category |
| 2 | 2.9 | 2-template-onboarding-cogs.csv | cogs | product, inventory |
| 2 | 2.10 | 2-template-onboarding-addons.csv | product_addons | product, inventory |
| 3 | 3.1 | 3-template-initialize-stock.csv | inventory_batches, warehouse_stocks, inventory_movements | inventory, warehouses |
| 4 | 4.1 | 4-template-approval-flows.csv | approval_flows, approval_settings, approvers | users |
📁 PART 2: Database Schema (Actual MySQL)
Phase 1: Infrastructure
1.1 branches
1.2 warehouses
1.3 branch_warehouses (Junction Table)
Perubahan dari dokumentasi sebelumnya:
warehousesadalah tabel terpisah, bukan bagian daribranch_warehousesbranch_warehousesadalah junction table yang menghubungkanbranchesdanwarehouses- Field
warehouse_typedanlocationada di tabelwarehouses, bukanbranch_warehouses
Phase 2: Master Data
2.1 inventory_category
2.2 uom (Unit of Measure)
Perubahan: Tabel
uom sudah ada di database dan harus diisi saat onboarding. Sebelumnya dokumentasi menyebut ini hanya “lookup reference”.2.3 partners (Supplier & Customer)
2.4 supplier_details
2.5 customer_details
2.6 partner_bank_accounts
Perubahan: Data supplier dan customer disimpan di 3 tabel:
partners- data umum (nama, alamat, kontak)supplier_details/customer_details- data spesifik per tipepartner_bank_accounts- data rekening bank
2.7 chart_of_accounts
2.8 users
2.9 user_mapping
Perubahan: User disimpan di 2 tabel:
users- data profil useruser_mapping- mapping user ke merchant, branch, dan role
2.10 inventory
2.11 inventory_prices
2.12 product
2.13 product_prices
2.14 cogs
2.15 product_addons
Phase 3: Stock Initialize
3.1 inventory_batches
3.2 warehouse_stocks
3.3 inventory_movements
Perubahan: Stock disimpan di
warehouse_stocks, bukan langsung di inventory_batches. Ini memungkinkan tracking stock per warehouse.🔧 PART 3: Code Changes Required
A. Update CSV Template Columns
1. Branch & Warehouse CSV
Sebelumnya:2. Supplier CSV
Sebelumnya:3. Customer CSV
Sebelumnya:4. Users CSV
Sebelumnya:B. Update ONBOARDING_TABLE_PRESETS
File:features/onboarding/types/onboarding.ts
C. Update Server Validation Endpoint
File:server/api/onboarding/[step]/validate.post.ts
D. Update Import Logic (Backend Go)
File:internal/domain/onboarding/service.go (contoh)
🎨 PART 4: Onboarding Simplicity Layer
A. Technical Implementation
1. Frontend Architecture
2. IndexedDB Persistence
3. Hybrid Validation Flow
✅ PART 5: Implementation Checklist
For AI Agents: Step-by-Step TODO
Phase 1: Fix Schema Mismatch
- 1.1 Update
ONBOARDING_TABLE_PRESETSdifeatures/onboarding/types/onboarding.tssesuai schema DB - 1.2 Update CSV template files dengan kolom yang benar
- 1.3 Update server validation endpoints dengan rules yang sesuai
Phase 2: Implement Multi-Table Import
- 2.1 Branch import →
branches+warehouses+branch_warehouses - 2.2 Supplier import →
partners+supplier_details+partner_bank_accounts - 2.3 Customer import →
partners+customer_details - 2.4 User import →
users+user_mapping - 2.5 Stock import →
inventory_batches+warehouse_stocks+inventory_movements
Phase 3: Validation Rules
- 3.1 Branch validation (code format, address required)
- 3.2 Warehouse validation (code format, type enum)
- 3.3 Supplier validation (code format, email format)
- 3.4 Customer validation (code format, credit limit numeric)
- 3.5 Inventory validation (SKU format, category FK)
- 3.6 Product validation (SKU format)
- 3.7 COGS validation (product FK, component type enum)
- 3.8 Stock validation (warehouse FK, batch FK)
Phase 4: Testing
- 4.1 Test import dengan data valid
- 4.2 Test import dengan data invalid (trigger errors)
- 4.3 Test IndexedDB error persistence
- 4.4 Test rollback saat error di tengah import
Ready for Transaction Checklist
Setelah semua data master di-import, pastikan:- Branches - Minimal 1 cabang aktif
- Warehouses - Minimal 1 gudang per cabang
- Branch-Warehouse Mapping - Setiap branch punya default warehouse
- UOM - Unit of measure tersedia
- Categories - Kategori inventory tersedia
- Suppliers - Minimal 1 supplier untuk PO
- Customers - Minimal 1 customer untuk sales
- Chart of Accounts - Akun lengkap untuk jurnal
- Users - User dengan role dan branch mapping
- Inventory - Data inventory dengan harga
- Products - Data produk dengan harga
- COGS - Komponen HPP untuk produk
- Stock - Stok awal di warehouse
- Approval Flows - Workflow approval aktif
🚀 PART 6: Advanced SAP-Level Import Packs (Future Scope)
Fact: 12 step checklist di atas sudah cukup untuk operasi mid–high tier. Belum mencakup seluruh spektrum ERP global ala SAP S/4HANA. Bagian ini mendefinisikan paket import lanjutan yang opsional dan belum diimplementasikan di UI, tapi menjadi acuan arsitektur jika MStore berkembang ke level ERP Global 10/10.
6.1 Scope: Apa yang sudah dicakup 12 step, apa yang belum
Sudah dicakup 12 step (Core Master Data):- Org & Infrastruktur
- Branches, Warehouses, Branch–Warehouse Mapping
- Material / Product / Partner / User
- Inventory Category, UOM
- Supplier & Customer (Partners + Details + Bank Accounts)
- Inventory & Product (+ harga dasar)
- COGS (komponen biaya)
- Users & User Mapping
- Finance dasar
- Chart of Accounts
- Operasional awal
- Initial Stock (batches + stocks + movements)
- Approval Flows
- Master Data Governance (MDG) multi-domain
- Intercompany automation & consolidation
- Tax & regulatory compliance multi-negara
- Advanced SCM (WMS/TMS/GTS)
- Advanced Pricing Engine (SAP-style condition technique)
- Auditability 10/10 (SOX-grade)
- Financial & localization global
6.2 Advanced Import Pack A – Pricing Conditions
Tujuan: membawa Advanced Pricing Engine mendekati SAP Condition Technique. Contoh konsep CSV (belum diimplementasi, untuk future design):Condition Typedapat merepresentasikan: base price, discount, surcharge, promotion, tax override, dll.- Data ini nantinya di-resolve oleh Pricing Engine saat:
- membuat Sales Order
- membuat Purchase Order
- menjalankan promo/contract pricing
6.3 Advanced Import Pack B – Tax & Localization Config
Tujuan: menyiapkan pondasi Tax Engine multi-negara dan lokalisasi dokumen. Contoh konsep CSV:- Indonesia: PPN 11%, PPh 23, PPh 21
- EU: VAT standard/reduced, OSS rules
- Singapore: GST
- modul Finance (posting journal dengan tax split)
- modul Invoicing (perhitungan pajak di invoice)
- modul Reporting (tax reporting per negara)
6.4 Advanced Import Pack C – Intercompany Config
Tujuan: menyiapkan data dasar untuk Intercompany Automation:- auto SO ↔ PO antar legal entity
- intercompany pricing & tax rules
- AR/AP netting & elimination
- membuat mirror PO dari SO antar entitas
- menentukan harga transfer (transfer price) standar
- mengatur kebijakan tax khusus transaksi intercompany
6.5 Advanced Import Pack D – WMS/TMS Master Data
Tujuan: membuka jalan ke Warehouse Management (WMS) dan Transportation Management (TMS) yang lebih maju. Contoh konsep CSV – WMS Bin / Slot:- modul picking/putaway (penempatan & pengambilan stok)
- perhitungan ETA & biaya pengiriman
6.6 Advanced Import Pack E – Compliance & Audit Config
Beberapa aspek auditability dibangun sebagai engine, bukan import (immutable log, field history). Namun, ada konfigurasi yang masuk akal sebagai import:- Perubahan COGS > 10% butuh approval level manajer
- Void invoice setelah posting butuh alasan wajib dan jejak audit
- Retensi log keuangan minimal 10 tahun
6.7 Prinsip Desain – Kapan sesuatu jadi Import Pack?
Gunakan import pack hanya jika:- [1] Datanya banyak dan berulang (multi-negara, multi-entity, multi-branch)
- [2] Perubahan massal lebih efisien lewat CSV dibanding UI
- [3] Butuh versioning / migrasi antar environment (DEV → UAT → PROD)
- Datanya sangat sedikit dan jarang berubah (1–5 baris global)
- Lebih aman di-maintain via UI admin dengan audit trail
Summary:
- 12 step onboarding saat ini = Core Master Data yang wajib untuk operasi harian.
- Section ini mendefinisikan Advanced SAP-Level Import Packs yang belum diimplementasikan di UI, namun menjadi blueprint saat MStore naik kelas ke ERP global 10/10.