Aturan Pemberian Poin

Panduan membuat rule poin customer untuk transaksi penjualan dengan rumus yang dieksekusi oleh ExpressionCalc.

Rute Menu

Umum Aturan-aturan

/form/salespointrewardrules

Kapan Form Ini Dipakai

Form ini dipakai untuk membuat aturan perolehan poin customer pada transaksi penjualan. Hasil rumus adalah jumlah poin, lalu poin tersebut dimasukkan ke field Sales Point di transaksi.

Poin per Produk
Memberi poin berdasarkan quantity atau nilai net amount dari produk tertentu.
Poin per Faktur
Memberi poin jika total transaksi, brand, supplier, factory, atau product group mencapai target.
Bonus Campaign
Memberi poin tambahan untuk customer group, salesman, periode bulan tertentu, atau campaign khusus.
Form ini hanya mengatur poin. Hadiah produk memakai form Aturan Pemberian Hadiah.

Gambaran Sistem

  1. Pengguna membuat rule di /form/salespointrewardrules.
  2. Rule kategori Product dipasang di Customer dan Produk. Rule baru dihitung jika ID rule yang sama ada di customer dan di produk baris transaksi.
  3. Rule kategori Transaction dipasang di Customer dan dihitung satu kali untuk seluruh transaksi.
  4. Pengguna menekan tombol Recalc Reward di Sales atau Sales Order. Di POS, perhitungan poin dijalankan saat proses transaksi.
  5. Sistem menjumlahkan semua hasil rumus yang lebih besar dari 0, lalu mengisi field poin transaksi.
Berbeda dari hadiah produk, hasil beberapa rule poin akan ditambahkan menjadi satu total poin.

Prasyarat Sebelum Membuat Rule

Customer dan Produk sudah memiliki field point reward rule yang aktif di package aplikasi.
Customer yang diuji sudah dipilih di transaksi karena poin disimpan sebagai poin customer.
Produk, brand, supplier, factory, dan product group sudah benar jika dipakai dalam rumus summary.
Formula sudah dirancang mengembalikan jumlah poin, bukan persen diskon atau nilai rupiah.

Alur Pengisian

  1. Buka menu Umum, Aturan-aturan, lalu Aturan Pemberian Poin.
  2. Klik Tambah untuk rule baru.
  3. Isi Kode, Deskripsi, dan Tampilan Nama.
  4. Pilih Kategori Product untuk poin per item, atau Transaction untuk poin level faktur.
  5. Gunakan Variabel yang tersedia untuk menyalin nama variabel valid.
  6. Tulis rumus jumlah poin di field Formula.
  7. Simpan rule, lalu pasang ke Customer dan Produk sesuai kategori.
  8. Uji transaksi dan tekan Recalc Reward untuk melihat poin yang dihitung.

Field Form

Field Wajib Penjelasan
Kode (id) Ya Kode numerik rule. Kode ini yang disimpan di daftar rule Customer atau Produk.
Deskripsi (description) Ya Nama lengkap rule, misalnya "1 poin per 10 ribu".
Nama Tampilan (displayname) Ya Nama pendek maksimal 20 karakter untuk tampilan ringkas.
Kategori (category) Ya Product untuk rule per baris detail. Transaction untuk rule level transaksi.
Rumus (formula) Ya Ekspresi yang mengembalikan jumlah poin. Hasil 0 atau negatif tidak menambah poin.
Variabel (variables) Tidak Autocomplete variabel. Saat dipilih, nilai variabel disalin ke clipboard.
Fungsi (functions) Tidak Daftar fungsi rumus seperti floor, round, dan stackeddiscount.
Audit (usercreate, useredit, updatetimestamp) Tidak Field audit otomatis.

Pemasangan Rule ke Master Data

Pasang rule ke Customer dan Produk. Saat transaksi dihitung, sistem membaca rule poin dari Customer, lalu hanya menjalankan rule yang juga ditemukan di produk detail transaksi.

Pasang rule ke Customer. Rule kategori Transaction dihitung sekali untuk seluruh transaksi dan cocok untuk bonus poin faktur.

Customer Group dan Product Group juga memiliki field point reward rule. Gunakan group sebagai sumber default bila workflow master data perusahaan memang menyalin rule dari group ke customer atau produk.

Cara Rumus Bekerja

Kategori Product

Rule kategori Product dihitung per baris detail yang memiliki ID rule yang sama dengan rule Customer. Variabel detail berisi baris produk yang sedang dihitung. Hasil rumus ditambahkan ke total poin transaksi.

floor(detail.netamount / 10000)

Contoh di atas memberi 1 poin untuk setiap 10.000 nilai net amount di baris tersebut.

Kategori Transaction

Rule kategori Transaction dihitung satu kali untuk transaksi. Gunakan salestotal atau summary array seperti brandsummary dan suppliersummary. Variabel detail tidak tersedia untuk rule kategori Transaction.

salestotal >= 1000000 ? 25 : 0

Contoh di atas memberi bonus 25 poin jika total penjualan mencapai 1.000.000.

Variabel yang Tersedia

Daftar variabel mengikuti view reward point. Cari pilihan lengkap lewat field Variabel yang tersedia karena daftar kolom mengikuti struktur database.

Kategori Product
  • customer.[kolom], misalnya customer.customergroup
  • salesman.[kolom], misalnya salesman.id
  • sales.[kolom], misalnya sales.division
  • detail.[kolom], misalnya detail.productid, detail.salesqty, detail.netamount
  • salestotal
  • brandsummary["BRAND01"], suppliersummary["S001"], factorysummary["F001"], productgroupsummary["PG001"]
Kategori Transaction
  • customer.[kolom]
  • salesman.[kolom]
  • sales.[kolom]
  • salestotal
  • brandsummary["BRAND01"]
  • suppliersummary["S001"]
  • factorysummary["F001"]
  • productgroupsummary["PG001"] untuk Sales dan Sales Order
Perhitungan POS saat ini tidak mengisi productgroupsummary. Hindari variabel itu jika rule harus berlaku sama di POS.

Fungsi dan Sintaks Rumus

Rumus ditulis sebagai ekspresi tunggal. Gunakan operator aritmatika, perbandingan, logika, ternary, akses properti dengan titik, dan akses array dengan bracket.

Kebutuhan Contoh
Poin per nilai belanja floor(detail.netamount / 10000)
Kondisi salestotal >= 1000000 ? 25 : 0
Summary array brandsummary["BRAND01"] >= 500000 ? 10 : 0
Fungsi yang tersedia round, floor, ceil, abs, trim, str_replace, implode, explode, isset, stackeddiscount
Variabel waktu currentday, currentmonth, currentyear, currenthour, currentminute, currentsecond

Contoh Rumus

Kategori Product. Pasang rule ke Customer dan Produk yang dibeli.

floor(detail.netamount / 10000)

Kategori Product. Cocok untuk promo per jumlah barang.

floor(detail.salesqty / 5)

Kategori Transaction. Pasang rule ke Customer.

salestotal >= 1000000 ? 25 : 0

Kategori Transaction. Cocok untuk campaign brand tertentu.

brandsummary["BRAND01"] >= 500000 ? 10 : 0

Gunakan pada kategori Product atau Transaction sesuai kebutuhan.

currentmonth == 12 ? 2 : 0

Checklist Uji Coba

Masalah Umum

Periksa pemasangan rule. Untuk kategori Product, rule harus ada di Customer dan Produk. Untuk kategori Transaction, rule harus ada di Customer.

Di Sales dan Sales Order, tekan tombol Recalc Reward di tab Reward dan Poin setelah detail transaksi selesai diisi atau diubah.

Gunakan floor, ceil, atau round jika perusahaan hanya memakai poin bulat.

Perhitungan POS saat ini tidak mengisi productgroupsummary. Gunakan brand, supplier, factory, salestotal, atau variabel lain bila rule harus berlaku di POS.