Skip to main content

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

Multi-Location

Multi-Location Sistem inventori Quinn of Spicy mendukung multi-location — setiap produk memiliki stok yang terpisah di setiap lokasi gudang. Dengan 3 lokasi aktif (Gudang Utama, Toko Offline, Gudang Reserve), kamu bisa mengontrol distribusi stok, melakukan transfer antar lokasi, dan melihat laporan performa masing-masing gudang secara independen.

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 schema base44/entities/.

Penjelasan Relasi (Bahasa Indonesia)

Relasi antar entitas di atas bekerja sebagai berikut:
  1. WarehouseLocation → StockTransfer: Setiap transfer menghubungkan dua lokasi — from_location_id (asal) dan to_location_id (tujuan). Satu lokasi bisa terlibat di banyak transfer, baik sebagai pengirim maupun penerima.
  2. StockTransfer → StockMovement: Saat transfer selesai (status completed), sistem membuat 2 record StockMovement — satu di lokasi asal (movement_type = "transfer", quantity negatif) dan satu di lokasi tujuan (movement_type = "transfer", quantity positif). Kedua record ini terhubung ke StockTransfer via reference_id.
  3. StockMovement → CompanyPOSInventory: Setiap movement tercatat di ledger inventori (inventory_id) dengan stock_before dan stock_after untuk audit trail penuh.
  4. WarehouseLocation → StockAlert: Alert stok rendah, habis, atau berlebih terikat pada lokasi tertentu. Ini memungkinkan monitoring per lokasi secara independen.
  5. StockAlert → CompanyPOSInventory: Alert mereferensikan record inventori yang memicu kondisi anomali (inventory_id).

Entity Schema: StockTransfer (Transfer Antar Lokasi)

Tabel berikut mendetailkan seluruh field StockTransfer. 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-field StockMovement yang relevan khusus untuk pergerakan bertipe transfer antar lokasi. Schema lengkap ada di halaman Stock Management.

Field Transfer-Specific

Dua Record per Transfer

Setiap StockTransfer yang selesai menghasilkan 2 record StockMovement:
Catatan: Kedua record terhubung ke StockTransfer yang sama via reference_id dan dilindungi oleh idempotency_key untuk 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 di StockTransfer.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:

Enum Reference Tables

Tabel referensi untuk semua enumerasi yang digunakan di entitas multi-location inventory.

location_type (WarehouseLocation)

transfer_mode (StockTransfer)

transfer_status (StockTransfer)

cost_status (StockTransfer)

movement_type (StockMovement — konteks transfer)

alert_type (StockAlert — konteks multi-location)


Hak Akses (RBAC) — Multi-Location

Aturan Akses per Operasi