Pondasi sistem retail yang baik berawal dari master data yang bersih dan pengelolaan harga yang tertib. Dua hal ini menentukan kebenaran laporan penjualan, akurasi stok, dan kendali margin. Sesi ini memberi Anda kit praktis untuk menyiapkan data sekali, lalu mengelolanya secara konsisten ke depan.
Tujuan & Capaian Sesi
- Memiliki data dictionary jelas untuk kolom master produk & harga.
- Menetapkan kebijakan SKU & penamaan yang konsisten.
- Menyiapkan template CSV siap impor ke sebagian besar POS.
- Memahami valuasi persediaan (Average/FIFO) dan dampaknya ke margin.
- Menerapkan pricebook dengan tanggal efektif dan jejak audit.
- Membangun QC data (Excel/SQL) agar impor “sekali benar”.
Kamus Data (Data Dictionary)
| Kolom | Wajib? | Contoh/Domain | Catatan |
|---|---|---|---|
| sku | Wajib | GRY-SNCK-INDO-CHIT-68G-0012 | Unik, tidak berubah. Lihat kebijakan SKU. |
| barcode | Jika ada | 8999999999999 | Gunakan EAN/UPC pabrikan; untuk timbang gunakan barcode timbangan. |
| name | Wajib | Indomilk Chips BBQ 68g | Pola penamaan konsisten (lihat bagian penamaan). |
| brand | Opsional | Indomilk | Memudahkan promo & laporan. |
| department/category/subcategory | Disarankan | Groceries/Snacks/Chips | Hierarki untuk pelaporan. |
| uom_purchase/uom_sale/conv_to_base/base_uom | Jika perlu konversi | CTN/PCS/72/PCS | Wajib untuk beli karton, jual pcs. |
| tax_code | Sesuai regulasi | PPN/NON | Pastikan konsisten dengan modul pajak POS. |
| cost | Jika kelola COGS | 3500 | Harga pokok per base_uom. |
| sell_price | Wajib | 4900 | Harga jual normal (non-promo). |
| type | Wajib | stockable/service/bundle/by_weight | Menentukan perilaku stok & POS. |
| expiry/batch | Untuk grocery | 2026-01-31 / L2401 | FEFO & pelacakan lot. |
| active | Wajib | TRUE/FALSE | Kontrol visibilitas produk. |
Kebijakan SKU & Penamaan Produk
Aturan SKU
- Unik, singkat, tidak memuat informasi mudah berubah (mis. harga).
- Format contoh:
<DEPT>-<CAT>-<BRAND>-<VARIAN>-<SIZE>-<SEQ>→GRY-SNCK-INDO-CHIT-68G-0012. - Hindari spasi/karakter spesial. Karakter yang aman: A–Z, 0–9, dan tanda hubung.
Regex Validasi SKU
^[A-Z0-9-]{6,32}$Catatan: Atur panjang sesuai kebutuhan. Prinsipnya, cukup panjang untuk unik, cukup pendek untuk dibaca kasir.
Aturan Penamaan
- Pola:
Brand + Nama + Varian + Ukuran + Satuan + (Kemasan)→ Ultra Milk Cokelat 1L UHT. - Nama struk boleh dipersingkat (receipt name), namun jangan mengaburkan produk.
Template CSV Master Produk & Pricebook
A. Master Produk
sku,barcode,name,brand,department,category,subcategory,uom_purchase,uom_sale,conv_to_base,base_uom,tax_code,cost,sell_price,type,expiry,batch,active
GRY-SNCK-INDO-CHIT-68G-0012,8999999999999,Indomilk Chips BBQ 68g,Indomilk,Groceries,Snacks,Chips,CTN,PCS,72,PCS,PPN,3500,4900,stockable,2026-01-31,L2401,TRUE
GRY-DRNK-UHT-INDO-250-0007,8998888888888,Indomilk UHT Cokelat 250ml,Indomilk,Groceries,Beverages,Milk,CTN,PCS,24,PCS,PPN,3800,5500,stockable,2025-08-30,L2402,TRUE
SVS-BAG-PLS-001,,Kantong Belanja Plastik L,NoBrand,Services,Packaging,,PCS,1,PCS,NON,0,500,service,,,TRUE
B. Pricebook (Harga Normal & Efektif)
sku,price_type,location,price,start_date,end_date,priority,notes,active
GRY-SNCK-INDO-CHIT-68G-0012,normal,ALL,4900,2025-11-01,,10,Harga normal,TRUE
GRY-SNCK-INDO-CHIT-68G-0012,promo,STORE-001,4500,2025-12-01,2025-12-07,90,Snack Hemat,TRUE
GRY-DRNK-UHT-INDO-250-0007,normal,ALL,5500,2025-11-01,,10,Harga normal,TRUE
C. Promo Rules (opsional, bila POS mendukung)
rule_name,scope,selector,benefit_type,benefit_value,start_date,end_date,priority,stackable,active
Snack Hemat,item,sku=GRY-SNCK-INDO-CHIT-68G-0012,price_off,400,2025-12-01,2025-12-07,90,false,TRUE
Mix&Match 3 Chips,category,category=Chips,multi_buy(3,disc_each),300,2025-12-10,2025-12-24,80,true,TRUE
Rumus Excel/Sheets: SKU, Margin, Validasi
Generator SKU Sederhana (Sheets)
=UPPER(TEXT(REGEXREPLACE(A2,"[^A-Za-z0-9]",""),""))&"-"&
UPPER(TEXT(REGEXREPLACE(B2,"[^A-Za-z0-9]",""),""))&"-"&
UPPER(TEXT(REGEXREPLACE(C2,"[^A-Za-z0-9]",""),""))&"-"&
TEXT(D2,"0000")Keterangan: A2=Dept, B2=Category/Brand, C2=Varian/Size, D2=Nomor urut.
Perhitungan Margin
-- Excel/Sheets
-- Margin % = (Sell - Cost) / Sell
=(F2 - E2) / F2Validasi Barcode EAN-13 (digit cek)
=IF(LEN(A2)<>13,"PANJANG SALAH",
IF(RIGHT(A2,1) = TEXT(MOD(10 - MOD( SUMPRODUCT( MID(A2, ROW($1:$12), 1) * IF(MOD(ROW($1:$12),2)=0,3,1) ), 10), 10),0),
"VALID","TIDAK VALID"))Validasi SKU (regex sederhana di Sheets)
=IF(REGEXMATCH(A2,"^[A-Z0-9-]{6,32}$"),"OK","SKU TIDAK VALID")Valuasi Persediaan: Average vs FIFO
- Average (Moving Average): stabil, mudah; cocok untuk grocery umum.
- FIFO: mencerminkan arus fisik & cocok FEFO/expiry; perlu kedisiplinan batch/lot.
Rekomendasi: pilih satu metode dan konsisten. Jika beralih, rencanakan cut-over & dokumentasi audit.
Tata Kelola Harga & Pricebook
Prinsip
- Perubahan harga hanya via backend oleh peran berwenang.
- Gunakan tanggal efektif (mulai/akhir), lokasi, dan prioritas untuk mengatasi konflik.
- Sinkron harga ke terminal sebelum toko buka & cetak label rak.
SOP Perubahan Harga (ringkas)
1) Manager Pricing menetapkan pricebook/promo dengan tanggal efektif.
2) Supervisor cek konflik harga (normal vs promo) & finalisasi label rak.
3) Sinkron terminal POS sebelum toko buka; uji 3 SKU acak di kasir.
4) Arsipkan perubahan (export CSV + tanda tangan digital mingguan).Pemeriksaan Kualitas Data (QC)
- Unik: sku unik, barcode unik per varian/size.
- Lengkap: kolom wajib terisi; UoM & konversi masuk akal.
- Logis: cost ≤ sell_price; expiry ≥ hari ini untuk barang baru.
- Standar: nama konsisten; hindari huruf acak/caps lock tidak beraturan.
SQL Contoh: Duplikat, Barcode Ganda, Harga < COGS
Temukan SKU Duplikat
SELECT sku, COUNT(*) AS n
FROM products
GROUP BY sku
HAVING COUNT(*) > 1;Barcode Sama untuk SKU Berbeda
SELECT barcode, COUNT(DISTINCT sku) AS sku_count
FROM products
WHERE barcode IS NOT NULL AND barcode <> ''
GROUP BY barcode
HAVING COUNT(DISTINCT sku) > 1;Harga Jual < COGS
SELECT p.sku, p.name, pb.price AS sell_price, c.moving_avg_cost
FROM pricebook pb
JOIN cost_view c ON c.sku = pb.sku
JOIN products p ON p.sku = pb.sku
WHERE pb.price_type = 'normal'
AND pb.active = TRUE
AND pb.price < c.moving_avg_cost
ORDER BY p.sku;Checklist Implementasi 7 Hari
- Hari 1: Kunci kebijakan SKU & penamaan. Susun hierarki kategori.
- Hari 2: Lengkapi template CSV master produk (50 SKU contoh).
- Hari 3: Tambahkan UoM & konversi, pajak, dan type item.
- Hari 4: Hitung cost & tetapkan harga normal; isi pricebook.
- Hari 5: Jalankan QC Excel (regex, validasi EAN, margin). Perbaiki anomali.
- Hari 6: Impor ke POS sandbox; uji 10 transaksi; cek laporan.
- Hari 7: Rapat evaluasi; finalisasi SOP perubahan harga & label rak.
Kesimpulan
Dengan data dictionary yang jelas, SKU & penamaan konsisten, template CSV yang rapi, serta pricebook bertanggal efektif, Anda telah menyiapkan pondasi POS yang kuat. Tambahkan QC yang disiplin dan SOP perubahan harga, maka siklus pengelolaan data akan stabil dan mudah diaudit. Hasilnya: kasir lebih cepat, laporan lebih akurat, dan keputusan harga lebih percaya diri.