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&DMakeBuyStockPlanItemsGMPAdminInsights

Price lists

How pricing works in Gaia: every product has a list price and a floor price. On any sale (OEM SO or Retail), the line auto-fills the last price this customer paid; the band ever sold is shown next to it. Staff cannot go below floor — it locks the line and requests owner approval.
Floor & list prices — owner-editable only
Product Current cost Floor price List price Margin @ floor Updated
Customer price memory — what each customer actually paid; auto-fills their next order
Customer Product Last paid Band (min–max) Orders Last order Flag

Project Gaia — static mockup in Filament v3 idiom. No backend. Prices illustrative except the Double Root RM 5–8 band, which is the founder's real example. The BELOW FLOOR row shows the flag staff can't clear without owner approval.

Product price

Aiternanthere Sessillis Tea Bag

Not saved
Owner-editable only — staff see prices everywhere but cannot change floors (Filament policy; TextInputColumn hidden for non-owner).

variant_prices has one row per variant (UNIQUE).

Current cost

1.10 MYR — live rolled-up BOM + operations · view item

Read-only — not stored here; the snapshot happens at quote / SO time.

MYR

Hard lock: any OEM SO or Retail line below this locks and pings the owner — the Double Root floor 5.00 / list 8.00 row above is the founder's canonical example.

MYR

SO NVMSB-0309 line 4 sells at 2.80 = list ✓

Margin @ floor = (2.00 − 1.10) / 2.00 = 45%

Recomputes live from cost + floor. Rendered amber when < 25% (cf. Kopi Cik Abang's 20% in the table above).

Updated 2026-07-07 · Leo Lim (owner)

Price lists — field manifest

FieldFilament componentTypeSourceFK target
Floor / List priceTextInputColumn (owner role only)moneystored: variant_prices (variant_id UNIQUE, floor_price, list_price, updated_by, updated_at)variants.id · users.id
Last paidTextColumnmoneyderived: latest so_line / retail_sale_line for (customer, variant)so_lines
BandTextColumnmoney rangederived: min/max over sale history
FlagBadgederivedBELOW FLOOR when any historical price < floor; at-floor warning

Engine notes

  • Sale lines auto-fill last-paid for the customer+product; placeholder shows the band and floor.
  • Price < floor locks the line and creates an approval request (Filament action + notification to owner). Staff literally cannot confirm it.
  • The + Product price slide-over inserts one variant_prices row (variant_id UNIQUE) — options are variants without a price row yet; floor drives the below-floor line locks + approval_requests.
  • Customer price memory stays derived from sale history — this form never edits it.
  • No separate price-list documents v1 — the memory IS the price list. Formal per-customer contracted lists can layer on later using the same table.