Skip to main content

title: “POS Orders” description: “Manajemen pesanan POS SNISHOP ERP — status workflow, multi-channel order, split payment, void management, dan integrasi inventory lintas lokasi.”

POS Orders

POS Orders Halaman POS Orders menampilkan daftar seluruh transaksi POS yang telah dibuat, baik dari kasir offline maupun channel online. Halaman ini terintegrasi penuh dengan sistem inventory, membership loyalty, dan financial recording.

Arsitektur Komponen

Status Workflow Pesanan

Dual POS System

SNISHOP ERP memiliki dua sistem POS paralel yang melayani kebutuhan berbeda:

CompanyPOSTransaction Entity

Entity utama untuk transaksi POS company dengan 50+ field yang mencakup seluruh aspek transaksi:

Core Transaction Fields

Item & Pricing Fields

Payment Fields

Customer & Loyalty Fields

Operational Fields

Timestamp Fields

Split Payment (Multi-Tender)

Transaksi POS mendukung split payment — customer bisa membayar dengan beberapa metode sekaligus: Implementasi:
  • Field payments[] menyimpan array tender
  • Setiap tender memiliki: method, amount, change_amount, account_id, reference, verified_by, verified_at
  • resolvePaymentTenders() menormalisasi single vs split payment untuk reporting
  • Total semua tender harus sama dengan total transaksi

8 Channel Penjualan

Channel Pricing Gate (A3):
  • Channel online wajib punya harga di channel_pricing{}
  • Jika harga channel tidak ada, item di-drop dengan notifikasi
  • Offline POS fallback ke base price

Void Management (PRD-07)

Transaksi yang sudah completed bisa di-void dengan mekanisme keamanan: Syarat Void:
  • Status harus completed
  • User harus punya permission can_edit_pos_transactions
  • Alasan void wajib diisi
  • Stock otomatis dikembalikan
  • Financial record dibuat reversal entry

Discount Approval Flow (A1)

Diskon di atas threshold memerlukan approval supervisor: Threshold: DISCOUNT_APPROVAL_THRESHOLD = 20% Implementasi:
  1. Cashier input diskon > 20%
  2. Dialog approval muncul minta PIN supervisor
  3. Server function approveCashierDiscount validasi PIN
  4. Jika valid, discountApprovedBy dicatat
  5. Jika tidak valid, error ditampilkan

Transaction Integrity (DQ-01)

Sistem mencegah double-submission transaksi melalui beberapa mekanisme:

Write-Ahead Log Lifecycle

Cross-Module Integration

Integrasi Detail

Real-Time Synchronization

POS Orders menggunakan 3-tier sync strategy untuk memastikan data selalu terkini:

BroadcastChannel Directory

Best Practices

Untuk Kasir

  1. Selalu cek stok sebelum menambah item ke cart
  2. Pilih lokasi yang benar untuk transaksi
  3. Verifikasi pembayaran non-tunai dengan referensi yang valid
  4. Gunakan split payment jika customer bayar dengan multiple methods
  5. Cetak struk sebelum customer meninggalkan kasir

Untuk Manager

  1. Review void transactions setiap hari
  2. Monitor split payment untuk anomali
  3. Cek discount approvals untuk pola abuse
  4. Verify online orders dalam 5 menit
  5. Review channel performance di POS Reports

Untuk Developer

  1. Selalu gunakan idempotency key saat create transaction
  2. Handle stock deduction failure dengan StockAlert
  3. Broadcast ke semua channel setelah transaction complete
  4. Validate channel pricing sebelum submit
  5. Log all void actions untuk audit trail