Mini Sesi 1 — Master Data & Harga untuk Retail/Grocery + POS

Sesi ini memantapkan fondasi master data dan harga agar POS Anda akurat, cepat, dan mudah diaudit. Kita tetapkan kamus data (data dictionary), kebijakan SKU & penamaan, struktur CSV siap impor, validasi kualitas data, metode penilaian persediaan (Average/FIFO), serta tata kelola pricebook & promo dengan tanggal efektif. Disertai rumus Excel/Sheets, skrip bantu ringan, dan SQL pemeriksaan data.

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)

KolomWajib?Contoh/DomainCatatan
skuWajibGRY-SNCK-INDO-CHIT-68G-0012Unik, tidak berubah. Lihat kebijakan SKU.
barcodeJika ada8999999999999Gunakan EAN/UPC pabrikan; untuk timbang gunakan barcode timbangan.
nameWajibIndomilk Chips BBQ 68gPola penamaan konsisten (lihat bagian penamaan).
brandOpsionalIndomilkMemudahkan promo & laporan.
department/category/subcategoryDisarankanGroceries/Snacks/ChipsHierarki untuk pelaporan.
uom_purchase/uom_sale/conv_to_base/base_uomJika perlu konversiCTN/PCS/72/PCSWajib untuk beli karton, jual pcs.
tax_codeSesuai regulasiPPN/NONPastikan konsisten dengan modul pajak POS.
costJika kelola COGS3500Harga pokok per base_uom.
sell_priceWajib4900Harga jual normal (non-promo).
typeWajibstockable/service/bundle/by_weightMenentukan perilaku stok & POS.
expiry/batchUntuk grocery2026-01-31 / L2401FEFO & pelacakan lot.
activeWajibTRUE/FALSEKontrol 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) / F2

Validasi 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

  1. Hari 1: Kunci kebijakan SKU & penamaan. Susun hierarki kategori.
  2. Hari 2: Lengkapi template CSV master produk (50 SKU contoh).
  3. Hari 3: Tambahkan UoM & konversi, pajak, dan type item.
  4. Hari 4: Hitung cost & tetapkan harga normal; isi pricebook.
  5. Hari 5: Jalankan QC Excel (regex, validasi EAN, margin). Perbaiki anomali.
  6. Hari 6: Impor ke POS sandbox; uji 10 transaksi; cek laporan.
  7. 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.

Sumber/Referensi


Share the Post:

Related Posts