Aturan Pemberian Hadiah

Panduan membuat rule hadiah produk untuk transaksi penjualan dengan rumus yang dieksekusi oleh ExpressionCalc.

Rute Menu

Umum Aturan-aturan

/form/salesproductrewardrules

Kapan Form Ini Dipakai

Form ini dipakai untuk membuat aturan hadiah produk pada transaksi penjualan. Hasil rumus adalah jumlah hadiah, lalu sistem membuat baris reward di tab Reward dan Poin.

Buy X Get Y
Memberikan produk hadiah berdasarkan jumlah barang tertentu yang dibeli customer.
Promo Faktur
Memberikan hadiah jika total transaksi, brand, supplier, atau factory mencapai target.
Reward Campaign
Memberikan hadiah musiman berdasarkan customer, salesman, tanggal, atau kondisi transaksi lain.
Form ini hanya mengatur hadiah produk. Poin customer memakai form Aturan Pemberian Poin.

Gambaran Sistem

  1. Pengguna membuat rule di /form/salesproductrewardrules.
  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. Rule ini dihitung satu kali untuk transaksi, bukan per baris produk.
  4. Pengguna menekan tombol Recalc Reward di tab Reward dan Poin pada Sales atau Sales Order. Di POS, perhitungan reward dijalankan saat proses transaksi.
  5. Sistem memanggil rumus, lalu menambahkan hadiah ke detail reward sesuai produk hadiah dan departemen yang diset di rule.
Jika beberapa rule menghasilkan produk hadiah yang sama, quantity hadiah digabung. Jika hasil rumus 0 atau negatif, hadiah tidak dibuat.

Prasyarat Sebelum Membuat Rule

Customer dan Produk sudah memiliki field reward rule yang aktif di package aplikasi.
Produk hadiah sudah dibuat, aktif, dan memiliki satuan dasar dengan quantity 1.
Departemen hadiah sudah benar karena departemen di rule dipakai pada baris reward.
Formula sudah dirancang mengembalikan jumlah hadiah, bukan nilai uang.

Alur Pengisian

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

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 "Beli 10 hadiah 1 botol".
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.
Produk (productid) Ya Produk yang akan diberikan sebagai hadiah saat rumus menghasilkan quantity lebih dari 0.
Departemen (departement) Ya Departemen yang dipakai pada baris reward hadiah.
Rumus (formula) Ya Ekspresi yang mengembalikan jumlah hadiah. Hasil boleh desimal jika perusahaan memang memakai quantity pecahan.
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 perhitungan berjalan, sistem membaca daftar rule hadiah 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 hadiah berdasarkan target total faktur, brand, supplier, atau factory.

Customer Group dan Product Group juga memiliki field 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 menjadi quantity hadiah untuk produk reward di field productid.

floor(detail.salesqty / 10)

Contoh di atas memberi 1 hadiah untuk setiap kelipatan 10 quantity 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 ? 1 : 0

Contoh di atas memberi 1 hadiah jika total penjualan mencapai 1.000.000.

Variabel yang Tersedia

Form ini memakai daftar variabel yang sama dengan reward poin. 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 hanya relevan untuk rule kategori Product di Sales dan Sales Order. Hindari variabel itu untuk rule kategori Transaction atau rule yang 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
Pembulatan quantity hadiah floor(detail.salesqty / 10)
Kondisi salestotal >= 1000000 ? 1 : 0
Summary array brandsummary["BRAND01"] >= 500000 ? 1 : 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.salesqty / 10)

Kategori Product. Cocok untuk hadiah per nilai belanja produk tertentu.

floor(detail.netamount / 250000)

Kategori Transaction. Pasang rule ke Customer.

salestotal >= 1000000 ? 1 : 0

Kategori Transaction. Cocok untuk promo brand tertentu.

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

Gunakan pada kategori Product atau Transaction sesuai kebutuhan.

currentmonth == 12 ? 1 : 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.

Pastikan rumus mengembalikan jumlah hadiah, bukan nilai transaksi. Untuk promo kelipatan, biasanya gunakan floor.

Ini perilaku sistem. Jika beberapa rule menghasilkan produk hadiah yang sama, sistem menjumlahkan quantity berdasarkan product reward tersebut.