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.
Gambaran Sistem
- Pengguna membuat rule di
/form/salesproductrewardrules. - Rule kategori Product dipasang di Customer dan Produk. Rule baru dihitung jika ID rule yang sama ada di customer dan di produk baris transaksi.
- Rule kategori Transaction dipasang di Customer. Rule ini dihitung satu kali untuk transaksi, bukan per baris produk.
- Pengguna menekan tombol Recalc Reward di tab Reward dan Poin pada Sales atau Sales Order. Di POS, perhitungan reward dijalankan saat proses transaksi.
- Sistem memanggil rumus, lalu menambahkan hadiah ke detail reward sesuai produk hadiah dan departemen yang diset di rule.
Prasyarat Sebelum Membuat Rule
Alur Pengisian
- Buka menu Umum, Aturan-aturan, lalu Aturan Pemberian Hadiah.
- Klik Tambah untuk rule baru.
- Isi Kode, Deskripsi, dan Tampilan Nama.
- Pilih Kategori Product untuk reward per item, atau Transaction untuk reward level faktur.
- Pilih Produk Hadiah pada field Reward.
- Pilih Departemen untuk baris hadiah.
- Gunakan Variabel yang tersedia untuk menyalin nama variabel valid.
- Tulis rumus jumlah hadiah di field Formula.
- Simpan rule, lalu pasang ke Customer dan Produk sesuai kategori.
- 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
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.
customer.[kolom], misalnyacustomer.customergroupsalesman.[kolom], misalnyasalesman.idsales.[kolom], misalnyasales.divisiondetail.[kolom], misalnyadetail.productid,detail.salesqty,detail.netamountsalestotalbrandsummary["BRAND01"],suppliersummary["S001"],factorysummary["F001"],productgroupsummary["PG001"]
customer.[kolom]salesman.[kolom]sales.[kolom]salestotalbrandsummary["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
floor.