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

Quotes

+ New quote
7 quotes · 89% answered instantly by the machine this quarter · 2 via R&D
Quote # Customer Product Qty tiers Unit price by tier MYR Source Status Valid until CRM deal
Auto-quote — answers the standard 90% instantly no waiting, no R&D standard product + standard packaging → price now; anything custom → R&D queue below
pcs

Price memory: Yes Global last paid 10.20 · band 9.80 – 11.00 (price lists)

Anything the rules can’t answer — new formula, custom packaging, target price below floor — becomes an R&D request instead of a guess.

Instant result computed in < 1 s

Current rolled-up cost 4.63 MYR / unit — live from BOM + operations

Tier Unit price Margin
1,000 pcs12.00 MYR61%
5,000 pcs ← requested10.80 MYR57%
10,000 pcs9.90 MYR53%

All tiers ≥ floor 9.50 — the machine never quotes below floor

MOQ

1,000 pcs

Lead time

~3 weeks MO load

Validity

30 days → 2026-08-06

Create quote PDF
Rules: price = max(floor, current cost × tier margin band for the product’s category) · lead time read from the open production schedule, not a fixed promise · MOQ per category · anything custom skips the machine and goes to the R&D path.
R&D request queue — the ~10% the machine can’t answer 2 open

Guangzhou HealthMart · Q-2026-034

“Sugar-free Zenith variant, target RM 0.45 / serving”

Concept: F-0013 draft — started from the F-0010 sugar-free Zenith base (est 0.41 / serving, under target)

With R&D — Jason since 2026-07-06

Roy KL Trading · Q-2026-033

White-label collagen drink — custom formula

R&D replied: F-0007 v3 est 1.84 / serving → quote drafted & sent 2026-07-04

Flow: request → R&D formulates / estimates (formulations) → cost lands back here → quote drafted → CRM deal moves to Quoted.

Project Gaia — static mockup in Filament v3 idiom. No backend. Costs and floors echo price-lists.html / item-detail.html; Q-2026-031 matches the TSL Health deal in crm.html; F-0007 / F-0013 echo the R&D formulations register.

Quotes — field manifest

FieldFilament componentTypeSourceFK target
Quote #TextColumn::url()stringstored: quotes.quote_no — Q-{yyyy}-{seq} series (admin-settings numbering)
CustomerTextColumn::url()FKstored: quotes.customer_id (nullable for walk-ins pre-conversion)customers.id
Customer refTextInputstring, nullablestored: quotes.customer_ref — printed on the quote PDF
Requested delivery dateDatePickerdate, nullablestored: quotes.requested_delivery_date — engine flags when MO-schedule lead time exceeds it
CurrencySelect + snapshotstring + decimalstored: quotes.currency (default base MYR) + quotes.exchange_rate — rate snapshotted at quote time; floor-price comparison always happens in base MYR
ProductTextColumn::url()FK — one of twostored: quote_lines.variant_id (nullable) OR quote_lines.formulation_version_id (nullable) — exactly one set per line; custom lines point at R&D, standard lines at the cataloguevariants.id / formulation_versions.id
Qty tiers / Unit priceRepeater (form) · TextColumn summary (table)rowsstored: quote_lines — one row per tier (quote_id, qty_tier, unit_price)quotes.id
Line: TaxSelect (per tier line)FKstored: quote_lines.tax_rate_id — default '5% - Sales Tax', same tax_rates table as SOtax_rates.id
Shipping feeTextInput groupstring / money / FKstored: quotes.shipping_fee_description / shipping_fee_amount / shipping_fee_tax_rate_id — carried onto the one-click SO on acceptancetax_rates.id
NotesRichEditorrich text, nullablestored: quotes.notes — customer-facing, on the quote PDF (distinct from the internal per-row note)
Margin %TextColumn (owner role only)derivedquote_lines.margin_pct — computed from cost snapshotted at quote time; hidden from sales role
SourceBadgeenumstored: quotes.source — auto (machine) | rnd (routed through R&D)
StatusBadge; tab filterenumstored: draft → awaiting_rnd → sent → accepted / expired
Valid untilTextColumn::date()datestored: quotes.valid_until — default sent_at + 30 days
CRM dealTextColumn::url()FKstored: quotes.deal_id — quote events push the deal stage (sent → Quoted, accepted → Won)deals.id
R&D requestRelation manager + queue card1:1stored: quote_requests (quote_id, description, target_price, rnd_status queued → with_rnd → cost_received, formulation_id reply)formulations.id
Auto-quote rulesSettings table (owner-editable)configstored: auto_quote_rules (category, tier_bands JSON qty breaks, target_margin_pct per band, moq)categories.id

Engine notes

  • The machine: unit price = max(floor_price, rolled-up cost × margin band for the category tier). Floor comes from the shared variant_prices table — the same enforcement as OEM SOs and Retail. The machine never quotes below floor. Floor-price comparison always happens in base MYR — export customers exist in Gaia's own data, so foreign-currency quotes convert at the snapshotted rate before the check.
  • Totals: accepted-tier total = subtotal (tax excluded) + shipping fee + tax — the same formula as the SO it becomes.
  • 90/10 split: standard variant + standard packaging → instant tiers. Anything else creates a quote_requests row routed to R&D; when the formulation estimate lands, “Draft quote from estimate” pre-fills the quote and the CRM deal moves to Quoted.
  • Lead time is computed from the open MO schedule (make.html), not a static promise.
  • Accepted → one-click SO: lines + prices copied to a sales order in the customer’s series (YGMSB…), deal flips to Won.
  • Expiry is automatic: nightly job flips sent → expired past valid_until; an expired quote is re-quoted at current cost, never resent stale.
  • Send: the machine result's "Send to customer" raises a Filament Action form-modal (To / Cc / Subject / Message + the generated PDF); sending stamps quotes.sent_at, sets valid_until = sent_at + 30 days, flips draft → sent and creates/updates the CRM deal to Quoted.
  • Roles: sales sees prices only; owner sees cost and margin_pct columns too (Filament column visibility by policy).

Send quote — Q-2026-035

Attachment
Q-2026-035.pdf · 2 pages

Sending sets sent_at → valid until 2026-08-06 · status Draft → Sent · creates/updates the CRM deal → Quoted.