11. Shift Kasir
Shift adalah periode kerja kasir: dimulai dengan Buka Kasir (set Kas Awal) dan diakhiri dengan Tutup Kasir (input Uang Aktual). Semua transaksi tunai & pengeluaran tunai selama shift aktif terhubung ke shift untuk tracking kas & deteksi selisih.
- Role Kasir: wajib buka shift sebelum bisa transaksi
- Role Owner: tidak wajib shift, bisa langsung transaksi (tapi tetap bisa buka shift kalau juga merangkap kasir)
A. Status Shift di Home
Card status shift di home mengubah penampilannya tergantung kondisi:
- Belum Buka Shift โ card ungu "Tap untuk mulai shift / Buka Kasir"
- Shift Aktif โ card hijau dengan label Shift Aktif, durasi (jam : menit), Kas Awal, hint "Tap untuk tutup kasir"
- Saat shift aktif, juga muncul card teal Uang di Kasir Sekarang โ preview real-time saldo yang harusnya ada di laci

Card "Uang di Kasir Sekarang": formula = Kas Awal + Penjualan Tunai โ Pengeluaran Tunai. Hanya muncul saat ada shift aktif. Berguna untuk owner monitor cash flow real-time tanpa menunggu shift ditutup.
B. Buka Kasir (Open Shift)
- Di home, tap card ungu Tap untuk mulai shift / Buka Kasir
- Halaman Buka Kasir terbuka โ info Kasir & Tanggal otomatis terisi
- Input Kas Awal (wajib):
- Hitung fisik uang tunai di laci saat ini
- Ini jadi baseline untuk hitung selisih (variance) saat tutup shift
- Input Catatan Pembukaan (opsional)
- Tap tombol biru Buka Kasir
- Status home berubah jadi Shift Aktif (card hijau)

Tips: Untuk printer yang support cash drawer, ada opsi otomatis buka laci kas saat buka shift โ aktifkan di Pengaturan Struk.
C. Tutup Kasir (Close Shift)
- Dari home, tap card hijau Shift Aktif (atau tombol Tutup Kasir)
- Halaman Tutup Kasir menampilkan ringkasan:
- Card pink โ info Shift Dibuka, Durasi, Kasir
- Kas Awal โ modal yang Anda input saat buka shift
- Penjualan Hari Ini โ Total Transaksi, breakdown per metode (Cash, dll), Total Penjualan
- Card Hitung Fisik Uang: hitung uang tunai fisik di laci, input ke field Jumlah Uang Aktual (Rp)
- Opsional: Catatan Penutupan (max 500 karakter)
- Scroll ke bawah, tap Tutup Kasir

๐ Security: "Seharusnya" tidak ditampilkan ke Kasir
Saat tutup kasir, halaman tidak menampilkan saldo yang seharusnya ke Kasir โ supaya Kasir tidak menyesuaikan input Uang Aktual agar variance jadi 0. Kasir wajib hitung jujur. Variance baru terlihat setelah submit, dan hanya bisa diakses Owner via Laporan โ Riwayat Shift.
D. Laporan Riwayat Shift (Owner)
Owner buka via Laporan โ Riwayat Shift untuk monitor performa & integritas kas. Header purple "Laporan Riwayat Shift" + tombol refresh + Excel export.

Filter & Ringkasan:
- Pilih Periode chip (Hari Ini / Kemarin / 7 Hari / 30 Hari / Bulan Ini / Bulan Lalu / Custom)
- Filter Kasir: dropdown "Semua Kasir" atau pilih per kasir
- 4 KPI cards: Total Shift, Transaksi, Penjualan, Variance (rata-rata)
- Daftar shift dengan badge: KURANG (oranye) / LEBIH (kuning) / PAS (hijau)
E. Detail Shift (Lihat Variance)
Tap card shift di Laporan Riwayat Shift โ halaman Detail Shift. Hanya di sini Owner bisa lihat Hitungan Sistem dan Selisih (Variance).


Isi halaman Detail Shift:
- Banner status: Shift Ditutup (atau Aktif)
- Card Info: Kasir, Dibuka (tanggal/jam), Ditutup, Durasi
- Kas Awal
- Penjualan Hari Ini โ Total Transaksi, breakdown per metode
- Pengeluaran โ total pengeluaran tunai selama shift
- Hitungan Sistem (pink card): formula transparan
- Kas Awal
- + Penjualan Tunai
- โ Pengeluaran (Cash)
- = Seharusnya
- Uang Aktual (Dihitung) โ yang Kasir input saat tutup
- Selisih (Variance): Uang Aktual vs Seharusnya, dengan label KURANG / LEBIH / PAS
- Hint deskriptif: "Uang di laci kurang Rp X dari hitungan sistem"
- 4 tombol aksi:
- ๐จ๏ธ Cetak Struk โ print laporan shift ke printer Bluetooth
- ๐ค Kirim ke Owner โ share laporan via WhatsApp/email
- โป Recalculate โ re-hitung kalau ada penyesuaian transaksi
- ๐ Kembali ke Home
F. Cara Memahami Variance
Variance / Selisih = Uang Aktual โ Hitungan Sistem (Seharusnya).
PAS (Variance = 0)
Perfect โ semua cocok. Kasir jujur dan teliti.
LEBIH (Variance > 0)
Uang fisik lebih banyak dari Hitungan Sistem. Kemungkinan: customer bayar cash lebih & tidak minta kembalian (tip), atau salah input transaksi (qty/harga lebih rendah dari yang dibayar).
KURANG (Variance < 0)
Uang fisik kurang. Kemungkinan: Kasir salah hitung kembalian (lebihan), salah input transaksi (qty/harga lebih tinggi), atau yang terburuk โ pencurian/kebocoran kas.
Tindak lanjut:
- Pattern variance konsisten KURANG di 1 Kasir โ investigasi (tanya, kalau perlu cross-check histori transaksi)
- Variance besar sekali (mis. >Rp 100.000) โ cek histori transaksi shift tersebut item per item
- Pakai Recalculate kalau ada transaksi yang baru di-update setelah shift tutup
- Setelah review, kirim laporan ke Owner via Kirim ke Owner untuk dokumentasi
Best practice: toleransi variance Rp 5.000โ10.000 masih wajar (pembulatan kembalian, tip kecil, pengeluaran kecil tidak tercatat). Lebih dari itu โ selalu investigasi. Selalu tanya Kasir sebelum menuduh โ bisa jadi misalignment data, bukan kesalahan staff.