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

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
totaltransaksi
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:
- Cashier input diskon > 20%
- Dialog approval muncul minta PIN supervisor
- Server function
approveCashierDiscountvalidasi PIN - Jika valid,
discountApprovedBydicatat - 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
- Selalu cek stok sebelum menambah item ke cart
- Pilih lokasi yang benar untuk transaksi
- Verifikasi pembayaran non-tunai dengan referensi yang valid
- Gunakan split payment jika customer bayar dengan multiple methods
- Cetak struk sebelum customer meninggalkan kasir
Untuk Manager
- Review void transactions setiap hari
- Monitor split payment untuk anomali
- Cek discount approvals untuk pola abuse
- Verify online orders dalam 5 menit
- Review channel performance di POS Reports
Untuk Developer
- Selalu gunakan idempotency key saat create transaction
- Handle stock deduction failure dengan StockAlert
- Broadcast ke semua channel setelah transaction complete
- Validate channel pricing sebelum submit
- Log all void actions untuk audit trail
