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 / Q-2026-031

Q-2026-031

Quote · TSL Health · Sleep Gummies (3 SKUs)
Sent R&D Valid until 2026-08-04 (30 days) Follow-up 2026-07-09
Mark accepted → SO
Customer
TSL Health · series TSLSB
Customer ref
TSL-RFQ-0087 printed on the quote PDF
Requested delivery
2026-09-01 lead time ~3 weeks — fits
Currency
MYR · base — no FX snapshot needed
Created
2026-07-01 by Kevin Wong
Sent
2026-07-05 → valid until 2026-08-04
CRM deal
Sleep gummies OEM 3 SKUs stage Quoted · Kevin
R&D request
RND-2026-00009 Confirmed · cost from F-0009 v2
Bill to
TSL Health Sdn Bhd 18, Jalan Molek 1/9, Taman Molek, 81100 Johor Bahru, Johor
Ship to
TSL Health DC 5, Jalan Firma 2, Kawasan Perindustrian Tebrau IV, 81100 Johor Bahru, Johor

Tier lines

Sleep Gummy Mg+GABA — F-0009 v2 · 3 SKUs (Original / Blackcurrant / Peach), same tier price across SKUs
# Qty tier Unit price Tax Line total (tax excluded)
1 1,000 pcs 9.60 MYR 5% - Sales Tax 9,600.00 MYR
2 5,000 pcs 9.20 MYR 5% - Sales Tax 46,000.00 MYR customer-indicated volume
3 10,000 pcs 9.00 MYR 5% - Sales Tax 90,000.00 MYR
Subtotal (tax excluded) — at the 5,000-pc tier 46,000.00 MYR
Shipping fee — lorry, Balakong → Tebrau JB, 3 pallets · taxed 5% - Sales Tax 450.00 MYR
Plus tax (5% - Sales Tax) 2,322.50 MYR
Total — 5,000-pc tier 48,772.50 MYR = subtotal + shipping + tax
Per accepted tier: totals recompute for whichever tier the customer accepts — 1,000 pcs → 10,552.50 · 5,000 pcs → 48,772.50 · 10,000 pcs → 94,972.50 MYR (each = subtotal + 450.00 shipping + 5% tax). "Mark accepted" asks which tier and carries lines, prices and the shipping fee onto the one-click SO.

Source

R&D custom formula — skipped the auto-quote machine
RND-2026-00009 · Confirmed F-0009 v2 · Sleep Gummy Mg+GABA — cost estimate Q-2026-031 · Sent SO TSLSB-{seq} (on accept)
R&D-sourced quotes snapshot their cost from the linked formulation estimate at quote time (owner-only margin column derives from it); auto quotes snapshot the rolled-up BOM cost instead. Floor-price enforcement applies to both — always compared in base MYR.

Notes

customer-facing — printed on the quote PDF

Prices are per pc, identical across the 3 SKUs at the same combined volume. MOQ 1,000 pcs per SKU; artwork and labeling files per SKU to be supplied by TSL Health before production. Halal-certified ingredients, CoA per FG batch.

Lead time ~3 weeks from PO and artwork approval, read from the open MO schedule at quote time.

Project Gaia — static mockup in Filament v3 idiom. No backend. Q-2026-031 matches the Quotes register, the TSL Health deal in crm.html (follow-up 2026-07-09) and the confirmed RND-2026-00009 request; addresses, customer ref, shipping fee and the 1,000-pc tier are illustrative.

Quote detail — field manifest

Filament QuoteResource ViewRecord page: Infolist (key facts) + header Actions (Send again / Mark accepted / Mark declined) + TierLinesRelationManager (quote_lines) + Source ViewEntry + Notes RichEditor.

FieldFilament componentTypeSourceFK target
Quote #TextEntry (title)stringstored: quotes.quote_no — Q-{yyyy}-{seq} series (admin-settings numbering)
CustomerTextEntry::url()FKstored: quotes.customer_id — SO series prefix (TSLSB) comes from the customercustomers.id
Customer refTextInputstring, nullablestored: quotes.customer_ref — printed on the quote PDF (TSL-RFQ-0087)
Requested delivery dateDatePickerdate, nullablestored: quotes.requested_delivery_date — engine flags when MO-schedule lead time exceeds it (fits here: ~3 weeks < 2026-09-01)
Currency / FXSelect + snapshot TextEntrystring + decimalstored: quotes.currency (default base MYR) + quotes.exchange_rate snapshotted at quote time — floor-price comparison always in base MYR
Bill to / Ship toTextEntry ×2 / Select::relationship on editFK ×2, nullablestored: quotes.billing_address_id / shipping_address_id — carried onto the SO on acceptancecustomer_addresses.id
StatusTextEntry::badge() + header Actionsenumstored: draft → awaiting_rnd → sent → accepted / declined / expired; quotes.sent_at set by Send
Valid untilTextEntry::date()datestored: quotes.valid_until = sent_at + 30 days; nightly job flips sent → expired past it
SourceBadge + ViewEntry flowenumstored: quotes.source (auto | rnd); rnd links a quote_requests row → RND request + formulation reply (RND-2026-00009 → F-0009 v2)quote_requests / formulations.id
Tier linesTierLinesRelationManager / Repeater on editrowsstored: quote_lines — one row per tier (quote_id, qty_tier, unit_price, margin_pct owner-only from the cost snapshot)quotes.id
Line: TaxSelect per tier lineFKstored: quote_lines.tax_rate_id — default '5% - Sales Tax', same tax_rates table as SOtax_rates.id
Add tierRepeater add-item modalinsertinsert: quote_lines (quote_id, qty_tier, unit_price, tax_rate_id); per-tier totals in the tfoot recompute (= subtotal + 450.00 shipping + 5% tax). Below historical-band prices are allowed above floor but flagged for review on the register.quotes.id / tax_rates.id
Shipping feeTextInput group (tfoot row)string / money / FKstored: quotes.shipping_fee_description / shipping_fee_amount / shipping_fee_tax_rate_id — carried onto the one-click SO on acceptancetax_rates.id
TotalsViewEntry (per-tier)derivedderived: accepted-tier total = subtotal (tax excluded) + shipping fee + tax — recomputed per tier, snapshotted on acceptance
NotesRichEditorrich text, nullablestored: quotes.notes — customer-facing, on the quote PDF (distinct from the internal per-row note on the register)
CRM dealTextEntry::url()FKstored: quotes.deal_id — sent → Quoted, accepted → Won, declined → Lostdeals.id
Actionsheader Actions (requiresConfirmation)Send again (re-issues PDF, validity unchanged) · Mark accepted (pick tier → creates SO in the customer series with lines + shipping carried over) · Mark declinedsales_orders

Engine notes

  • Totals: accepted-tier total = subtotal (tax excluded) + shipping fee + tax — the same formula as the SO it becomes; the shipping fee and tax rates are carried over unchanged.
  • Floor enforcement: every tier price ≥ floor from the shared variant_prices table, compared in base MYR after the FX snapshot (export customers exist in Gaia's own data).
  • R&D provenance: this quote's cost basis is the F-0009 v2 estimate that answered RND-2026-00009; the owner-only margin_pct column derives from that snapshot, not from live cost.
  • Acceptance: Mark accepted asks which tier, then creates the SO in the customer's series (TSLSB) with qty, price, tax, shipping fee, addresses and customer ref carried over; the deal flips to Won.
  • Expiry: nightly job flips sent → expired past valid_until (2026-08-04); an expired quote is re-quoted at current cost, never resent stale.

Send again — Q-2026-031

Attachment
Q-2026-031.pdf · 2 pages

Re-send does NOT reset validity — still valid until 2026-08-04.

Add tier — Q-2026-031

Line total (tax excluded) 176,000.00 MYR · margin 41% (owner-only, from the F-0009 v2 cost snapshot)

8.80 is below TSL Health’s historical band 9.00 – 9.60 — allowed (above floor), flagged for review on the register.