Modifiers
Gambaran Umum
Modifikasi (Modifiers) adalah opsi tambahan, ekstra, atau kustomisasi opsional yang tidak menghasilkan unit SKU produk baru. Modifier berasal dari atribut yang memiliki tipe ='modifier' dan dipasangkan ke produk sebagai sekumpulan pilihan item yang bisa dipilih. Contoh:
- Toping (Stoberi, Cokelat, Vanila) — pilih banyak (multi-select)
- Extra shot (Ya / Tidak) — pilih satu (single-select)
- Tingkat Pedas (Tidak Pedas, Sedang, Pedas) — pilih satu (single-select) Penentuan harga modifier bersifat penjumlahan — Harga Dasar Produk + total harga dari item modifier yang dipilih.
Perbandingan Varian vs Modifier
| Aspek | Varian | Modifier |
|---|---|---|
| Menghasilkan SKU? | Ya | Tidak |
| Penentuan Harga | Harga mutlak per varian | Harga tambahan per item |
| Stok / Inventaris | Stok dicatat per varian | Tidak ada pelacakan stok per modifier |
| Pemilihan | Wajib — pilih satu dari setiap atribut | Opsional — boleh tidak memilih, memilih satu, atau lebih |
| Harga Khusus (Override) | Mengubah harga varian secara langsung | Pengaturan harga khusus per kombinasi produk + item |
| Menonaktifkan Kombinasi | Menonaktifkan varian terkait | Mencabut pemasangan item dari produk |
Membuat modifier masuk ke menu Pengaturan ➜ Produk ➜ Atribut.

Aturan Pemilihan
- Pilih Banyak — Ditampilkan sebagai kotak centang (checkbox); kasir bisa memilih nol, satu, atau beberapa item sekaligus. Setiap item yang dipilih akan menambahkan harganya dikalikan dengan jumlah item tersebut.
- Pilih Satu — Ditampilkan sebagai tombol pilihan (radio button); maksimal hanya satu item yang bisa dipilih.
- Pada dasarnya Modifier bersifat opsional: tidak memilih item sama sekali (nol pilihan) selalu dianggap valid.

Aturan Penentuan Harga
- Harga Satuan Produk = harga_varian (atau harga_produk jika tanpa varian) + (harga_modifier × jumlah_modifier).
- Harga modifier saat transaksi kasir akan mengutamakan harga khusus tingkat produk (product-level override) jika ada; jika tidak ada, menggunakan harga bawaan item atribut; jika tidak ada juga, nilainya 0.
- Total harga pada baris tagihan adalah Harga Satuan Produk × jumlah produk yang tercatat pada satu item di dalam bill.
- Jumlah modifier berdiri sendiri dan tidak terikat pada jumlah baris tagihan barang — contoh: "2 extra shot" adalah jumlah modifier-nya, bukan berarti barang tersebut dicatat 2 kali di baris tagihan.
Alur kasir
Detail produk akan menampilkan atribut varian terlebih dahulu, baru diikuti atribut modifier di bawahnya:


Setiap pilihan (baik varian maupun modifier) akan dicatat pada baris tagihan sehingga struk belanja dan riwayat pemeriksaan menampilkan secara akurat apa yang dijual, beserta harga sebenarnya yang dikenakan dan namanya pada saat transaksi berlangsung.
Batasan
- Item modifier hanya dapat dijual pada produk yang terhubung dengannya. Memilih item yang tidak terhubung akan ditolak oleh sistem saat proses pembayaran.
- Jika suatu modifier dicabut dari suatu produk, opsi tersebut tidak akan muncul lagi untuk dipilih pada produk tersebut; riwayat tagihan lama tidak akan terpengaruh (karena menggunakan data rekam/snapshot).
- Menghapus suatu item atribut yang masih terikat pada suatu produk tidak boleh merusak data produk tersebut — penanganan status keterhubungannya akan diatur otomatis oleh sistem.
- Jika terdapat harga khusus (price override) pada pasangan produk + item, harga tersebut akan selalu menimpa harga bawaan item atribut.