7. Riwayat Transaksi
A. Tampilan Daftar Riwayat
Tema cyan. Buka menu Riwayat dari home untuk lihat semua transaksi penjualan + refund + tagihan piutang.
- Header: icon kalender (filter rentang tanggal)
- Search: Cari ID / nama customer / S/N... (S/N = Serial Number untuk produk SN-tracked)
- 2 baris chip filter:
- Baris 1 = filter metode pembayaran: Semua / BON / Cash / Piutang / QRIS / Transfer Bank
- Baris 2 = filter tipe transaksi: Semua / Penjualan / Refund / Tagihan / Harga Custom
- Per transaksi card:
- Icon: struk untuk normal, icon refund (merah) untuk transaksi refund
- Customer name (kalau attach) atau metode (Cash/QRIS/dll)
- Amount (merah kalau refund)
- Tanggal & waktu
- Kode TRX-XXXX (kanan atas)
- Jumlah produk + badge Refunded (hijau) kalau sudah pernah di-refund

B. Filter & Cari Transaksi
- Filter Tanggal โ tap icon kalender di header. Muncul dialog Pilih Rentang Tanggal dengan calendar view (multi-bulan). Tap tanggal Mulai โ tap tanggal Akhir โ tap Terapkan
- Filter Metode Pembayaran โ tap chip di baris 1 (Cash, QRIS, Transfer Bank, Piutang, BON)
- Filter Tipe Transaksi โ tap chip di baris 2:
- Penjualan โ transaksi penjualan biasa
- Refund โ transaksi refund
- Tagihan โ pembayaran piutang dari customer
- Harga Custom โ transaksi yang harga produk-nya diubah saat checkout (kalau Izinkan Harga Fleksibel aktif)
- Search โ kode transaksi (TRX-0948), nama customer, atau Serial Number/IMEI

Filter bisa dikombinasikan: pilih tanggal + metode + tipe + search untuk hasil yang spesifik.
C. Detail Transaksi
Tap card transaksi โ halaman Detail Transaksi dengan susunan:
- Header card: chip TRX-XXXX, Metode (Cash/QRIS/dll), Total Rupiah, Tanggal & waktu, Kasir yang melayani
- Pelanggan โ avatar + nama (kalau attach customer)
- Item Pembelian (N) โ list per item: foto/initial, nama produk + chip varian/satuan, qty ร harga satuan, subtotal item
- Detail Pembayaran โ Subtotal, Diskon, Pajak, Biaya, Total, breakdown Pembayaran (Cash/Transfer/dll dengan jumlahnya)
- Poin Member (kalau customer attach) โ Poin Didapat / Poin Ditukar / Saldo Poin terbaru
- Pilihan Aksi โ 5 tombol di bawah

5 Pilihan Aksi:
- ๐ Cetak Struk โ print ke printer Bluetooth
- ๐ต Bagikan Struk โ share struk sebagai gambar (WA, dll)
- ๐ฉท Bagikan PDF โ share struk sebagai file PDF
- ๐ข Pesan Lagi โ buat transaksi baru dengan item yang sama
- ๐ฅ Refund โ kembalikan transaksi (lihat section F)

D. Cetak Ulang & Bagikan Struk
Buka detail transaksi, gunakan tombol di Pilihan Aksi:
- Cetak Struk:
- Kalau printer Bluetooth sudah pair โ langsung print
- Kalau belum โ muncul preview struk di layar
- Bagikan Struk โ render struk sebagai gambar JPG, share via Android share-sheet (WA, Telegram, Gmail, dll)
- Bagikan PDF โ render struk sebagai PDF, share via share-sheet (cocok untuk customer yang minta invoice resmi)
E. Pesan Lagi (Reorder Cepat)
Untuk customer yang sering beli barang sama. Hemat waktu, gak perlu ulang scan/cari produk.
- Buka detail transaksi yang mau di-copy
- Tap tombol Pesan Lagi (hijau)
- Sistem buat keranjang baru dengan item yang sama
- Lanjut ke Konfirmasi Pembayaran seperti biasa
Customer dari transaksi original ikut di-attach otomatis (termasuk diskon, catatan, dll bisa diubah sebelum bayar).
F. Refund Transaksi ๐
Fungsi: Membatalkan transaksi penjualan yang salah atau komplain pelanggan. Stok otomatis kembali, laporan otomatis dikoreksi (Net Sales).
โ ๏ธ Syarat Refund:
- โ Hanya tipe transaksi Penjualan (bukan Refund/Tagihan)
- โ Belum pernah di-refund sebelumnya (tidak ada badge Refunded)
- โ Transaksi piutang harus dilunasi dulu sebelum bisa di-refund
Cara Refund (Penuh atau Sebagian):
- Buka Detail Transaksi dari Riwayat
- Tap tombol Refund (merah, di Pilihan Aksi)
- Masuk halaman Konfirmasi Refund:
- Informasi Transaksi โ No. Transaksi (#0948), Tanggal
- Pilih Item Refund โ semua item ter-checked (red border) by default. Uncheck item kalau cuma mau refund sebagian. Link "Batal Semua" untuk uncheck semua sekaligus
- Rincian Refund โ Subtotal Item + TOTAL REFUND (otomatis update sesuai item yang di-checked)
- Alasan Refund โ pilih dari 5 preset chip: Barang rusak, Salah item, Permintaan pelanggan, Barang tidak sesuai, Komplain kualitas
- Alasan Refund (opsional) โ textarea catatan tambahan
- Tap tombol Proses Refund (label berubah jadi Proses Refund (Penuh) kalau semua item di-check, atau Proses Refund (Sebagian) kalau ada yang di-uncheck)

Dampak Refund:
Stok Produk:
- Stok bertambah kembali sesuai qty
- Batch (kalau batch-tracked) dibuatkan dengan kode REFUND-XXX untuk traceability
- Serial Number/IMEI (kalau SN-tracked) kembali ke stok tersedia
Laporan & Dashboard:
- Semua laporan menghitung Net Sales (Penjualan โ Refund)
- Dashboard "Penjualan" otomatis adjust
- Poin loyalty yang sudah didapat customer ikut dikurangi
Riwayat:
- Transaksi original dapat badge Refunded (hijau) di list
- Transaksi Refund baru dibuat dengan kode TRX terpisah, link ke original
โ ๏ธ Catatan Penting:
- Refund irreversible โ tidak bisa dibatalkan setelah diproses
- Pastikan barang fisik sudah dikembalikan customer dulu
- Print struk refund untuk customer (Cetak Struk di Detail Transaksi Refund yang baru dibuat)
- Hanya user dengan permission Riwayat yang bisa proses refund