fteg-pos 9981yuzu Loyverse study wireframes — not a live till

9981 Loyverse study · screen flows · mocks

How 9981Yuzu uses Loyverse today (from 9981beelongz), then the FTEG POS screens that replace the till. Product tiles in mocks are FIXTURE only. These frames are a plan — they do not record sales.

Wireframe ≠ working POS. Cash change, card/QR capture, printers, and offline are not implemented. Card and DuitNow stay recorded external payments until a provider is wired.

1. How 9981 uses Loyverse today

Source: /srv/www/9981beelongz (not 9981yuzu-bo-dev — no Loyverse code there). Live till is still Loyverse. 9981 only syncs after the sale.

1.1 What happens at the booth

Loyverse iPadCash / card / DuitNow
loyverse:syncevery 15 min
loyverse_receipts+ items, raw JSON
App orderssource=loyverse
gg_orders / Sheetsevent P&L, stock

There is no coded “expo vs standing store” mode. Staff create an event_lists row (expo EV0077, warehouse sale, or walk-in such as WALK-IN-01 in receipt-PDF tooling). The cashier is bound to that event for the calendar day.

1.2 What the till sells

Loyverse category9981 treatmentFTEG POS implication
Bottles SKU map → gg_inventory_logs (FIFO). Internal codes like TAT-YUZ-720. Stock-tracked. Later may issue via YMSB ERP channel API.
Cocktails / F&B SKU map → gg_cocktail_inventory. Highballs, chu-hi, shots, OTR 90ml pours. POS revenue. Glass is not a bottle deduction unless mapped to an OTR SKU.
Bundles / gift packs One Loyverse SKU expands via product_bundle. Need bundle lines on the receipt snapshot.
Gachapon RM99 Fixed POS SKU 10137 / GAC-RM99. Prize assigned later in BO. Till sells the placeholder. Allocation is a BO screen, not checkout.
Modifiers Stored on line_modifiers. Not used for SKU or price split. Show/store if Loyverse sends them; do not invent recipe logic.

1.3 Pay methods 9981 already records

Loyverse type / name9981 channelFTEG POS (P2)
CASHcashTender + change. Real money math.
NONINTEGRATEDCARD / CARD / Visa…terminal_gatewayStaff taps “Card received” after the terminal. not captured
DuitNow / e-wallet / QR / OCBCbank_transferStaff taps “QR / DuitNow received”. not verified

9981 prefers payments[].name (e.g. “Duit Now ewallet”) over the generic API type (often OTHER).

1.4 Identity, loyalty, luckydraw

1.5 Refunds, cancel, stock

1.6 9981 admin screens (after the sale)

Permission loyverse-pos. These are sync/audit tools, not a till.

9981 screenURIFTEG POS equivalent
Receipts / items/loyverse-receiptsBO Transactions + reprint
Customers / items / categories / employees / payment types/loyverse-*BO catalog, staff, pay methods
Sales summary/loyverse-sales-summaryBO reports
Export / push Google Sheets/loyverse-export, /loyverse-push-sheetsCSV export + later ERP issue — not a second Sheets master
Receipt PDFs/loyverse-receipt-csvTill reprint + BO PDF
Gachapon allocations/loyverse-gachapon-allocationsBO Gachapon (P4, 9981-only)
Cashier Event Binding/loyverse-employee-event-bindingsShift open → choose event / sale type
Event List P&LEvent moduleStays in 9981 / ERP. POS only tags event_id.

1.7 Hardware we can prove vs guess

FactSource
Till described as Loyverse iPadYuzu sales-channel doc only
At least one POS device nicknamed “Cocktails”config/loyverse.php pos_device_names
Thermal receipt exists as a PDF download, not ESC/POSloyverse.receipt_thermal
Printer / drawer modelsunknown — D3/D4

2. Screen inventory

IDScreenWhoTrackPurpose
T0Sign-inAllP1Staff PIN / password. Rate-limited.
T1Open shiftCashier+P2Opening float + event / sale type (replaces cashier-event binding).
T2RegisterCashier+P2Categories, search/SKU, grid, cart, hold.
T3Line editCashier+P2Qty, note, variant. Modifier if present.
T4DiscountManager+P4Authorized % or amount. Audit.
T5Guest / memberCashier+P4Find by phone (preferred) or name. Attach only with phone / email / member id — never name alone. Default = walk-in.
T6PayCashier+P2Cash / Card received / DuitNow received.
T7Cash tenderCashier+P2Amount given, change due, confirm.
T8ReceiptCashier+P2Done, reprint. Print = later (P5).
T9Held ordersCashier+P2Park / recall same register.
T10Sales historyCashier+P2Today’s sales, status, reprint.
T11RefundManager+P4Linked refund. Confirm. Stock rule explicit.
T12Close shiftCashier+P2Expected vs counted, pay-in/out, discrepancy.
B1BO homeManager+P2Today totals, open shift, sync status.
B2CatalogManager+P1Categories, products, barcodes. Fixture until migrate.
B3TransactionsManager+P2Search, imported vs native label.
B4Shifts / reportsManager+P2Cash, card recorded, DuitNow recorded. CSV.
B5Inventory ledgerManager+P4Movements. No historical replay.
B6Staff & outletsOwnerP1Roles, outlet access.
B7MigrationOwnerP3Preview, dry-run, recon.
B8GachaponManagerP49981-only. Assign prize after RM99 sale.

Offline banner, printer status, and kitchen tickets are P5 — not mocked as working.

3. Screen flows

F1 — Happy path (must work in P2)

T0Sign-in
T1Open shift + event
T2Tap products
T6Pay
T7Cash + change
T8Receipt
T2Next guest

Idempotency: Pay confirm is one write. Double tap returns the same sale.

F2 — Card or DuitNow (recorded)

T2Cart
T6Card / DuitNow
Confirm“Terminal / QR done?”
T8Receipt · method recorded

No provider callback in P2. Status = recorded_external, not captured.

F3 — Hold (busy booth)

T2Partial cart
T9Hold
T2New guest
T9Recall
T6Pay

F4 — Refund (P4)

T10Find sale
T11Manager PIN
T11Full / partial
T8Refund receipt

Imported Loyverse sales stay read-only until D12 is answered. Native sales only in first refunds.

F5 — Close of day

T12Count cash
T12Expected vs counted
B4Shift report
9981 Event ListP&L still there in P2

F6 — Find member (P4)

T2Guest
T5Phone or name
Pick rowmust have phone/id
T2Cart shows member
T6Pay

Name search is for disambiguation only (two fixture “Kim”s). Attach is blocked until a row with phone or member id is selected. Try mock queries 0123456001 or Kim.

F7 — Gachapon (9981, P4)

T2Sell GAC-RM99
T8Receipt
B8Assign prize later

Do not pick the prize on the till. Matches today’s Loyverse + BO allocation.

4. Clickable mocks

Use the chips to walk the till. Fixture catalog only. Layout is iPad-landscape, touch-first, 9981-provisional amber + teal.

FTEG POS · 9981Yuzu demo · online Asia/Kuala_Lumpur · MYR · mock
9981YUZURegister 1 · Demo outlet

Staff sign-in

Cashier PIN

123456789C0

Rate-limited. Roles: owner / manager / cashier.

9981YUZUKim · cashier

Open shift

Replaces Loyverse cashier ↔ event binding for this day.

Event / sale type
FIXTURE · Demo Expo Booth
Opening float
RM 300.00
9981YUZU Shift open · Demo Expo Booth · online Search / scan SKU
Demo Yuzu HighballFIXTURE · RM 18.00
Demo Ume SodaFIXTURE · RM 16.00
Demo Peach HighballFIXTURE · RM 18.00
Demo ShotFIXTURE · RM 12.00
Demo Gacha RM99FIXTURE · allocate in BO
Demo Gift packFIXTURE bundle
Walk-in · tap Guest to find member
Demo Yuzu Highball × 236.00
Demo Shot × 112.00
Items3
Discount0.00
Total48.00
9981YUZULine · Demo Yuzu Highball

Edit line

Qty
2
9981YUZUManager PIN required

Authorized discount

Audit log. Rounding rule still unset (D8). Mock only.

9981YUZUFind member · fixture directory

Guest

Search phone (best) or name. Attach needs phone / email / member id — name alone is not enough.

Try 0123456001 or name Kim (two people).

9981YUZUNew member · phone required

Add member

Name without phone cannot be saved. This is a fixture form — not a live CRM write.

9981YUZUCharge RM 48.00
CashTender + change
CardRecord after terminal — not captured
DuitNow / QRRecord after guest pays — not verified
BackCart unchanged
9981YUZUCard · recorded external

Terminal done?

Staff confirms after the guest pays on the physical terminal. FTEG POS does not capture the card.

Amount
RM 48.00
9981YUZUDuitNow · recorded external

QR / DuitNow done?

Staff confirms after the guest pays. Not verified against the bank in P2.

Amount
RM 48.00
9981YUZUCash tender

Due

RM 48.00

Given RM 50.00

Change RM 2.00
102050100C
9981YUZUSale completed · R-DEMO-10041
9981YUZU · DEMO
Demo Expo Booth
--------------------------------
Demo Yuzu Highball 2 36.00
Demo Shot 1 12.00
--------------------------------
TOTAL 48.00
CASH 50.00
CHANGE 2.00
--------------------------------
Walk-in · no points
FIXTURE receipt

Printer unproven (P5). Screen + PDF first.

9981YUZUHeld on this register
Hold #2 · 2 items · RM 36.00Parked 2 min ago
Hold #1 · 1 item · RM 99.00Gacha placeholder
9981YUZUToday · this register
R-DEMO-10041 · RM 48.00 · cashCompleted · native
LV-4-11001 · RM 18.00 · cashImported · read-only
9981YUZUManager action

Refund R-DEMO-10041

Full RM 48.00
Partial — pick lines

Imported Loyverse rows cannot be refunded here until D12.

9981YUZUClose shift
Opening float300.00
Cash sales48.00
Card recorded0.00
Expected cash348.00
Counted
RM 348.00
Discrepancy 0.00
HomeCatalogSalesShiftsInventoryStaffMigration
Today salesRM 48.00
Receipts1 native
Imported (read-only)0
Open shiftclosed

BO reports use KL business day. Imported Loyverse rows stay labelled. Event P&L remains in 9981 Event List during P2.

Mock catalog is fictional. Real 9981 SKUs enter via migration (P3) or a supplied item list — not by typing production names into demo tiles.

5. What we will and will not copy from Loyverse

CopyChangeDrop / later
Fast category grid, barcode, cash change, receipt reprint, shift float Event chosen on open shift (not a hidden cashier UUID binding) Loyverse cloud printers until hardware is listed
Walk-in default; find by phone or name, attach only with phone/id Payments labelled recorded vs captured Loyverse points as 9981 loyalty
Gachapon sold as a placeholder SKU Integer sen, line snapshots, idempotent pay Google Sheets as the POS stock master
Bottle vs cocktail split Migration with recon, not silent sync Recipe / kitchen printer until confirmed