Bayangkan Anda baru memulai sebuah toko kelontong modern. Targetnya sederhana: data rapi, stok akurat, kasir lincah, dan laporan yang bisa dipercaya untuk mengambil keputusan cepat. Kuncinya ada pada tiga hal: disiplin master data, proses stok yang jelas, dan pengendalian POS (backend kuat, frontend ringkas). Artikel ini menyajikan kerangka belajar dari nol yang sistematis dan praktis.
1. Gambaran Besar Sistem Retail/Grocery
Siklus inti: Master Data → Purchasing → Receiving → Stok → Sales → Laporan & Keputusan. POS adalah “mesin kasir” dan pusat data transaksi. Backend mengatur kebijakan; frontend mengeksekusi penjualan.
2. Product / Master Data
2.1. Struktur Data Produk (minimal)
- SKU (kode internal), Barcode (EAN/UPC/internal), Nama Produk, Kategori (Dept → Cat → Subcat), Brand.
- UoM & konversi (CTN → PACK → PCS), status pajak, cost (COGS), harga jual, tipe (biasa, timbang, jasa, bundle).
- Opsional grocery: batch/lot, expiry, atribut cold-chain, halal.
2.2. Kebijakan Pemberian Kode (SKU Policy)
- Unik, konsisten, tidak memuat informasi mudah berubah (mis. harga).
- Contoh format ringkas:
KKK-SSS-NNNN(Kategori–Brand/Sub–Nomor urut) atau kode numerik berurutan. - Kode tidak berubah; perubahan besar kemasan/brand → SKU baru.
2.3. Penamaan Produk (Naming Rule)
- Pola:
Brand + Nama + Varian + Ukuran + Satuan + (Kemasan). Contoh: Ultra Milk Cokelat 1L UHT. - Nama mudah dicari kasir; hindari singkatan internal.
2.4. Tipe Khusus Grocery
- By weight (timbangan): gunakan PLU & barcode timbangan yang berisi kode + berat/harga.
- Bundle: SKU paket dengan komponen (BOM sederhana) agar stok komponen terkurangi saat paket terjual.
- Non-stock item (jasa): tidak mengurangi stok namun tercatat sebagai omset.
3. Harga & Margin
3.1. Jenis Harga
- Harga pokok (COGS): harga beli + biaya terkait (landed cost) → memengaruhi nilai persediaan (Average/FIFO).
- Harga jual normal: harga harian; harga promo: periode tertentu tanpa menimpa harga normal.
- Multi price level (opsional): retail/grosir/member/cabang.
3.2. Menentukan Harga
- Target margin per kategori (sayur 20–30%, snack 15–25%, kosmetik 30–40% — contoh kebijakan, sesuaikan).
- Backend mendukung perhitungan harga dari cost + margin% atau sebaliknya.
3.3. Kebijakan Perubahan Harga
- Hanya peran berwenang di backend; gunakan effective date.
- Sinkron harga ke terminal sebelum toko buka; pastikan cetak & ganti label rak tepat waktu.
4. Stok & Gudang
4.1. Konsep Dasar Kartu Stok
Saldo akhir = Saldo awal + Mutasi masuk (PO/transfer/penyesuaian) − Mutasi keluar (penjualan/transfer/penyesuaian/waste).
4.2. Sumber Mutasi
- Receiving (GR dari PO), Sales (POS), Return, Transfer antar lokasi, Stock adjustment, Waste/Expired, Repacking.
4.3. UoM & Konversi
Beli CTN, jual PCS. Sistem wajib punya konversi agar stok/COGS akurat.
4.4. Stock Opname
- Full count (1–2x/tahun) + cycle count mingguan per kategori.
- Hasil hitung → selisih → jurnal koreksi → analisa shrink.
5. Purchasing & Supplier
5.1. Master Supplier
- Identitas & NPWP (bila relevan), termin pembayaran, lead time, MOQ, diskon/rabat.
5.2. Proses Standar
- Perencanaan: min–max/ROP → PO.
- PO: siapa, apa, berapa, harga, tanggal kirim; disetujui sesuai otorisasi.
- GR: cek qty/harga/kualitas; update stok & COGS; catat batch/expiry.
- Invoice & bayar: 3-way match (PO–GR–Invoice).
- RTV (retur ke vendor) untuk rusak/salah kirim.
6. Sales & POS (Frontend Kasir)
6.1. Alur Kasir
- Login → buka shift (kas awal) → scan/cari barang → diskon (jika berhak) → pembayaran (cash, kartu, e-wallet, QR, split) → struk/e-receipt → tutup shift (X/Z report).
6.2. Hak Akses
- Kasir tidak boleh ubah harga; override diskon perlu supervisor. Void/refund wajib jejak audit.
6.3. Perangkat
- Scanner, printer struk, cash drawer, timbangan (produk timbang), customer display (opsional).
7. Promo & Loyalty
7.1. Tipe Promo
- Price-off, diskon %, multi-buy (beli 3 harga X), bundle, B1G1, happy hour, mix & match.
7.2. Pengaturan Promo
- Condition (item/kategori/brand/total/jam/lokasi), benefit (potongan/gratis/voucher/poin), prioritas & konflik promo, masa berlaku.
7.3. Loyalty
- Member, poin, kupon. Butuh master pelanggan, aturan accrual & redeem, masa berlaku.
8. Laporan & KPI Utama
- Harian: omset, transaksi, basket size, penjualan per kasir, ringkasan pembayaran.
- Stok: SOH per item, aging/expiry, fast vs slow moving, fill rate pembelian.
- Profitabilitas: margin kotor per produk/kategori, dampak promo.
- Shrinkage: selisih sistem vs fisik per periode.
9. Peran POS Backend vs Frontend
| Area | Backend (Back Office) | Frontend (Kasir) | Catatan |
|---|---|---|---|
| Master Data | Produk, supplier, pajak, user & role | – | Frontend hanya konsumsi data |
| Harga & Promo | Atur pricebook & promo, jadwal efektif | Terapkan otomatis | Audit perubahan harga |
| Stok | Receiving, transfer, opname, koreksi | – | Transaksi jual mengurangi stok |
| Transaksi | Rekonsiliasi hariannya | Jual, refund, void (dengan izin) | X/Z report per shift |
| Laporan | Semua laporan | Ringkas (opsional) | – |
10. Roadmap Belajar Praktis untuk Anda
- Kuasi Master Data via Excel: buat template produk/supplier/pelanggan (lihat Lampiran).
- Gambar Alur Stok: Supplier → PO → GR → Stok → POS → Pelanggan (tandai titik catatan & peran).
- Simulasi Toko Mini 50 SKU: 1 minggu pembelian & penjualan → kartu stok & margin.
- Mapping ke POS: impor CSV, buat 1–2 PO & GR, transaksi di frontend, cek laporan.
- Susun Kebijakan & SOP: SKU, penamaan, hak akses, perubahan harga, opname, promo.
Saran ritme: 3 sesi, masing-masing fokus pada (1) Master Data & Harga, (2) Stok & Purchasing, (3) POS Kasir & Laporan. Setiap sesi menghasilkan artefak nyata (CSV/SOP/diagram).
Lampiran: Template CSV & SQL Contoh
A. Template CSV — Produk
Simpan sebagai .csv (UTF-8). Kolom dapat disesuaikan dengan POS yang dipakai.
sku,barcode,name,brand,department,category,subcategory,uom_purchase,uom_sale,conv_to_base,base_uom,tax_code,cost,sell_price,type,active
GRY-SNCK-INDO-CHIT-68G-0012,8999999999999,Indomilk Chips BBQ 68g,Indomilk,Groceries,Snacks,Chips,CTN,PCS,72,PCS,PPN,3500,4900,stockable,TRUE
GRY-DRNK-UHT-INDO-250-0007,8998888888888,Indomilk UHT Cokelat 250ml,Indomilk,Groceries,Beverages,Milk,CTN,PCS,24,PCS,PPN,3800,5500,stockable,TRUE
SVS-BAG-PLS-001,,Kantong Belanja Plastik L,NoBrand,Services,Packaging,-,PCS,PCS,1,PCS,NON,0,500,service,TRUE
B. Template CSV — Supplier
name,npwp,contact,email,phone,term,lead_time_days,moq,discount_note,active
PT Sumber Jaya,01.234.567.8-901.000,Ibu Rina,sales@sumberjaya.co.id,021-5551234,30,7,1,Diskon 2% bila bayar 10 hari,TRUE
CV Maju Bersama,02.345.678.9-012.000,Bapak Dodi,info@majubersama.id,024-9991111,14,5,10,Free ongkir >= 10 ctn,TRUE
C. Template CSV — Harga Promo
sku,promo_name,start_date,end_date,location,benefit_type,benefit_value,max_qty,priority,active
GRY-SNCK-INDO-CHIT-68G-0012,Snack Hemat,2025-12-01,2025-12-07,STORE-001,price_off,700,,10,TRUE
GRY-DRNK-UHT-INDO-250-0007,Minuman Week,2025-12-01,2025-12-14,STORE-001,percent,10,,20,TRUE
D. Template CSV — Stok Awal
sku,location,qty,uom,cost_per_base,lot,expiry
GRY-SNCK-INDO-CHIT-68G-0012,STORE-BACK,120,PCS,3500,L2401,2026-01-31
GRY-DRNK-UHT-INDO-250-0007,STORE-CHILL,240,PCS,3800,L2402,2025-08-30
E. Template CSV — PO & GR (Contoh Sederhana)
PO
po_number,date,supplier,sku,qty,order_uom,unit_cost,expected_date,notes
PO-2025-0001,2025-11-25,PT Sumber Jaya,GRY-SNCK-INDO-CHIT-68G-0012,10,CTN,252000,2025-11-28,Promo awal bulan
GR
gr_number,date,po_number,sku,received_qty,receive_uom,unit_cost,batch,expiry,notes
GR-2025-0001,2025-11-28,PO-2025-0001,GRY-SNCK-INDO-CHIT-68G-0012,10,CTN,252000,L2401,2026-01-31,Sesuai PO
F. Contoh SOP Ringkas (Potong & tempel ke dokumen SOP Anda)
Judul: SOP Perubahan Harga
Tujuan: Menjamin perubahan harga terkendali & terdokumentasi.
Lingkup: Seluruh produk di toko.
Peran:
- Manager Pricing: menetapkan harga & masa berlaku.
- Supervisor: verifikasi label & sinkron ke terminal.
- Kasir: tidak berwenang mengubah harga di frontend.
Prosedur:
1) Manager menetapkan harga baru (effective date).
2) Supervisor memastikan sinkron terminal & ganti label rak sebelum toko buka.
3) Audit perubahan dicetak mingguan & ditandatangani.
G. Formula Inti (ROP, Safety Stock, GMROI)
# ROP (Reorder Point)
# ROP = (Permintaan harian rata-rata × Lead time) + Safety Stock
# Safety Stock (pendekatan service level):
# SS = Z × σ(LT) × D
# Z = faktor service level (mis. 1.65 untuk 95%), σ(LT) = deviasi standar permintaan selama lead time, D = rata-rata permintaan harian.
# GMROI
# GMROI = Margin Kotor Tahunan / Rata-rata Biaya Persediaan
H. SQL Contoh — Ledger Persediaan & Harga vs COGS
Ledger Persediaan (moving average)
-- Tabel contoh:
-- stock_moves(date, sku, location, qty_in, qty_out, cost_per_base)
-- products(sku, name, category)
WITH m AS (
SELECT date, sku, location, qty_in, qty_out, cost_per_base FROM stock_moves
),
acc AS (
SELECT
sku, location, date,
SUM(qty_in - qty_out) OVER (PARTITION BY sku, location ORDER BY date
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS saldo,
AVG(NULLIF(cost_per_base,0)) OVER (PARTITION BY sku, location
ORDER BY date ROWS UNBOUNDED PRECEDING) AS moving_avg_cost
FROM m
)
SELECT a.date, a.sku, p.name, a.location, a.saldo, a.moving_avg_cost
FROM acc a JOIN products p ON p.sku=a.sku
ORDER BY a.sku, a.location, a.date;
Deteksi Harga Jual < COGS
-- pricebook (sku, sell_price)
-- cost_view (sku, moving_avg_cost)
SELECT pr.sku, pr.sell_price, c.moving_avg_cost,
CASE WHEN pr.sell_price < c.moving_avg_cost THEN 'WARNING' ELSE 'OK' END AS flag
FROM pricebook pr
JOIN cost_view c ON c.sku=pr.sku
ORDER BY flag DESC, pr.sku;
Matriks Perbandingan: Valuasi, Replenishment, dan Promo
| Aspek | Opsi | Kelebihan | Keterbatasan | Kapan Dipakai |
|---|---|---|---|---|
| Valuasi Persediaan | Average | Stabil, mudah | Kurang akurat saat harga fluktuatif tajam | Grocery umum |
| Valuasi Persediaan | FIFO | Cermin arus fisik, cocok FEFO | Butuh pelacakan batch rapi | Produk kadaluarsa/lot |
| Replenishment | Min–Max | Mudah diterapkan | Kurang dinamis saat permintaan musiman | Toko kecil/awal |
| Replenishment | ROP + Safety Stock | Lebih adaptif, berbasis data | Perlu data historis | SKU fast-moving |
| Promo | Price-Off | Simpel, mudah dipahami | Margin tergerus | Spike cepat |
| Promo | Multi-Buy / Bundle | Tingkatkan basket size | Aturan kompleks | Mix & match kategori |
Kesimpulan
Fondasi retail/grocery yang sehat adalah master data yang tertib, proses stok yang disiplin, dan POS yang tertata: backend kuat, frontend sederhana. Mulailah dari penentuan SKU & penamaan yang konsisten, pastikan valuasi persediaan dipilih dan dipegang teguh, terapkan FEFO, susun pricebook serta promo berbasis data, dan jalankan SOP opname/koreksi secara rutin. Dengan template CSV, formula, dan SQL contoh di atas, Anda bisa langsung “membumi” di toko mini hingga siap berkembang ke multi cabang—tanpa kehilangan kendali atas margin dan stok.