G Gaia

Switch factory

CYTO-11 — Balakong Jaya CTSB CYTO-29 CTSB CYTOWELL-54 — Taming Jaya PIC/S CTWSB CYTOCNGZ-602 — Guangzhou CTCNGZ

Only factories you are granted appear here (Filament tenant menu).

Leo Lim

leo@navi.my · Owner / Admin

Profile settings Change password

Theme

Sign out
RetailSellR&DMakeBuyStockPlanItemsGMPOpsAdminInsights
← Customers / Yes Global

Yes Global

Yes Global (M) Sdn Bhd
Vincent Yap · Bandar Puteri, Puchong · Selangor · vincent@yesglobal.my
OEM customer YGMSB order series Portal user MYR 5% default discount

Open SO value

170,000 MYR

2 open orders

Σ not-yet-delivered SO totals

Delivered — all-time

468,000 MYR

9 orders since 2024

delivered SO totals

Owing

74,000 MYR

1 invoice unpaid

Σ invoiced − paid (QuickBooks flag)

Active orders

2

in production · in delivery

SOs not yet delivered

Avg cycle time

31 days

enquiry → delivered

mean over delivered orders

Live orders

this customer's current + most recent orders All sales orders →
Order # Product Stage Days running Value

Days running = today − SO created (or cycle time for delivered). YGMSB-260401 is past its production deadline — see the overdue MO on the make schedule.

Timeline · newest first

derived — deals · quotes · sales orders · production · shipments
Filter by order:

One read-only feed unioning this customer's deal activities, quote sent/accepted, SO created, production milestones and shipment events — every row links back to its source record. Use Filter by order to narrow the feed to a single sales order (or the pre-SO deal). Retail (B2C) activity is intentionally excluded — this is the OEM view.

Project Gaia — static mockup in Filament v3 idiom. No backend. Yes Global (Vincent Yap) is the worked OEM customer across the Gaia mockups (CRM deal, quote Q-2026-018, portal). YGMSB-260401 / 1 overdue MO is a real snapshot figure; other order values and dates are illustrative but internally consistent.

Customer detail — field manifest

Filament CustomerResource ViewRecord page: Infolist (identity + KPI stat tiles) + RelationManagers (sales orders) + a derived ViewEntry timeline. Everything below aggregates by customer_id — no per-customer table of its own.

FieldFilament componentTypeSourceFK target
IdentityInfolist header (TextEntry ×N)stringsstored: customers.display_name / company_name / first_name+last_name / email / currency / discount_percent — same row the Customers list showscustomers.id
OEM tagsBadge rowenum / flagsstored: customers.category (OEM) + reference_id series (YGMSB) + portal_enabled flag — channel enum scopes this to the OEM view (retail excluded)
Open SO valueStat tileDERIVED moneyderived: Σ sales_orders.total WHERE customer_id = this AND delivery_status ≠ deliveredsales_orders
Delivered (all-time)Stat tileDERIVED moneyderived: Σ sales_orders.total WHERE customer_id = this AND delivery_status = deliveredsales_orders
OwingStat tileDERIVED moneyderived: Σ invoiced − Σ paid across this customer's orders — invoice_status is a flag only (accounting lives in QuickBooks); "owing" is the unpaid-invoiced totalsales_orders
Active ordersStat tileDERIVED countderived: COUNT sales_orders WHERE customer_id = this AND delivery_status ≠ deliveredsales_orders
Avg cycle timeStat tileDERIVED daysderived: mean of the per-order journey (enquiry → delivered) across this customer's delivered orders — same day-elapsed metric as the SO Order journey railreads across deals / sales_orders / shipments
Live ordersSalesOrdersRelationManager (scoped table)rowsstored: sales_orders WHERE customer_id = this; Stage = derived production/delivery chip; Days running = today − created_at (or cycle time when delivered)sales_orders.id
TimelineViewEntry timeline (read-only feed)DERIVED child rowsDERIVED — no new table: unions deal_activities + quotes.sent_at/accepted_at + sales_orders.created_at + mos/bmr milestones + shipment_events for every order of this customer, newest first; each row links its source recordreads across deals / quotes / sales_orders / mos / shipments

Engine notes

  • Nothing here is a new table: the page aggregates by customer_id across deals, quotes, sales_orders, shipments and deal_activities — the customer card (the Customers slide-over) stays the write surface; this is the read/analytics surface.
  • Owing = Σ unpaid: invoice_status is a QuickBooks-synced flag, so "owing" is the invoiced-but-unpaid total, not an AR ledger inside Gaia.
  • Cycle time is reused from the SO Order journey (days elapsed between stamped hops); the customer KPI is the mean over delivered orders.
  • Retail is intentionally excluded. customers is one shared table (channel enum oem/retail/both); this OEM view scopes to sales_orders + OEM shipments only — no retail_sales, no retail deliveries.
  • The Timeline is read-only and derived — like the deal diary and the R&D status history, it can be rebuilt from the source rows at any time; it is never written to directly.