RestroAIDocumentation
v1.0.0 Changelog

POS Cashier Phase 4

Phase 4 adds a tenant-local, touch-first POS cashier terminal for paid restaurant tenants. It covers dine-in, takeaway, delivery, table carts, shift enforcement, local tenders, sandbox pay-links, split bills, manager-approved refunds/voids, receipt print views, and inventory event hooks.

Access And Shift Rule

POS routes live under /r/{tenant}/pos and remain behind tenant login and active subscription middleware. Users can browse the terminal without a shift, but creating orders, adding items, sending, payments, refunds, voids, and cash movements require an open shift.

Cashier Workflow

  1. Open /r/{tenant}/pos, choose branch and service mode, then open a shift.
  2. Create a table order from the floor map or a takeaway/delivery order from the quick action.
  3. Add menu items from the order workspace. Prices, modifiers, tax flags, branch settings, and station routes are snapshotted.
  4. Send the order to the KOT print preview, hold/resume when needed, or transfer the table.
  5. Apply discounts, split bills, record local payments, or create a sandbox pay-link.
  6. Print the 80mm receipt and close the shift after cash count.

Data Model

Payments

Phase 4 supports local tenant tenders: cash, manual card, bank transfer, wallet, complimentary, and sandbox pay-link. Sandbox pay-links create central payment requests with tenant/order metadata; when a simulator or real sandbox payment becomes paid, the reconciliation hook initializes the tenant database and marks the matching POS payment paid idempotently.

Manager PIN

Manager approval uses a hashed tenant-local PIN stored on staff users with approve pos manager actions. PIN approval is required for refunds, voids, shift close overrides, cash out, safe drop, correction, and high-value discounts. The PIN is never displayed.

Receipts And KOT

Receipts and KOT are browser-based 80mm print views. They use branch receipt settings, order item snapshots, tax/service charge lines, payment splits, and station grouping. No direct ESC/POS hardware integration is required in this phase.

Verification

php artisan test
php artisan route:list --path='r/'
npm run build