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.
Gambaran Sistem
- Pengguna membuat rule di
/form/salespointrewardrules. - 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 dan dihitung satu kali untuk seluruh transaksi.
- Pengguna menekan tombol Recalc Reward di Sales atau Sales Order. Di POS, perhitungan poin dijalankan saat proses transaksi.
- Sistem menjumlahkan semua hasil rumus yang lebih besar dari 0, lalu mengisi field poin transaksi.
Prasyarat Sebelum Membuat Rule
Alur Pengisian
- Buka menu Umum, Aturan-aturan, lalu Aturan Pemberian Poin.
- Klik Tambah untuk rule baru.
- Isi Kode, Deskripsi, dan Tampilan Nama.
- Pilih Kategori Product untuk poin per item, atau Transaction untuk poin level faktur.
- Gunakan Variabel yang tersedia untuk menyalin nama variabel valid.
- Tulis rumus jumlah poin di field Formula.
- Simpan rule, lalu pasang ke Customer dan Produk sesuai kategori.
- 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
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.
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["PG001"]untuk Sales dan Sales Order
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
floor, ceil, atau round jika perusahaan hanya memakai poin bulat.productgroupsummary. Gunakan brand, supplier, factory, salestotal, atau variabel lain bila rule harus berlaku di POS.