Quotes at a glance

Purpose
The quote module records what was promised — making it the joint between selling and delivering.
The move that matters: an accepted quote is not copied out but converted. Fixed-price lines become billable project milestones, effort lines become an hours budget, and the whole becomes an invoice. The quote itself remains as evidence of what was agreed.
Scope
- Six states per quote: draft, sent, accepted, rejected, expired, converted.
- Line items with quantity, unit, unit price, discount and tax rate; a switchable tax display
between net and gross.
- A document currency per quote, brand and owner.
- Texts — introduction and terms — freely written or from reusable text templates, with a default
pre-fill.
- PDF output through the brand's document templates.
- A share link for customers without portal access.
- Portal view: customers with access see their quotes in the customer portal.
- A validity date with its own state, expired — and Renew as the way back: either as a copy
in a new document or with a new deadline in the same one.
- A total of open quotes as a figure across the pipeline.
Interplay
Calculation happens in the commerce core — tax, rounding and amounts in cents follow one place, not the module. Customers come from the customer base, the layout from the document templates, dispatch from communication. Upstream sits the CRM — a won deal produces a quote; downstream sit projects and invoicing.
Limits
- A completed quote is immutable. Subsequent changes arise as a new quote, not as a correction to
the old one.
- The share link performs no check. Whoever holds it sees the quote. For a lasting customer view,
the customer portal is the right route.
- The module does not calculate. Tax logic lives in the core; a special case belongs there, not
here.
- Without a document template and a PDF engine, no document is produced — however complete the
quote is.
- Converting is its own permission. Being allowed to write quotes does not automatically allow
turning them into orders.