New quote
will post as Q-2026-035 · Q-{yyyy}-{seq} series (admin-settings numbering)1 · Customer & request
customer_id nullable for walk-ins — converts to a record on acceptance. + New customer opens Customers.
engine flags when MO-schedule lead time (~3 weeks) exceeds it — fits
foreign currency snapshots quotes.exchange_rate; floor compare always in base MYR.
2 · Source & product
standard product + packaging → machine; anything custom routes to the R&D queue.
3 · Tier lines
machine-priced by qty break — editable within band| Qty tier | Unit price MYR | Margin % | Tax | Line total MYR | |
|---|---|---|---|---|---|
|
pcs
|
All tiers ≥ floor 5.00 — the machine never quotes below floor
Margin column is owner role only — hidden from sales. Valid 30 days from send → valid_until = sent_at + 30; nightly job flips sent → expired.
4 · Shipping & notes
The shipping trio is carried onto the one-click SO on acceptance.
Project Gaia — static mockup in Filament v3 idiom. No backend. Q-2026-035 is the Draft row in quotes.html (Hafiz Trading, Double Root, 1k/5k/10k @ 8.00/7.20/6.60) prefilled from the auto-quote machine result; costs, floors and margin bands echo price-lists.html / item-detail.html.