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
{{ a }}
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
POVendorTrigger SKUQtyValueStatus
{{ 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

2

Contracts, 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

3
BaySKUDescriptionCtnscbm
{{ 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

1
{{ 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 4
0%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 }}
SKUDescriptionQtyLanded unitMarginNetGSTShelf priceExtended
{{ r.sku }} {{ r.name }} {{ r.qty }} {{ r.landed }} {{ r.marginTxt }} {{ r.source }} {{ r.source }} {{ 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 transactionOrderDirectionAmountDateBank lineReferenceStatus
{{ t.id }} {{ t.order }} {{ t.direction }} {{ t.amt }} {{ t.date }} {{ t.bank }} {{ t.bref }} Matched

Tax automation · period Aug 2026

3
{{ r.k }}{{ r.n }} {{ r.v }}
Net GST payable {{ taxNet }}

Refund queue

4
RefundOrderAmountReasonStatus
{{ 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.
{{ open.stage }}

{{ open.id }}

{{ open.cust }} · {{ open.city }}
Signed off · immutable
Order and accounting rows are locked at the database level. Corrections require a reversing entry, not an edit.
Order & delivery
SKU{{ open.sku }} · {{ open.qty }} units Pick-up{{ open.wh }} · slot 09:30 – 11:00 Deliver to{{ open.city }} · 14 Aug, 13:00 – 17:00 ProviderVelo Last-Mile · TRK-88F2109 Order value{{ open.val }}
Proof of delivery Captured Not captured
Photo artefact
placeholder
object_key · sha256 · captured_at
Signature capture
placeholder
Customer sign-off, device geo when permitted
Delivery Agent action · digital customer proof required before sign-off
POD upload becomes available when the order reaches Delivered.
Loyalty & history
{{ open.points }}points on sign-off {{ open.lifetime }}lifetime value {{ open.purchaseCount }}orders in purchase history
Purchase history: {{ open.purchaseHistory }}. The customer profile is updated with purchase history and loyalty points.

Alerts

{{ n.t }} {{ n.when }}
{{ n.d }}
{{ toast }}