title: “Multi-Location” description: “Stok terpisah per lokasi, transfer antar gudang dengan approval, reporting per lokasi, dan integrasi POS/Manufacturing.”
Multi-Location

Arsitektur Multi-Location
Stok Per Lokasi — Contoh
Setiap produk memiliki 3 baris stok (satu per lokasi) plus total: Contoh: Ayam Suwir Petir (150g)
Contoh: Sambal Matah (100ml) — Low Stock
Transfer Antar Lokasi
Flow Transfer
Field Transfer
Aturan Transfer
Transfer History
Reporting Per Lokasi
Stock Report Per Lokasi
Sales Report Per Lokasi
Movement Summary Per Lokasi
Distribusi Stok — Best Practices
Jadwal Transfer Harian
POS Location Selection
Saat transaksi POS, kasir memilih lokasi yang akan digunakan:Manufacturing Location
Produksi selalu terpusat di Gudang Utama:Setup Lokasi Baru
Syarat Hapus Lokasi
Lokasi hanya bisa dihapus jika semua kondisi berikut terpenuhi:Tips
- Distribusi stok yang seimbang — jangan menumpuk semua stok di satu lokasi. Gunakan Gudang Reserve sebagai buffer.
- Transfer terjadwal — buat jadwal transfer harian (pagi ke toko, siang dari produksi) supaya stok selalu tersedia.
- Monitor kapasitas — jangan biarkan kapasitas lokasi melebihi 80% supaya ada ruang untuk operasional.
Entity Relationship Diagram (ERD)
Diagram berikut menggambarkan relasi antar entitas yang terlibat dalam operasi multi-location inventory. Data ini diambil langsung dari schemabase44/entities/.
Penjelasan Relasi (Bahasa Indonesia)
Relasi antar entitas di atas bekerja sebagai berikut:-
WarehouseLocation → StockTransfer: Setiap transfer menghubungkan dua lokasi —
from_location_id(asal) danto_location_id(tujuan). Satu lokasi bisa terlibat di banyak transfer, baik sebagai pengirim maupun penerima. -
StockTransfer → StockMovement: Saat transfer selesai (status
completed), sistem membuat 2 recordStockMovement— satu di lokasi asal (movement_type = "transfer", quantity negatif) dan satu di lokasi tujuan (movement_type = "transfer", quantity positif). Kedua record ini terhubung keStockTransferviareference_id. -
StockMovement → CompanyPOSInventory: Setiap movement tercatat di ledger inventori (
inventory_id) denganstock_beforedanstock_afteruntuk audit trail penuh. - WarehouseLocation → StockAlert: Alert stok rendah, habis, atau berlebih terikat pada lokasi tertentu. Ini memungkinkan monitoring per lokasi secara independen.
-
StockAlert → CompanyPOSInventory: Alert mereferensikan record inventori yang memicu kondisi anomali (
inventory_id).
Entity Schema: StockTransfer (Transfer Antar Lokasi)
Tabel berikut mendetailkan seluruh fieldStockTransfer. Schema ini diambil dari base44/entities/StockTransfer.jsonc.
Field Identitas & Referensi
Field Kategori, Varian & Lot (Denormalized)
Field Kuantitas & Nilai
Field Status & Mode
Field Tanggal & Aktor
Field Keterangan & Metadata
Contoh Record StockTransfer
Entity Schema: StockMovement (Field Transfer)
Tabel berikut mendetailkan field-fieldStockMovement yang relevan khusus untuk pergerakan bertipe transfer antar lokasi. Schema lengkap ada di halaman Stock Management.
Field Transfer-Specific
Dua Record per Transfer
SetiapStockTransfer yang selesai menghasilkan 2 record StockMovement:
Catatan: Kedua record terhubung keStockTransferyang sama viareference_iddan dilindungi olehidempotency_keyuntuk mencegah duplikasi.
Entity Schema: CompanyPOSInventory (Ledger Stok)
CompanyPOSInventory berfungsi sebagai ledger (buku besar) inventori yang mencatat setiap perubahan stok per produk.
State Machine: Siklus Hidup StockTransfer
Diagram state berikut menggambarkan seluruh lifecycle transfer antar lokasi. Status diambil dari enum diStockTransfer.status.
Detail Tiap State
Guard Conditions (Kondisi Penjaga)
Sequence Diagram: Transfer Antar Lokasi
Alur Utama: Inter-Location Transfer (in_transit mode)
Penjelasan Detail per Fase (Bahasa Indonesia)
Fase 1 — Pembuatan Transfer: User (Inventory Staff) membuat dokumen transfer baru dengan memilih produk, lokasi asal, lokasi tujuan, dan jumlah yang akan ditransfer. Sistem menghasilkan nomor transfer unik (TRF-YYYYMMDD-XXXX), memvalidasi bahwa lokasi asal dan tujuan berbeda, serta memastikan kuantitas tidak melebihi stok tersedia di lokasi asal. Sistem juga menghitung total_value = quantity_sent × unit_cost untuk valuasi transfer.
Fase 2 — Pengiriman (Ship):
Setelah user mengkonfirmasi pengiriman, sistem mengubah status menjadi in_transit dan langsung mendeduct stok di lokasi asal. Record StockMovement bertipe transfer dibuat untuk lokasi asal dengan quantity negatif. Field shipped_at dan shipped_by dicatat untuk audit trail. Lokasi tujuan menerima notifikasi bahwa ada transfer incoming.
Fase 3 — Penerimaan (Receive):
Penerima di lokasi tujuan mengkonfirmasi penerimaan dan memasukkan quantity_received (kuantitas riil yang diterima). Jika ada selisih antara quantity_sent dan quantity_received, sistem menghitung discrepancy_quantity dan meminta discrepancy_reason. Stok di lokasi tujuan di-add sesuai quantity_received. Record StockMovement bertipe transfer dibuat untuk lokasi tujuan dengan quantity positif. Status berubah menjadi completed.
Sequence Diagram: Stock Reconciliation (Rekonsiliasi Stok)
Alur Rekonsiliasi Stok Antar Lokasi
Penjelasan Rekonsiliasi
Rekonsiliasi stok diperlukan ketika sistem mendeteksi anomali — misalnya stok negatif, pergerakan yang terlalu cepat, atau movement duplikat.StockAlert dengan alert_type = "reconciliation_needed" dibuat oleh anomaly detector. Inventory Manager melakukan investigasi dengan melihat movement history per lokasi, kemudian melakukan koreksi yang tepat:
