Mini Sesi 5 — Implementasi POS di Odoo Community (Mapping Impor & Langkah UI)

Sesi ini memandu Anda menyiapkan Point of Sale (POS) di Odoo Community: mapping impor (kategori, produk, pelanggan, pemasok, harga, stok awal), konfigurasi POS (payment method, barcode timbang, pajak), dan uji end-to-end sampai kasir siap berjualan. Disertai template CSV yang kompatibel dengan wizard impor Odoo dan langkah UI layar demi layar.

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

  1. Kategori (product.category) → menjadi referensi produk.
  2. Produk (product.template) → SKU, barcode, harga, UoM, pajak.
  3. Partner (res.partner) → supplier & customer (opsional).
  4. Stok awal (inventory adjustment) → kuantitas per lokasi.
  5. Konfigurasi POS → payment method, pajak, barcode timbang.
Tip: gunakan External ID di CSV untuk menjaga relasi antar tabel saat impor (lebih tahan terhadap nama ganda).

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)

Penting: Cocokkan nama UoM & tax dengan yang ada di database Anda (cek di Inventory → Configuration → Units of Measure dan Accounting → Configuration → Taxes). Bila ragu, gunakan referensi External ID (kolom .../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 SaleCreate “Toko Utama”.

  1. IoT/Devices: set printer, scanner (opsional).
  2. Payments: tambahkan metode: “Cash”, “Kartu (EDC)”, “QRIS/e-wallet”. UI: POS → Configuration → Payment Methods.
  3. Pricing: pilih Pricelist bila digunakan; aktifkan Discount bila perlu (batasi di peran Supervisor).
  4. Inventory: pastikan Stock Location menunjuk ke lokasi penjualan (stock_location_stock atau lokasi toko).
  5. Taxes: pastikan default pajak penjualan terpasang di produk atau via fiscal position.
  6. 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.
Catatan: Mapping PLU → SKU: simpan PLU timbangan di kolom Barcode produk by-weight. Uji: cetak label dari timbangan → scan di POS → terbaca qty/berat otomatis.

10. Uji End-to-End di POS

  1. Buka Sesi: POS → Dashboard → Open Session → input kas awal.
  2. Scan SKU kemasan & scan barcode timbang (buah/daging).
  3. Diskon: uji promo (Pricelist) & diskon manual (minta PIN supervisor jika diaktifkan).
  4. Pembayaran: uji CASH, Kartu (rekap di EDC), dan QRIS.
  5. Struk: cetak/kirim e-receipt.
  6. 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.

Sumber/Referensi


Share the Post:

Related Posts