Tagihan
Tagihan (Bill) adalah satu dokumen transaksi pelanggan di outlet POS yang ditangani oleh kasir selama sesi kasir yang aktif. Bill merupakan pusat koordinasi utama dari sebuah penjualan menghubungkan produk, varian, daftar harga (pricelist), pajak, biaya tambahan, pembulatan, metode pembayaran, stok, hingga pencetakan struk belanja. Setiap bill memiliki catatan audit berupa stempel (opened, held, completed, voided) dan mencatat kasir mana yang bertindak di setiap tahapan tersebut.
Jenis Tagihan
📌 Dokumen Terkait
- stock-management — Buku Besar Stok dan Tipe/Jenis Transaksi.
- stock-in-sales — Ketersediaan stok yang dapat dilihat oleh kasir dan pengurangan stok secara otomatis.
| Jenis | Awalan Kode | Tujuan/Kegunaan |
|---|---|---|
| Order | BL- | Transaksi penjualan standar. Stok barang dipotong setelah transaksi selesai. |
| Refund | RF- | Pengembalian dana atas transaksi yang telah selesai. Merujuk ke kode bill asal. Pengembalian barang ke stok (restock) bersifat opsional. |
Perubahan Status
| Perubahan | Pemicu | Syarat/Batasa | Akibat |
|---|---|---|---|
| → open | Tagihan dibuat | Sesi kasir aktif; cabang sesuai dengan sesi | kode bill dibuat |
| open → held | Kasir menahan tagihan | Status bill adalah open | Waktu dicatat; alasan penahanan disimpan |
| held → open | Kasir melanjutkan tagihan | Status bill held; ada sesi kasir yang aktif | Transaksi dialihkan ke sesi kasir yang melanjutkan; waktu dicatat dihapus |
| open/held → void | Kasir membatalkan | Memiliki peran supervisor/manajer | Seluruh barang yang belum dibatalkan diubah statusnya menjadi void |
| completed → refund | Pengajuan refund | Bill asal statusnya completed dan jenis order; peran Supervisor dan Manajer | Tagihan refund baru dibuat; pengembalian stok barang bersifat opsional |
Aturan Utama
- Pembatalan (Void) vs Refund: Void hanya berlaku untuk tagihan yang statusnya open/held (belum ada pembayaran yang diambil). Pesanan yang sudah selesai (completed) wajib dibatalkan melalui alur refund.
- Pemotongan Stok hanya terjadi saat penyelesaian tagihan berjenis order - tidak pernah terjadi pada tagihan refund.
- Pengembalian Stok (Restock) pada saat refund bersifat opsional per item - kasir dapat memilih item mana saja dan berapa jumlah yang akan dikembalikan ke stok.
- Hold → Resume mengalihkan bill ke sesi aktif milik kasir yang melanjutkan, sehingga memungkinkan pergantian jam kerja (shift) kasir meskipun ada tagihan yang sedang ditahan.
Aturan Penetapan Harga
Penetapan harga dihitung dalam dua tahap: per item barang, kemudian tingkat tagihan. Seluruh nilai nominal mata uang diproses menggunakan unit mata uang terkecil.
Tahap Per Item:
- Harga dasar item menggunakan harga produk utama, atau ditimpa oleh harga varian yang dipilih.
- Pilihan modifier akan menambahkan harga di atas harga dasar tersebut.
- Pricelist yang aktif dapat memberikan diskon pada item: diskon persentase memotong harga; diskon harga tetap menggantikan harganya. Jika ada beberapa pricelist yang berlaku, pricelist paling baru yang menang, dan harga khusus varian mengalahkan harga tingkat produk (selama dalam rentang tanggal dan minimal jumlah pembelian yang valid).
- Pajak per item (contoh: PPN/PB1 produk) dikenakan pada harga item yang sudah didiskon.

Tahap Tingkat Tagihan:
- Subtotal adalah penjumlahan dari seluruh item induk (item turunan paket/combo hanya untuk tampilan).
- Total diskon item dikurangi dari subtotal.
- Pajak tingkat subtotal dikenakan pada subtotal setelah diskon, sebelum penambahan biaya tambahan.
- Biaya tambahan (additional fees - persentase atau nominal tetap) ditambahkan.
- Pajak termasuk biaya (fees-inclusive taxes) dikenakan pada subtotal setelah diskon ditambah biaya tambahan — mengikuti pola PPN Indonesia, di mana DPP (Dasar Pengenaan Pajak) mencakup biaya layanan (service charge).
- Jika outlet mengaktifkan fitur pembulatan, total akhir dibulatkan ke atas atau ke bawah ke kelipatan 100 terdekat; selisih nilai pembulatan dicatat terpisah untuk laporan keuangan.

Tagihan berjenis refund mengabaikan biaya tambahan dan pembulatan.
Paket Bundles
Produk bundle berisi pilihan combo — yaitu kelompok produk turunan yang dapat dipilih dengan batasan jumlah. Produk induk (bundle) yang dihitung ke dalam total tagihan; sedangkan produk turunan hanya untuk tampilan dan pencatatan stok, di mana biayanya sudah terhitung di dalam harga produk induk.

Setiap pilihan combo menentukan item gratis (includesFree), jumlah maksimal (maximumItems), harga untuk item ekstra di luar item gratis, dan harga tambahan per item.
Aturan Validasi:
- Setiap pilihan combo harus memiliki minimal satu pilihan item.
- Item yang dipilih wajib ada dalam daftar produk pilihan combo tersebut.
- Total pilihan harus memenuhi syarat includesFree ≤ total pilihan ≤ maximumItems.

Aturan Stock
- Saat penyelesaian tagihan order, setiap item yang tidak dibatalkan dan statusnya dilacak stoknya akan dipotong dari inventaris.
- Jika ada satu saja item yang stoknya tidak mencukupi, seluruh penyelesaian transaksi dibatalkan — tidak ada pemotongan stok sebagian.
- Saat refund, pengembalian ke stok bersifat opsional per item; kuantitas yang dikembalikan ke stok tidak boleh melebihi jumlah barang yang di-refund.
Kode Tagihan
Tagihan menggunakan kode yang mudah dibaca dengan awalan khusus sesuai jenisnya: BL- untuk pesanan (order), dan RF- untuk pengembalian dana (refund). Kode bersifat unik per organisasi dan cabang, serta dibuat secara berurutan.