Dua hal yang sering tertukar dan menjadi sumber hampir semua kebingungan: persiapan dikerjakan sekali, alur harian berulang selamanya. Halaman ini memisahkan keduanya, lalu melanjutkan ke setiap peran, setiap halaman, setiap jenis dokumen, dan setiap pengaturan — termasuk bagian yang belum dipakai.
Barang selalu bergerak satu arah melewati simpul yang menghitungnya. Perhatikan paketnya berhenti di setiap simpul — di situlah ia dihitung dan dicatat, bukan sekadar lewat.
Tujuh tahap, dan urutannya tidak bisa ditukar: tiap tahap memakai hasil tahap sebelumnya. Kotak kuning menyebut kegagalan yang benar-benar muncul bila tahap itu dilompati.
Setiap orang yang memakai sistem diberi satu akun dengan satu peran. Akun Admin Gudang WAJIB ditautkan ke satu gudang, dan akun Supplier ke satu supplier — tautan itulah yang menentukan data apa yang ia lihat. Batas waktu tidak-aktif juga disetel per akun di sini.
Kategori diisi paling awal karena setiap produk wajib memilikinya. Cukup pengelompokan yang benar-benar Anda pakai saat melihat laporan — bukan daftar sedetail mungkin.
Gudang lebih dulu, rak menyusul — rak menunjuk ke gudang, bukan sebaliknya. Stok tersimpan PER RAK, jadi rak bukan pelengkap. Ada tiga jenis gudang: pusat (dibuat di sini), toko (dibuat dari Dasbor Toko), dan supplier (terbentuk otomatis satu per supplier).
Ketiganya simpul di luar gudang: dari mana barang datang, ke mana dijual, ke mana disalurkan. Akun login portal supplier dan dasbor toko dibuat terpisah lewat Pengaturan › Akun Supplier / Akun Toko.
Produk merujuk kategori (wajib) serta supplier dan rak (opsional). Untuk ratusan baris pakai Impor CSV: contoh berkasnya bisa diunduh, dan setiap baris diperiksa di pratinjau sebelum benar-benar disimpan.
Stok TIDAK diisi lewat formulir produk — ia hanya berubah lewat transaksi, supaya setiap perubahan punya dokumen asalnya. Stok awal dicatat sebagai barang masuk, lengkap dengan nomor batch, kondisi (baru/bekas), dan tanggal kedaluwarsa bila ada.
Jalankan satu barang melewati seluruh rantai: supplier menerbitkan surat jalan, gudang memindai resinya dan menghitung fisiknya, lalu barangnya didistribusikan ke toko. Pakai jumlah kecil, dan SENGAJA catat selisih hitung — di situlah cara kerja sistem paling terlihat.
Delapan langkah yang berulang. Dua paling sering disalahpahami: langkah 3 (yang masuk stok adalah hasil hitung fisik, bukan angka surat jalan) dan langkah 6 (stok berpindah saat diterima, bukan saat disetujui).
Supplier mencatat barang yang siap kirim di gudangnya sendiri, memilih baris yang akan dikirim, lalu sistem menerbitkan surat jalan beserta kode resi untuk dipindai penerima.
Setiap surat jalan tercetak membawa QR berisi nomornya. Dipindai di gudang atau di toko, daftar barang kiriman itu langsung terbuka — jadi yang dihitung petugas adalah daftar yang sama dengan yang dikirim pengirimnya. Tanpa internet pun tetap bisa: nomornya tercetak di lembar yang sama untuk diketik.
Resi dipindai dengan kamera HP, scanner USB, atau diketik, untuk menemukan dokumen kirimannya. Ini langkah PENCARIAN — ia tidak mengubah stok. Setiap pemindaian dicatat di jejak audit.
Yang masuk ke stok adalah HASIL HITUNG FISIK, bukan angka di surat jalan. Selisihnya dicatat beserta keterangannya, sehingga bisa ditanyakan kembali ke pengirim — bukan diam-diam dibulatkan.
Setiap batch tahu raknya, kondisinya (baru/bekas), dan tanggal kedaluwarsanya. Dari sini muncul peringatan berjenjang dan urutan keluar yang kedaluwarsa lebih dulu.
Petugas menyusun dokumen lalu mengirimkannya untuk persetujuan. Yang menyetujui bukan yang melaksanakan. Penolakan WAJIB menyertakan alasan, supaya pembuatnya tahu apa yang harus diperbaiki.
Stok berpindah ketika pihak penerima mengonfirmasi hitung fisiknya — BUKAN saat dokumennya disetujui. Selama di jalan, barang tidak dihitung ada di kedua tempat sekaligus.
Penjualan dicatat manual atau diimpor dari berkas pesanan marketplace. Barang yang disalurkan ke Penerima Amanah keluar dari rantai lewat dokumen penyaluran, bukan penjualan.
Supplier melihat isi gudangnya, gudang melihat raknya, toko melihat tokonya beserta gudang penampungnya. Pengawas melihat seluruh rantai. Angka yang sama tidak pernah diceritakan dua kali dengan cara berbeda.
lingkup berarti hanya data yang terhubung dengan akun itu. sebagian berarti ada bagian yang dibatasi. Batas ini diperiksa di server, jadi mengubah URL atau isi formulir tidak menembusnya.
| Wewenang | Super Admin | Admin Gudang | Pimpinan | Supplier | Toko |
|---|---|---|---|---|---|
| Melihat dasbor & laporan | ✓ | lingkup | ✓ | lingkup | lingkup |
| Master data (produk, kategori, dll) | ✓ | sebagian | baca | — | — |
| Barang masuk & keluar gudang | ✓ | ✓ | — | — | — |
| Membuat surat jalan / perpindahan | ✓ | ✓ | — | ✓ | rak saja |
| Mengajukan dokumen untuk persetujuan | ✓ | ✓ | — | ✓ | ✓ |
| MENYETUJUI / menolak dokumen | ✓ | — | ✓ | — | — |
| Konfirmasi penerimaan barang | ✓ | ✓ | — | — | ✓ |
| Pindah antar rak | ✓ | ✓ | — | ✓ | ✓ |
| Kelola akun & peran | ✓ | — | — | — | — |
| Ubah logo & identitas tampilan | ✓ | — | — | — | — |
| Impor CSV master data | ✓ | ✓ | — | — | — |
| Lihat & lepas perangkatnya sendiri | ✓ | ✓ | ✓ | ✓ | ✓ |
Seluruh halaman yang bisa dibuka, dikelompokkan menurut kegunaannya. Berkas berawalan garis bawah adalah potongan tampilan bersama, dan peramban ditolak mengaksesnya langsung.
| Berkas | Nama | Isinya |
|---|---|---|
dashboard.php |
Ringkasan | KPI, sebaran stok per lokasi, antrean tugas, langkah pengaturan yang belum selesai |
pengawasan.php |
Mitra & Lokasi | Daftar supplier, gudang, toko, penerima beserta ringkasan stoknya |
dasbor_supplier.php |
Dasbor Supplier | Barang masuk, siap kirim, pindah antar rak, riwayat surat jalan |
dasbor_toko.php |
Dasbor Toko | Ringkasan, penjualan, stok toko, gudang toko, distribusi ke tiap toko |
| Berkas | Nama | Isinya |
|---|---|---|
masuk.php |
Barang Masuk | Pencatatan barang masuk gaya kasir, dengan batch & kedaluwarsa |
keluar.php |
Barang Keluar | Pengeluaran barang ke penerima, hanya barang yang masih berstok |
perpindahan.php |
Surat Jalan | Daftar seluruh dokumen perpindahan, bisa disaring per jenis & status |
perpindahan_form.php |
Buat Perpindahan | Formulir dokumen: jenis, asal, tujuan, rincian barang |
surat_jalan.php |
Cetak Surat Jalan | Versi cetak dokumen beserta kode resinya |
penerimaan.php |
Penerimaan Barang | Hitung fisik saat bongkar; selisih dicatat, bukan dibulatkan |
kiriman_supplier.php |
Kiriman Supplier | Kiriman yang sedang di jalan dari supplier |
persetujuan.php |
Persetujuan | Ajukan, setujui, atau tolak dokumen (penolakan wajib beralasan) |
monitoring.php |
Batch & Expired | Peringatan stok dan kedaluwarsa berjenjang, sesuai lingkup peran |
scan_resi.php |
Scan Resi Paket | Cari dokumen kiriman dari nomor resi: kamera, scanner USB, atau ketik |
cek_surat.php |
Cek Surat Jalan | Pindai QR di lembar surat jalan; daftar barang kirimannya langsung tampil |
impor_pesanan.php |
Impor Pesanan | Impor pesanan marketplace ke penjualan toko |
| Berkas | Nama | Isinya |
|---|---|---|
barang.php |
Produk | Daftar produk beserta stok, ambang minimum, dan kedaluwarsa terdekat |
barang_form.php |
Tambah/Edit Produk | Halaman penuh untuk menyunting; tambah produk kini lewat popup di daftar. Termasuk kolom barcode yang bisa dipindai kamera HP atau scanner USB |
barang_hapus.php |
Hapus Produk | Penghapusan lunak, menahan bila masih ada stok atau riwayat |
cari_barang.php |
Cari Produk | Pencarian cepat untuk formulir transaksi |
kategori.php |
Kategori | Pengelompokan produk; wajib ada sebelum produk bisa dibuat |
supplier.php |
Supplier | Data supplier, dan pembuatan akun portalnya |
gudang.php |
Gudang | Gudang pusat; jenis toko & supplier tidak dibuat dari sini |
rak.php |
Rak | Lokasi penyimpanan di dalam gudang — tempat stok sebenarnya berada |
toko.php |
Toko / Outlet | Data toko & marketplace-nya, dan pembuatan akun dasbornya |
penerima.php |
Penerima Amanah | Ujung penyaluran: barang keluar dari rantai, bukan dijual |
| Berkas | Nama | Isinya |
|---|---|---|
laporan.php |
Laporan Stok | Stok per kategori & per lokasi, nilai persediaan, status kedaluwarsa |
laporan_export.php |
Export CSV | Unduhan laporan stok; lingkup peran ikut tertulis di dalam berkasnya |
| Berkas | Nama | Isinya |
|---|---|---|
pengaturan.php |
Pengaturan | Pintu masuk seluruh pengaturan, dikelompokkan per kebutuhan |
pengguna.php |
Pengguna | Akun, peran, tautan gudang/supplier, dan batas waktu tidak-aktif |
pengaturan_merek.php |
Logo & Identitas | Logo utama, favicon, gambar share, judul & teks share |
impor_data.php |
Impor CSV | Enam entitas master data, dengan pratinjau sebelum simpan |
perangkat.php |
Perangkat | Sesi aktif dan pelepasannya; batas 3 perangkat per akun |
profil.php |
Profil Saya | Data diri, foto, dan ringkasan aktivitas akun |
ganti_password.php |
Ganti Password | Perubahan password akun sendiri |
login.php / logout.php |
Masuk & Keluar | Keluar membebaskan slot perangkat seketika |
| Berkas | Nama | Isinya |
|---|---|---|
index.php |
Beranda | Ringkasan sistem, rantai, fitur, peran, dan keamanan |
alur.php |
Alur Kerja | Halaman ini — panduan lengkap dari nol sampai berjalan |
Setiap jenis punya rute yang sah: kombinasi asal dan tujuan yang diizinkan. Kombinasi di luar daftar ini ditolak sebelum dokumennya tersimpan — itulah yang mencegah barang "berpindah" ke tempat yang tidak masuk akal.
| Jenis | Nama | Asal boleh | Tujuan boleh |
|---|---|---|---|
penerimaan |
Penerimaan | supplier, eksternal | rak, gudang |
transfer_gudang |
Transfer Gudang | gudang, rak | rak, gudang |
mutasi_rak |
Mutasi Rak | rak | rak |
kirim_toko |
Kirim ke Toko | gudang, rak | toko |
retur_toko |
Retur dari Toko | toko | rak, gudang |
antar_toko |
Antar Toko | toko | toko |
penyaluran |
Penyaluran | gudang, rak, toko, supplier | penerima |
retur |
Retur Supplier | gudang, rak | supplier |
Dokumen bergerak maju melewati status. Yang menentukan kapan stok benar-benar berpindah adalah apakah jenis dokumen itu punya pihak penerima yang memverifikasi fisiknya.
| Status | Artinya |
|---|---|
draft | Masih disusun petugas; belum dilihat siapa pun. |
menunggu_persetujuan | Sudah diajukan; menunggu Pimpinan atau Super Admin. |
ditolak | Dikembalikan beserta alasan wajib, supaya bisa diperbaiki. |
disetujui | Disetujui. Untuk jenis tanpa pihak penerima, stok berpindah di titik ini. |
dikirim | Surat jalan terbit, barang di jalan. Stok belum berpindah. |
diterima | Penerima sudah menghitung fisiknya; stok berpindah sesuai hasil hitung. |
selesai | Tuntas dan terkunci sebagai catatan. |
Stok tidak disimpan sebagai satu angka per produk. Ia disimpan per batch: satu kelompok barang dengan nomor, lokasi, kondisi, dan tanggal kedaluwarsa yang sama.
| Status | Ambang | Artinya |
|---|---|---|
| Aman | lebih dari 90 hari | Belum perlu tindakan. |
| Waspada | 90 hari atau kurang | Mulai diprioritaskan keluar lebih dulu. |
| Segera expired | 30 hari atau kurang | Harus dikeluarkan, ditarik, atau disalurkan sekarang. |
| Expired | lewat tanggal | Tidak boleh disalurkan; perlu keputusan pemusnahan. |
| Tanpa expired | tidak berlaku | Barang yang memang tak punya masa kedaluwarsa. |
Mengetik ulang 13 angka barcode sambil memegang barangnya adalah pekerjaan yang paling mudah salah di seluruh sistem. Karena itu setiap kolom yang biasanya diisi dari fisik barang bisa diisi dengan memindai.
| Cara | Butuh apa | Catatan |
|---|---|---|
| Kamera HP / laptop | Peramban modern, dan alamat aman (HTTPS atau localhost) | Memakai pembaca barcode bawaan peramban; tanpa aplikasi tambahan. |
| Scanner USB | Scanner barcode biasa | Terdeteksi otomatis — ia bekerja seperti keyboard yang mengetik sangat cepat. |
| Ketik manual | — | Selalu tersedia sebagai cadangan, tidak pernah dimatikan. |
Untuk mengisi ratusan baris master data. Setiap berkas diperiksa dan ditampilkan sebagai pratinjau lebih dulu — baris bermasalah ditunjukkan sebelum apa pun tersimpan, bukan sesudahnya.
| Entitas | Kolom wajib | Kolom pilihan |
|---|---|---|
| Kategori | nama | keterangan |
| Gudang | kode, nama | jenis, alamat, penanggung jawab, telepon, aktif |
| Rak | kode, nama, gudang | kapasitas, keterangan |
| Supplier | kode, nama | kontak, telepon, email, alamat, keterangan |
| Toko | kode, nama | marketplace, URL, penanggung jawab, telepon |
| Produk | kode, nama, kategori | barcode, merek, ukuran, satuan, harga, stok minimum, supplier, rak |
pj untuk penanggung
jawab, hp untuk telepon. Contoh berkas untuk setiap entitas
bisa diunduh dari halaman impor.
Jalan masuknya dari menu pengguna di kanan atas, bukan dari sidebar. Sebagian hanya untuk Super Admin.
| Pengaturan | Siapa | Isinya |
|---|---|---|
| Pengguna | Super Admin | Tambah/ubah akun, peran, tautan ke gudang atau supplier, dan batas waktu tidak-aktif per akun. |
| Akun Supplier | Super Admin | Membuat login portal untuk supplier yang sudah terdaftar. |
| Akun Toko | Super Admin | Membuat login dasbor untuk toko; satu akun bisa memegang beberapa toko. |
| Logo & Identitas | Super Admin | Logo utama, favicon, gambar saat tautan dibagikan, serta judul & teks share. Menerima PNG, JPG, WebP sampai 2 MB. |
| Impor CSV | Super Admin, Admin Gudang | Enam entitas master data, dengan pratinjau sebelum simpan. |
| Perangkat | Semua peran | Daftar sesi aktif dan pelepasannya. Batas 3 perangkat per akun. |
| Ganti Password | Semua peran | Mengubah password akun sendiri. |
| Profil Saya | Semua peran | Data diri, foto, dan ringkasan aktivitas akun. |
| Tema terang / gelap | Semua peran | Tombol di kanan atas. Gelap adalah bawaan; pilihannya diingat per peramban. |
| Sidebar lebar / rel ikon | Semua peran | Diingat per peramban, dan dibaca di server supaya halaman langsung tergambar pada lebar yang benar. |
Disetel per akun. Sesi berakhir bila tidak ada aktivitas selama waktu ini. Petugas lapangan yang memakai HP sepanjang hari biasanya butuh batas panjang; akun dengan wewenang besar sebaiknya pendek.
| Batas | Dalam menit |
|---|---|
| 30 menit | 30 |
| 2 jam | 120 |
| 8 jam — satu giliran kerja | 480 |
| 1 hari | 1440 |
| 1 minggu | 10080 |
| 2 minggu | 20160 |
| 1 bulan | 43200 |
Bukan daftar fitur, melainkan daftar cara data bisa menjadi tidak bisa dipercaya — beserta apa yang menutupnya.
| Yang dijaga | Caranya |
|---|---|
| Batas 3 perangkat per akun | Login keempat ditolak selama tiga sesi sebelumnya masih hidup. Keluar lewat tombol Keluar membebaskan slotnya seketika — itulah cara berpindah perangkat tanpa meminta bantuan Super Admin. |
| Sesi berakhir sendiri | Sesuai batas tidak-aktif akun itu. Perubahan batasnya berlaku hampir seketika, tidak menunggu login ulang. |
| Pesan sesi berakhir menyebut sebabnya | Dibedakan tiga: Anda sendiri dari perangkat lain, tindakan Super Admin, atau perubahan langsung di basis data. Ketiganya butuh penanganan berbeda, jadi pesannya tidak menebak. |
| Penugasan dibaca dari basis data | Bukan dari sesi. Kalau penugasan gudang dicabut, aksesnya tertutup saat itu juga — tidak menunggu orangnya logout. |
| Setiap formulir bertanda | Token per sesi. Formulir tanpa token yang sah ditolak, sehingga situs lain tidak bisa mengirim perintah atas nama Anda. |
| Lingkup diperiksa di server | Menyaring daftar hanya merapikan tampilan. Setiap penyimpanan memeriksa ulang apakah gudang, rak, atau toko yang disebut memang milik akun itu. |
| Unggahan gambar diperiksa isinya | Jenis berkas ditentukan dari isi berkasnya, bukan dari ekstensi atau keterangan pengunggah. Nama berkasnya diganti acak, dan folder unggahan menolak menjalankan berkas apa pun. SVG tidak diterima karena ia bisa memuat skrip. |
| Password disimpan sebagai hash | Tidak pernah dalam bentuk yang bisa dibaca, termasuk oleh Super Admin. |
| Jejak aktivitas | Pembuatan, perubahan, persetujuan, penolakan, penerimaan, pemindaian resi, ekspor, dan keluar — semuanya tercatat beserta pelaku dan waktunya. |
| Penghapusan bersifat lunak | Data yang dihapus ditandai, bukan dibuang, sehingga dokumen lama tidak kehilangan rujukannya. |
Bagian ini untuk yang mengurus sistemnya, bukan yang memakainya sehari-hari. Yang paling perlu diketahui: stok hidup di dua tempat, dan itulah sebabnya laporan menggabungkan keduanya.
| Kelompok | Isinya |
|---|---|
| Stok gudang & toko | batch_barang — per batch, menunjuk ke rak
atau ke toko. stok menyimpan total per produk
untuk pembacaan cepat. |
| Stok supplier | stok_supplier — terpisah, karena alur supplier
(catat masuk → siap kirim → kirim) berbeda. Sejak rak supplier
ada, barisnya juga menunjuk ke rak. |
| Dokumen perpindahan | perpindahan + perpindahan_detail —
satu dokumen, banyak baris barang. |
| Master data | barang, kategori, gudang,
lokasi_rak, supplier, toko,
penerima |
| Transaksi gudang | transaksi_masuk, transaksi_keluar,
beserta tabel rinciannya masing-masing. |
| Sisi toko | penjualan, penjualan_detail,
user_toko, penyesuaian_stok,
marketplace_sku |
| Sisi supplier | pengiriman_supplier beserta rinciannya,
dan resi_scan_log |
| Akun & keamanan | users, roles,
sesi_perangkat, activity_log |
| Pengaturan & penomoran | pengaturan (logo, favicon, share),
dokumen_counter (nomor dokumen & surat jalan) |
Disebut apa adanya. Skema yang ada tanpa halamannya adalah jebakan bagi siapa pun yang melanjutkan sistem ini nanti: ia akan menyangka fiturnya ada, lalu mencari halaman yang tidak pernah dibuat.
| Tabel | Keadaannya |
|---|---|
stock_opname, stock_opname_detail | Perhitungan ulang stok fisik menyeluruh — skemanya siap, halamannya belum ada. |
mutasi_barang | Dimaksudkan sebagai buku besar pergerakan stok; tidak ditulisi maupun dibaca. |
notifikasi | Hanya disebut dalam komentar. Lencana di topbar dihitung langsung dari dokumen, bukan dari tabel ini. |
retur | Retur ke supplier berjalan sebagai dokumen perpindahan berjenis retur, jadi tabel ini tak terpakai. |
marketplace_akun | Tidak ada penyambungan API marketplace; pesanan masuk lewat Impor Pesanan. |
Bukan pembatasan demi kerumitan — masing-masing menutup satu cara data menjadi tidak bisa dipercaya. Orang yang tahu alasan sebuah aturan jauh lebih jarang mencari jalan memutarnya.
Petugas mengajukan, Pimpinan atau Super Admin menyetujui. Satu orang tidak bisa mengeluarkan barang atas keputusannya sendiri.
Tidak ada kolom "ubah stok". Setiap angka punya dokumen asalnya, jadi selisih selalu bisa dilacak ke satu kejadian.
Petugas gudang melihat raknya, toko melihat tokonya, supplier melihat gudangnya. Pembatasannya diperiksa ULANG di server, bukan hanya disembunyikan dari menu.
Akun yang beredar tanpa batas tidak lagi menunjukkan siapa yang bekerja. Daftar perangkat bisa dilihat dan dilepas sendiri di Pengaturan › Perangkat.
Pembuatan, perubahan, persetujuan, penolakan, penerimaan, dan pemindaian resi dicatat beserta pelakunya dan waktunya.
Saat penerimaan, yang masuk stok adalah hasil hitung fisik. Selisihnya disimpan sebagai catatan, bukan dihapus dengan pembulatan.
Tahap 1 sampai 4 dikerjakan Super Admin dan biasanya selesai dalam satu kali duduk. Sisanya mengikuti sendiri.
Masuk ke Sistem Lihat daftar fitur