Tujuan sesi ini adalah membawa data Anda dari template CSV yang telah kita rancang (Sesi 1–2) ke dalam Odoo Community, mengonfigurasi POS, lalu menjalankan pengujian kasir sampai siap produksi. Fokus pada kebersihan data dan konsistensi referensi (kategori, pajak, UoM) agar proses transaksi, stok, dan laporan akurat.
1. Prasyarat & Modul
- Odoo Community terpasang (disarankan v17/v18 CE) dan dapat diakses admin.
- Instal & aktifkan modul: Inventory, Purchase, Point of Sale, Contacts, Accounting (jika tersedia).
- Pastikan mata uang, zona waktu, dan bahasa perusahaan telah benar (Settings → Companies → Configuration).
2. Urutan Impor yang Disarankan
- Kategori (product.category) → menjadi referensi produk.
- Produk (product.template) → SKU, barcode, harga, UoM, pajak.
- Partner (res.partner) → supplier & customer (opsional).
- Stok awal (inventory adjustment) → kuantitas per lokasi.
- Konfigurasi POS → payment method, pajak, barcode timbang.
3. Impor Kategori Produk
UI: Inventory → Configuration → Products → Product Categories → Import
Template CSV — product.category
id,name,parent_id/id
cat_groceries,Groceries,
cat_snacks,Snacks,cat_groceries
cat_beverages,Beverages,cat_groceries
cat_packaging,Packaging,cat_groceries
Keterangan: Kolom id adalah External ID; parent_id/id mengacu pada External ID induk.
4. Impor Produk (SKU, Barcode, Harga, UoM, Pajak)
UI: Inventory → Products → Import (model: product.template)
.../id).Template CSV — product.template
id,name,default_code,barcode,type,categ_id/id,uom_id/id,uom_po_id/id,list_price,standard_price,taxes_id/id,invoice_policy,tracking,available_in_pos,sale_ok,purchase_ok,active
prod_snack_bbq_68,Indomilk Chips BBQ 68g,GRY-SNCK-INDO-CHIT-68G-0012,8999999999999,product,cat_snacks,uom_unit,uom_unit,4900,3500,account_tax_ppn,delivered,none,True,True,True,True
prod_milk_uht_250,Indomilk UHT Cokelat 250ml,GRY-DRNK-UHT-INDO-250-0007,8998888888888,product,cat_beverages,uom_unit,uom_unit,5500,3800,account_tax_ppn,delivered,none,True,True,True,True
prod_plastic_bag_l,Kantong Belanja Plastik L,SVS-BAG-PLS-001,,consu,cat_packaging,uom_unit,uom_unit,500,0,account_tax_non,,none,True,True,False,True
Keterangan:default_code=SKU, type=product(stok) / consu(consumable) / service.uom_unit adalah External ID bawaan (“Units”).taxes_id/id contoh: account_tax_ppn (buat/cek terlebih dulu pajak dan External ID-nya).
(Opsional) Harga Cabang via Pricelist
UI: Sales → Products → Pricelists → Import (aktifkan Pricelists di Sales Settings)
id,name,active,currency_id/id,item_ids/applied_on,item_ids/product_tmpl_id/id,item_ids/compute_price,item_ids/fixed_price
pl_retail_all,Daftar Harga Retail,True,base.IDR,1_product,prod_snack_bbq_68,fixed,4900
5. Impor Supplier & Customer (Opsional)
UI: Contacts → Import (model: res.partner)
Template CSV — res.partner
id,name,is_company,street,phone,email,vat,customer_rank,supplier_rank
sup_sumber_jaya,PT Sumber Jaya,True,Jl. Mawar No.1,0215551234,sales@sumberjaya.co.id,01.234.567.8-901.000,0,1
cust_umum,Pelanggan Umum,False,,,,-,1,0
6. Inisialisasi Stok Awal (Inventory Adjustment)
UI: Inventory → Operations → Inventory Adjustments → New → beri nama mis. “Inisialisasi W1” → Start Inventory → pada tabel Lines klik Import.
Template CSV — Inventory Lines
product_id/id,location_id/id,prod_lot_id/name,expiration_date,product_uom_id/id,inventory_quantity
prod_snack_bbq_68,stock.stock_location_stock,L2401,2026-01-31,uom_unit,120
prod_milk_uht_250,stock.stock_location_stock,L2402,2025-08-30,uom_unit,240
Keterangan: location_id/id contoh lokasi utama: stock.stock_location_stock. Untuk produk non-lot, biarkan prod_lot_id/name kosong.
7. Pajak & Fiscal Position (Ringkas)
- UI: Accounting → Configuration → Taxes: buat “PPN 11%” (Sales) dan “PPN 11% (Vendor)” (Purchase). Simpan External ID (via Developer Mode).
- Jika ada skenario pengecualian/konversi pajak, gunakan Fiscal Positions (map pajak A → B berdasarkan partner/negara).
8. Konfigurasi POS (Kasir)
UI: Point of Sale → Configuration → Point of Sale → Create “Toko Utama”.
- IoT/Devices: set printer, scanner (opsional).
- Payments: tambahkan metode: “Cash”, “Kartu (EDC)”, “QRIS/e-wallet”. UI: POS → Configuration → Payment Methods.
- Pricing: pilih Pricelist bila digunakan; aktifkan Discount bila perlu (batasi di peran Supervisor).
- Inventory: pastikan Stock Location menunjuk ke lokasi penjualan (
stock_location_stockatau lokasi toko). - Taxes: pastikan default pajak penjualan terpasang di produk atau via fiscal position.
- Barcode: aktifkan Barcode Scanner; pilih Barcode Nomenclature yang memuat rule “Weighted/Price” (lihat bagian berikut).
9. Barcode Timbang (By Weight) & Nomenclature
UI: Inventory → Configuration → Barcodes → Barcode Nomenclatures → pilih/duplikasi standar → tambahkan Rule:
- Type: Weighted Product (atau Price), Barcode Pattern contoh:
21{NNNNN}{WWWWW}*(disesuaikan timbangan Anda). - Encoding: EAN-13. Sequence: pastikan prioritas di atas rule generik.
10. Uji End-to-End di POS
- Buka Sesi: POS → Dashboard → Open Session → input kas awal.
- Scan SKU kemasan & scan barcode timbang (buah/daging).
- Diskon: uji promo (Pricelist) & diskon manual (minta PIN supervisor jika diaktifkan).
- Pembayaran: uji CASH, Kartu (rekap di EDC), dan QRIS.
- Struk: cetak/kirim e-receipt.
- Tutup Sesi: Close → pastikan jurnal kas & stok berkurang sesuai penjualan.
11. Troubleshooting Umum Impor
- Many2one tidak cocok: gunakan kolom
field/id(External ID) daripada nama tampilan. - UoM tidak ditemukan: aktifkan Developer Mode, cek External ID UoM (contoh bawaan:
uom_unit). - Pajak ganda/tidak sesuai: pastikan hanya satu pajak default pada produk; periksa fiscal position.
- Stok nol setelah impor: pastikan Inventory Adjustment sudah Validasi.
12. Checklist Go-Live
- Semua kategori & produk terimpor, SKU/Barcode unik.
- UoM & pajak konsisten; produk by-weight memakai barcode timbang.
- Stok awal tervalidasi per lokasi; lakukan spot check 10 SKU acak.
- POS: payment method aktif; printer/EDC/QRIS diuji; user & role kasir diset.
- Jalankan simulasi 20 transaksi campuran; periksa jurnal & laporan penjualan.