Lokasi, Gudang, dan Manajemen Logistik
1. Filosofi Manajemen Lokasi
Zhuzhe POS dibangun dengan arsitektur "Store-First". Dalam sistem ini, Toko (Store) adalah entitas tertinggi dalam operasional harian. Setiap Toko dapat memiliki satu atau lebih Gudang (Warehouse). Pemisahan ini memungkinkan bisnis besar untuk mengelola stok yang ada di "Lantai Penjualan (Display)" dan "Gudang Belakang (Buffer Stock)" secara terpisah namun tetap dalam satu laporan keuangan toko yang sama.
2. Fitur Utama Lokasi & Gudang
2.1 Multi-Warehouse per Cabang
Sistem mengizinkan setiap cabang untuk mendaftarkan banyak titik penyimpanan.
Penggunaan: Kasir dapat memilih dari gudang mana barang akan diambil saat transaksi (misal: ambil dari Gudang Toko atau kirim dari Gudang Pusat).
Isolasi: Gudang milik Toko A tidak akan pernah muncul dalam pilihan Kasir di Toko B, menjamin keamanan fisik barang.
2.2 Store Switching (Perpindahan Konteks)
Khusus untuk peran Admin dan admin_store, sistem menyediakan fitur Switch Store.
Cara Kerja: Melalui tabel pivot store_user, seorang manager area dapat diberi akses ke 3 dari 10 toko yang ada.
Dampaknya: Saat manager berpindah konteks ke "Toko B", seluruh data di dashboard, katalog produk, dan stok akan otomatis berubah total menjadi data Toko B tanpa perlu logout.
2.3 Identitas Cabang Dinamis
Setiap toko memiliki pengaturan mandiri untuk data identitas yang akan muncul di struk belanja (Alamat, Nomor Telepon, Logo, dan Nama Cabang).
3. Manajemen Stok & Audit Trail
3.1 Konsep Saldo Stok Real-time
Setiap barang di setiap gudang dicatat saldonya dalam tabel warehouse_stocks.
Unit Konsistensi: Stok selalu disimpan dalam Satuan Terkecil (Base Unit). Jika satuan dasarnya adalah "Pcs", maka meskipun barang masuk dalam bentuk "Dus", sistem akan mengonversinya ke angka "Pcs" untuk disimpan ke database.
Integritas Data: Menggunakan Database Transaction (DB::transaction) untuk memastikan bahwa setiap kali stok dipotong, histori mutasi wajib tercipta. Jika histori gagal dicatat, maka pemotongan stok akan dibatalkan otomatis.
3.2 Tipe Mutasi Barang (Movement Types)
Sistem mencatat empat jenis pergerakan barang untuk keperluan audit:
IN (Masuk): Digunakan saat menerima barang dari supplier atau pendaftaran stok awal produk baru.
OUT (Keluar): Digunakan untuk pembuangan barang rusak (spoilage) atau pengiriman barang ke luar sistem non-penjualan.
ADJUSTMENT (Penyesuaian): Digunakan saat terjadi selisih antara stok fisik dan sistem (Stock Opname). Mencatat angka selisih (Delta) secara otomatis.
SALE (Penjualan): Otomatis tercatat setiap kali transaksi sukses di Terminal POS.
3.3 Notifikasi Stok Kritis (Low Stock Alert)
Dashboard Zhuzhe POS memantau setiap produk yang saldonya berada di bawah atau sama dengan alert_level.
Visual Alert: Kotak statistik "Stok Kritis" akan berubah warna menjadi merah dan menampilkan jumlah produk yang harus segera dipesan ulang (restock).
4. Penjelasan Teknis (Technical Detail)
4.1 Skema Relasi Logistik
stores: Tabel induk identitas cabang.
warehouses: Terikat ke store_id. Lokasi fisik penyimpanan.
warehouse_stocks: Menyimpan saldo akhir. Memiliki indeks unik gabungan: unique(['warehouse_id', 'item_id']).
stock_movements: Tabel histori masif yang mencatat setiap detail perubahan.
4.2 Optimasi Query Laporan
Tabel stock_movements menyertakan kolom store_id secara langsung (Denormalisasi terkontrol).
Alasan: Hal ini dilakukan agar Super Admin bisa menarik laporan mutasi seluruh cabang secara instan tanpa perlu melakukan operasi JOIN tabel gudang yang berat, sehingga performa tetap cepat meskipun data mencapai jutaan baris.
5. Penjelasan Non-Teknis (User Experience)
5.1 Antarmuka Logistik yang Sederhana
Pengguna (Manager Toko) cukup memilih Produk, memilih Gudang, dan memasukkan jumlah barang. Sistem akan secara otomatis menentukan apakah itu penambahan atau pengurangan berdasarkan tipe yang dipilih (Masuk/Keluar).
5.2 Keamanan Akses User
Seorang Kasir (role: Cashier) hanya diizinkan melihat stok, namun tidak diizinkan melakukan "Penyesuaian Stok" (Adjustment). Fitur penyesuaian hanya terbuka untuk role Manager ke atas sebagai bentuk kontrol internal perusahaan.
6. Ringkasan Objek Data (Data Dictionary)
Field
Tipe Data
Fungsi
store_id
Foreign Key
Kunci utama isolasi data antar cabang.
warehouse_id
Foreign Key
Identitas lokasi fisik penyimpanan barang.
qty
Decimal (15,2)
Jumlah barang (mendukung angka desimal untuk produk timbangan/Kg).
type
Enum
Klasifikasi mutasi (IN, OUT, ADJUSTMENT, SALE).
reference_id
String
Nomor referensi (Contoh: Nomor Invoice atau Nomor PO Supplier).
Volume 4 akan membahas Detail Fitur Pelanggan (CRM) dan Strategi Harga (Price Groups & Customer Levels).
Last updated