Skip to main content

title: “Kasir (Cashier)” description: “Antarmuka kasir utama untuk memproses transaksi penjualan dengan product grid, cart, pembayaran multi-metode, dan receipt printing.”

Kasir (Cashier)

Halaman Kasir Halaman Kasir adalah antarmuka utama untuk memproses transaksi penjualan. Dirancang untuk kecepatan dan efisiensi — kasir bisa memproses transaksi dari scan produk hingga cetak receipt dalam hitungan detik. Halaman ini mendukung barcode scanning, split payment, multi-channel, dan offline mode.

Layout Kasir

Akses Halaman

Komponen Utama

1. Product Grid

Area utama untuk memilih produk yang akan dijual: Layout Product Grid per Device:

2. Shopping Cart

Panel di sebelah kanan yang menampilkan item yang dipilih: Fitur Cart:
  • Real-time Total — total otomatis update setiap kali ada perubahan
  • Hold & Recall — tahan transaksi untuk diproses nanti
  • Customer Link — link transaksi ke customer untuk membership points
  • Notes — tambahkan catatan per item atau per transaksi

3. Tombol BAYAR

Tombol utama di bagian bawah cart untuk memulai proses checkout: Setelah klik tombol BAYAR, modal pembayaran muncul dengan komponen:

Payment Methods

Sales Channel

Pilih channel penjualan yang aktif:

Customer Selection

Quick Cash Buttons

Tombol cepat untuk nominal uang tunai yang umum:

Split Payment

Aktifkan toggle split payment untuk kombinasi metode pembayaran:

Change Calculation

Kalkulasi kembalian otomatis untuk pembayaran cash:

Transaction Features

Hold Transaction

Tahan transaksi yang sedang diproses untuk diselesaikan nanti:

Void Transaction

Batalkan transaksi yang sudah diproses:

Refund

Proses refund untuk transaksi yang sudah selesai:

Receipt Printing

Template Receipt:
  • Logo perusahaan
  • Nama & alamat toko
  • Tanggal & waktu | No | Item | Qty | Harga | Subtotal | |----|------|-----|-------|----------| | | | | | | | | | | Total | Rp XXX | | | | | Metode | Cash/QRIS | | | | | Kembalian | Rp XX | | | Terima kasih | | | |

Keyboard Shortcuts

Offline Mode

Tips

  • Selalu cek outlet yang dipilih sebelum memproses transaksi — stok dan harga bisa berbeda antar outlet
  • Masukkan nomor member sebelum bayar supaya poin dan diskon otomatis diterapkan
  • Gunakan shortcut keyboard (F1 search, F3 bayar) untuk mempercepat transaksi saat antrian panjang
  • Manfaatkan hold transaction jika customer belum siap bayar — kamu bisa lanjutkan transaksi lain dulu
  • Cek koneksi printer di awal shift untuk menghindari masalah cetak receipt
  • Lakukan close shift di akhir shift untuk rekonsiliasi uang kas dengan sistem

Diagram Relasi Entitas

Berikut adalah diagram relasi entitas (ERD) yang menggambarkan seluruh entitas terkait modul Kasir (POS) beserta hubungan dan field-field kuncinya.

Tabel Schema Entitas

CompanyPOSTransaction

Entitas utama untuk menyimpan seluruh transaksi POS kasir. Mendukung split payment, multi-channel, dan integrasi membership.

CompanyPOSProduct

Entitas produk yang dijual melalui kasir POS. Mendukung variant, bundle, channel pricing, dan data kualitas (HACCP).

CompanyPOSInventory

Log pergerakan stok produk. Setiap transaksi kasir otomatis mencatat entri out pada entitas ini.

CompanyPOSCategory

Kategori produk dalam lingkup perusahaan untuk mengelompokkan produk di product grid kasir.

CompanyPOSSettings

Pengaturan global POS per perusahaan, termasuk konfigurasi receipt. Sub-field receipt_settings:

CompanyReceiptSettings

Pengaturan tampilan struk pembelian yang lebih detail, terpisah dari CompanyPOSSettings.

POSMember

Data member/customer yang terdaftar dalam program loyalty POS.

CustomerMembership

Definisi tier/level membership loyalty per perusahaan. Menentukan syarat, benefit, dan skema loyalty.

Discount

Konfigurasi diskon yang dapat diterapkan pada transaksi kasir.

Voucher

Kode voucher yang dapat digunakan customer untuk mendapatkan potongan harga.

PrinterSettings

Konfigurasi printer thermal Bluetooth yang digunakan kasir untuk mencetak receipt.

PaymentGatewaySettings

Konfigurasi payment gateway (Tripay) untuk pembayaran non-tunai.

GLJournalEntry

Entitas jurnal akuntansi yang di-generate otomatis dari transaksi kasir untuk pencatatan double-entry bookkeeping.

State Machine — Siklus Hidup Transaksi Kasir

Berikut diagram state yang menggambarkan siklus hidup transaksi dari pembuatan hingga penyelesaian, termasuk flow void dan refund. Deskripsi transisi utama:

Sequence Diagrams

1. Flow Checkout Kasir (Scan → Bayar → Receipt)

2. Flow Void / Retur Transaksi

3. Flow Offline Mode Sync


Tabel Referensi Enum

payment_method (CompanyPOSTransaction)

payment_status (CompanyPOSTransaction)

order_status (CompanyPOSTransaction)

status (CompanyPOSTransaction)

source / sales_channel (CompanyPOSTransaction)

inventory_type (CompanyPOSInventory)

membership_tier (POSMember)

scheme_type (CustomerMembership)

reward_type (CustomerMembership)

discount_type (Discount)

applies_to (Discount)

product_type (CompanyPOSProduct)

packaging_type (CompanyPOSProduct)

storage_condition (CompanyPOSProduct)

receipt_width / paper_width (CompanyPOSSettings, PrinterSettings)

font_size (CompanyPOSSettings, PrinterSettings)

encoding (PrinterSettings)

gl_reference_type (GLJournalEntry)

gl_status (GLJournalEntry)

expense_category (Expense)

expense_status (Expense)

user_role (User)

admin_type (User)

admin_tier (User)

gateway_mode (PaymentGatewaySettings)


Tabel RBAC — Matriks Permission Kasir

Berikut matriks hak akses untuk operasi kasir berdasarkan peran dalam sistem. Catatan RBAC:
  • Owner memiliki akses penuh ke seluruh fitur kasir dan konfigurasi sistem
  • Admin memiliki akses yang hampir setara Owner, kecuali beberapa pengaturan sensitif tertentu
  • Kasir (user) hanya bisa melakukan operasi transaksi dasar — tidak bisa void, refund, atau mengubah konfigurasi
  • Viewer hanya bisa melihat product grid dan laporan, tidak bisa melakukan transaksi
  • Void transaksi dibatasi maksimum 24 jam setelah transaksi dan wajib menyertakan alasan
  • Verifikasi pembayaran non-tunai (manual_transfer) memerlukan role Admin atau Owner
  • Pada offline mode, semua role yang diizinkan transaksi bisa membuat dan menyimpan transaksi lokal, namun sinkronisasi memerlukan koneksi aktif