Skip to main content

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)


πŸ“ PART 2: Database Schema (Actual MySQL)

Penting: Schema di bawah ini berdasarkan database MySQL mstore-monolith yang sebenarnya. Pastikan CSV template dan kode import sesuai dengan struktur ini.

Phase 1: Infrastructure

1.1 branches

1.2 warehouses

1.3 branch_warehouses (Junction Table)

Perubahan dari dokumentasi sebelumnya:
  • warehouses adalah tabel terpisah, bukan bagian dari branch_warehouses
  • branch_warehouses adalah junction table yang menghubungkan branches dan warehouses
  • Field warehouse_type dan location ada di tabel warehouses, bukan branch_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:
  1. partners - data umum (nama, alamat, kontak)
  2. supplier_details / customer_details - data spesifik per tipe
  3. partner_bank_accounts - data rekening bank

2.7 chart_of_accounts

2.8 users

2.9 user_mapping

Perubahan: User disimpan di 2 tabel:
  1. users - data profil user
  2. user_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:
Seharusnya (sesuai DB):

2. Supplier CSV

Sebelumnya:
Seharusnya (sesuai DB - 3 tabel):

3. Customer CSV

Sebelumnya:
Seharusnya (sesuai DB - 2 tabel):

4. Users CSV

Sebelumnya:
Seharusnya (sesuai DB - 2 tabel):

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_PRESETS di features/onboarding/types/onboarding.ts sesuai 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
Belum dicakup (level SAP Global):
  • 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
Bagian berikut mendeskripsikan kandidat Data Import Pack untuk area di atas.

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):
Catatan:
  • Condition Type dapat 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:
Contoh penggunaan:
  • Indonesia: PPN 11%, PPh 23, PPh 21
  • EU: VAT standard/reduced, OSS rules
  • Singapore: GST
Konfigurasi ini akan digunakan oleh:
  • 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
Contoh konsep CSV:
Dengan import ini, engine intercompany bisa:
  • 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:
Contoh konsep CSV – Route / Carrier (TMS):
Master data ini akan dipakai oleh:
  • 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:
Contoh:
  • 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)
Jangan jadikan import pack jika:
  • 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.