Module {{ num }}
{{ title }}
{{ subtitle }}
{{ c.v }}
{{ c.k }}
{{ c.d }}
Module status
Scoped to role 2
MODULE {{ t.num }}
{{ t.label }}
{{ t.sub }}
{{ r.k }}
{{ r.v }}
1
{{ t.exception }}
Tenant
3
vortxlab
Region Singapore
Currency SGD — set at setup, read-only
GST {{ taxTxt }}
All money in numeric/Decimal, never float
PDF source specification
{{ sourceUseCase }}
Actors
Required flow
{{ f.n }}
{{ f.text }}
Business process details
{{ b.group }}
{{ item }}
Developer requirements
{{ t }}
Vendor procurement cycle · PO-20419
PO generated
Stock trigger · reorder point 400
Officer approves
Current step · awaiting D. Rahim
Invoices tracked
Vendor · delivery · clearing · local
Payment triggered
On full invoice validation
Receipt emailed
After gateway confirms
Purchase orders
1| PO | Vendor | Trigger SKU | Qty | Value | Status |
|---|---|---|---|---|---|
| {{ p.id }} | {{ p.vendor }} | {{ p.sku }} | {{ p.qty }} | {{ p.val }} | {{ p.st }} |
PO-20404 · Shipment SHP-2419
Invoice tracking
3
{{ i.t }}
{{ i.party }} · {{ i.ref }}
{{ i.amt }}
Validated total
{{ invTotal }}
4
Enabled — the complete invoice set is validated
PO-20415 · partial data
Vendor, shipment delivery, and clearing invoices validated. Local logistics invoice not received — payment workflow blocked and landed cost withheld.
Approval
2Contracts, billing & space
1 2
{{ w.id }}
{{ w.name }}
Rent{{ w.rent }}
Cycle{{ w.cycle }}
Next bill{{ w.next }}
Payment{{ w.payment }}
Holding{{ w.skus }}
SKU-to-volume{{ w.used }} / {{ w.cap }} cbm
{{ w.pct }} utilised
Near block threshold (98%)
Loading manifest · MFT-3312
Matched to SHP-2419 · DC-01
| Bay | SKU | Description | Ctns | cbm |
|---|---|---|---|---|
| {{ m.bay }} | {{ m.sku }} | {{ m.desc }} | {{ m.ctn }} | {{ m.cbm }} |
Picked in bay order · total {{ manifestCbm }} cbm
Dispatch timeline · today
4
{{ d.slot }}
{{ d.prov }}
{{ d.dock }} · exclusive slot
{{ d.st }}
{{ d.st }}
Assigning a provider to an occupied dock slot returns 409 and surfaces the conflicting manifest — the UI never reassigns silently.
Shipment SHP-2419
Landed cost aggregation
{{ i.t }}{{ i.ref }}
{{ i.amt }}
Total shipment cost
{{ invTotal }}
Total items
{{ itemCount }}
Unit landed cost
2
{{ unitCost }}
Total ÷ items, distributed equally. Stored numeric(18,6) — six decimals carried, rounded only at display.
Pricing rules
3 40%80%
Resolution order: SKU margin → category margin → global margin.
Stored figures are tax-exclusive plus a separate tax amount.
Resolved shelf prices
Live · margin {{ marginTxt }}| SKU | Description | Qty | Landed unit | Margin | Net | GST | Shelf price | Extended |
|---|---|---|---|---|---|---|---|---|
| {{ r.sku }} | {{ r.name }} | {{ r.qty }} | {{ r.landed }} |
{{ r.marginTxt }}
|
{{ r.net }} | {{ r.tax }} | {{ r.shelf }} | {{ r.ext }} |
Promotions & bundling
5
{{ p.name }}
Active
Scheduled
{{ p.scope }}
{{ p.rule }}
Valid until {{ p.until }} · jsonb rule, evaluated at cart time
Drag a card to move stage. Forward moves only — Delivered may go back to Refund requested; signed-off orders are immutable.
1
9 stages · scroll →
{{ c.l }}
{{ c.n }}
Allocation2
On confirm, order lines map to the nearest warehouse holding free stock and soft-reserve it for 30 minutes.
Proof of delivery3
At least one artefact — signature or photo. Open any order to see the capture panel.
Sign-off locks accounting4
Delivered + signed off makes the order and its accounting rows immutable at the database level.
Loyalty5
Points accrue on sign-off, not dispatch — one ledger row per order.
Bank feed sync failed2
Statement pull for 12 Aug returned 503. Last successful sync 11 Aug 23:40 — existing matches are intact and the period stays open.
Reconciliation · POS ↔ bank statement
1 Auto-confirm ≥ 0.92| POS transaction | Order | Direction | Amount | Date | Bank line | Reference | Status |
|---|---|---|---|---|---|---|---|
| {{ t.id }} | {{ t.order }} | {{ t.direction }} | {{ t.amt }} | {{ t.date }} | {{ t.bank }} | {{ t.bref }} |
|
Tax automation · period Aug 2026
3
{{ r.k }}{{ r.n }}
{{ r.v }}
Net GST payable
{{ taxNet }}
Refund queue
4| Refund | Order | Amount | Reason | Status |
|---|---|---|---|---|
| {{ r.id }} | {{ r.order }} | {{ r.amt }} | {{ r.reason }} | {{ r.st }} |
1 · Validate order status
2 · Gateway refund
3 · Inventory restock
4 · Reversing tax entry
All four steps run in one transaction — a partial refund must never leave stock un-restocked.
Actions & labels
Awaiting approval
Approved
Paid
Blocked
7
spec pin
Inputs
State inventory
No invoices attached
Landed cost cannot be computed until at least the vendor invoice is attached to SHP-2419.
Sync error · 503
Could not load shipment costs
The costing service did not respond. Last known figures are shown elsewhere as stale and the period stays open.
SHP-2419 · locked
Immutable
{{ unitCost }}
Order signed off 11 Aug. Accounting rows are locked at the database level — corrections require a reversing entry.
SHP-2422 · invoice set incomplete
Partial data
—
Unit cost withheld rather than shown provisionally. Missing: local logistics invoice from Tuas Haulage Pte.
SHP-2419 · costed
All invoices validated
{{ unitCost }}
Unit landed cost from {{ invTotal }} across {{ itemCount }} items. Pricing rules may now resolve shelf prices.
Composite objects
KPI cell
12
Open POs
Order card (draggable)
ORD-4906S$6,480.00
Meridian Retail
Jurong East · DC-01 · 120 units
Utilisation bar
2,840 / 3,600 cbm · 79%
Money cell (Decimal)
{{ unitCost }}
numeric(18,6), right-aligned, tabular figures
Dialog
Trigger payment to Shenzhen Kaidi?
The complete invoice set on SHP-2419 is validated. {{ invTotal }} will be sent through the payment gateway, logged, and followed by an emailed vendor receipt.
Developer notes
Pins on this screen
{{ p.n }}
{{ p.t }}
{{ p.d }}
Data model · this screen
{{ s.name }}
{{ s.def }}
PostgreSQL, relational for money and stock (ACID). Flexible rule shapes in jsonb. All monetary columns numeric, never float.