Insights reads the nightly snapshot, not the live DB — figures can trail today's operations by up to a day.
July sales (MTD, MYR)
3,846.50
+6.9% vs Jun 1–9
June consolidation
✓ Posted
rolled into wholesale SO on Jul 1
Open consolidation (MYR)
998.00
July lines not yet posted (excl. B2B)
Active customers
5
ordered in the last 90 days
Owing (unpaid)
1,337.40
2 customers — Retail → CRM
Monthly retail sales
MYR per month, Mar–Jul 2026 · July is month-to-date (9 days)
July already at 91% of June after just over a week — Aunty Mei's twice-weekly Double Root restocks plus Herbs & Health PJ's 1,080.00 STC30 order on Jul 3.
Payment mix
how the 16,494.80 MYR of Mar–Jul retail sales was settled, at snapshot — three chips, honest for 5 customers
Cash
5,263.50
31.9%
Transfer
9,893.90
60.0%
Unpaid
1,337.40
8.1%
Unpaid equals the current owing balance (Herbs & Health PJ + Farmasi Seri Taming) — it clears as they pay, independent of month-end consolidation.
Counter vs Shopee — July (MTD)
NVMSB counter sales (this module) vs the Shopee monthly channel entry on Retail → Sales
Counter3,846.5029.4%
Shopee9,240.0070.6%
Combined 13,086.50 MYR
Shopee is a monthly consolidated channel entry — no per-customer detail, no customer record; excluded from the B2C e-invoice consolidation since the marketplace issues its own.
Customer book — Mar–Jul— ranked by revenue · cadence = median gap between orders · DUE TO REORDER when silent > 1.5× cadence
Customer
Orders
Revenue (MYR)
Avg price vs floor
Cadence
Last order
Status
Aunty Mei — Restoran Mei Kee
22
6,000.00
+8%
every ~7 d
2026-07-09
Best payer — always cash
Herbs & Health PJ
5
4,850.00
+5%
every ~30 d
2026-07-03
Owing 1,080.00 — due 17 Jul
Kedai Pak Din
11
3,200.00
−3%
every ~10 d
2026-07-09
Below floor — owner notified (soft floor)
Coach Rizal (gym)
4
1,244.80
+10%
every ~30 d
2026-06-05 · 34 d ago
DUE TO REORDER
Farmasi Seri Taming
8
1,200.00
+3%
every ~21 d
2026-06-10 · 29 d ago
DUE TO REORDER · owing 257.40 (overdue)
5 customers
50
16,494.80
+5% avg
Project Gaia — static mockup in Filament v3 idiom. No backend. Figures reconcile to the seeded dataset (July MTD sales 3,846.50 MYR · owing/unpaid 1,337.40 · June posted); Mar–Jun monthly totals are illustrative. Retail = NVMSB only; Shopee is a separate monthly channel entry (see Retail → Sales).
Retail insights — field manifest
Widget
Source query (in words)
July sales tile
fact_retail_sales (built from retail_sale_lines): sum of line totals in the current calendar month at the 02:00 cut; delta compares the same day-span of the prior month.
Consolidation tiles
consolidation runs — June's batch was posted into a wholesale SO on Jul 1 (✓); open = sum of July retail lines not yet consolidated.
Active customers / Owing tiles
dim_customer (retail segment) with a sale in the last 90 days; Owing = running AR balance across all unpaid retail_sales, same figure as Retail (Today strip) and Retail → CRM.
Monthly sales chart
fact_retail_sales grouped by dim_week rolled up to month, Mar–Jul; current month flagged MTD.
Payment mix chips
payment method recorded on each retail sale, summed Mar–Jul; unpaid = the current running AR balance at the cut, not tied to consolidation status.
Counter vs Shopee split
fact_retail_sales (counter/NVMSB) vs channel_entries (channel='shopee') for the current month — the same two figures seeded on Retail → Sales' Shopee card.
Customer book table
dim_customer × fact_retail_sales: order count, revenue, average unit price vs the item price floor, median days between orders; DUE TO REORDER when days since last order exceed 1.5× that median.
Engine notes
Insights is a nightly materialized star-schema snapshot — rebuilt 02:00, published 08:00. Fact tables are built from so_lines / retail_sale_lines / stock_movements / machine_usage_logs / maintenance_logs; dims: dim_customer, dim_item, dim_category, dim_site, dim_week. Pages read the snapshot, never the live operational DB.
Filament: custom Livewire pages with hand-rolled Blade/SVG chart components — NOT Resources. Read-only; "Refresh now" queues a re-materialization of this module's facts only, and charts hold the previous render at reduced opacity while it runs.
No new operational tables: Insights owns only its snapshot schema (insights_* tables), dropped and rebuilt nightly. Reorder flags and below-floor approvals link back to the Retail CRM screens for action.