Varian

Gambaran Umum

Varian adalah kombinasi unit/SKU yang dibentuk otomatis dari atribut berjenis varian. Ketika sebuah produk memiliki beberapa atribut varian (misalnya Ukuran × Warna), sistem akan menghitung perkalian silang dari seluruh kombinasi item tersebut dan membuat satu varian untuk setiap kombinasi. Setiap varian merupakan entitas satu yang memiliki SKU, harga, dan urutan tampilannya sendiri. Hal ini memungkinkan untuk:

  • Kode Barcode/SKU yang unik untuk setiap kombinasi.
  • Penentuan harga khusus per varian.
  • Pelacakan stok per varian.
  • Menonaktifkan kombinasi yang tidak tersedia/tidak valid.

Aturan Identitas

  1. Satu varian = Satu unit yang dapat dijual. Varian adalah kombinasi konkret yang terdiri dari tepat satu item dari setiap atribut varian milik produk tersebut.
  2. SKU - Dibuat otomatis saat pembuatan varian berdasarkan kombinasi Kode Produk + Singkatan Item. SKU harus unik di setiap organisasi. Admin dapat mengubahnya setelah itu.
  3. Barcode - Opsional, dibuat per kombinasi. Unik di setiap organisasi ketika diisi. Barcode hanya terikat pada unit yang dapat dijual (produk atau varian), dan tidak pernah terikat langsung pada item atribut — karena item atribut (seperti "Merah" atau "M") adalah nilai opsi bersama yang digunakan kembali di berbagai produk dan tidak dapat menentukan satu unit yang dapat dijual secara unik.
  4. Status Aktif (Active Flag) - Admin dapat menonaktifkan kombinasi yang tidak valid atau sudah tidak diproduksi lagi. Varian yang dinonaktifkan tidak dapat dijual.
dashboard

Aturan Penentuan Harga

  1. Harga varian bersifat mutlak/pasti — proses transaksi/tagihan kasir langsung menggunakan nilai harga varian.
  2. Varian yang baru dibuat dimulai dari harga dasar produk ditambah harga item atribut dari kombinasi tersebut; setelahnya, Admin bebas mengubah dan menetapkan harga khusus untuk setiap varian.
  3. Produk utama tetap memiliki data harga produk sendiri untuk produk yang tidak memiliki varian, sekaligus sebagai harga acuan bawaan saat pembuatan varian baru.

Aturan Pemilihan

  1. Tepat satu item untuk setiap atribut varian - atribut varian selalu bersifat pilih satu (single-select); opsi multiple-select akan diabaikan pada atribut jenis ini.
  2. Setiap atribut varian yang dimiliki oleh suatu produk wajib dipilih/dijawab lengkap sebelum item tersebut dapat dimasukkan ke dalam keranjang belanja.
  3. Memilih kombinasi yang tida ada (misalnya varian yang sudah dinonaktifkan atau dihapus) akan ditolak oleh sistem.

Buat Ulang Varian (Regeneration)

Membuat ulang (regenerate) varian berfungsi untuk menyesuaikan kumpulan kombinasi agar cocok dengna konfigurasi atribut saat ini. Proses ini bekerja secara perbandingan selisih (diff), bukan menghapus bersih (wipe):

  1. Kombinasi yang masih ada tetap mempertahankan identitas varian - SKU, barcode, harga khusus, status aktif, serta catatan stoknya tetap terjaga utuh.
  2. Kombinasi baru akan dibuat dari awal: menggunakna harga bawaan (harga dasar + total harga item atribut), SKU otomatis, dan tanpa barcode.
  3. Kombinasi yang dihapus akan dihilangkan dari sistem. Catatan buku besar stok dan pendaftarannya pada daftar harga akan dibersihkan bersamaan - sisa fisik barang dilapangan akan muncul sebagai penysutan normal pada stok opname berikutnya. Riwayat penjualannya tidak akan terpengaruh: tagihan lama tetap meyimpan rekan jejak (snapshot) atribut saat transaksi terjadi.

Karena kombinasi yang bertahan tidak tersentuh, proses pembuatan ulang ini aman dijalankan meskipun produk sudah pernah dijual. Harga khusus per varian pada kombinasi yang bertahan tidak akan dihitung ulang — jika ada perubahan harga item atribut, admin dapat menyesuaikan harga varian secara manual melalui menu editor varian. Pembuatan ulang varian hanyalah operasi pembaruan keanggotaan kombinasi, bukan penyelarasan ulang harga.

Proses pembuatan ulang varian tetap hanya terjadi jika ada tindakan eksplisit dari admin — proses ini tidak pernah berjalan otomatis.

Pemicu umum pembuatan ulang varian:

  1. Menambahkan atribut varian baru (misal: menambahkan atribut "Bahan" di luar Ukuran × Warna).
  2. Menghapus salah satu atribut varian atau kombinasi individual.
  3. Mengubah jenis atribut (dari modifier menjadi varian).

Tagihan yang ditahan atau masih terbuka (held/open bills) yang berisi kombinasi yang telah dihapus tidak dapat lagi diselesaikan — kasir harus menghapus item tersebut dari keranjang dan memasukkannya kembali (karena kombinasi tersebut sudah tidak ada lagi sebagai unit yang dapat dijual).

Stok Inventaris (Inventory)

Stok varian tidak disimpan di dalam baris/tabel varian itu sendiri — melainkan dicatat dalam buku besar stok (stock ledger) berdasarkan kombinasi (outlet, produk, varian). Tampilan antarmuka (UI) Kasir akan menampilkan sisa stok di samping pilihan varian; kombinasi yang stoknya habis akan diberi tanda yang jelas. Pembatasan ketat (hard enforcement) dilakukan saat proses pembayaran. Stok akan mengikuti baris data varian terkait: kombinasi yang bertahan akan tetap menyimpan stoknya saat dilakukan buat ulang varian; sedangkan stok kombinasi yang dihapus akan dibersihkan dari sistem.

Batasan

  1. Item yang membentuk suatu varian harus berasal dari atribut yang berjenis variant.
  2. Atribut varian yang dipilih untuk pembuatan varian wajib memiliki minimal satu item.
  3. Menghapus produk utama akan menghapus seluruh varian di dalamnya secara otomatis.
  4. Item atribut yang masih terikat dengan suatu varian tidak bisa langsung hilang/dihapus begitu saja.
  5. Menghapus atribut varian dari suatu produk secara diam-diam tidak akan mengubah data varian yang sudah ada - tindakan regeneration tetap diperlukan.