- Shipped
- August 4, 2026 at 9:31 PM UTC
- Author
- Kamo
- Commit
- 2775e20
Quotes were a commerce-pipeline artifact, which put them beside orders and carts rather than beside the client they are for. They now hang off the lead: the market decides whether its leads can carry quotes at all, and the default terms every quote in that market starts with. Per market rather than per org because a mortgage desk issues Loan Estimates under TRID and has no use for a generic quote, while a services market lives on them. Terms carry the org's legal commitment, so departing from the market wording on a single quote is its own grant — EDIT_QUOTE_TERMS. A null terms field already meant "leave unchanged" on update, which is what lets the controller strip it for callers without the right. Also drops the quote's own recipient name/address/phone: the lead already holds the client's details, and snapshotting them duplicated a record edited elsewhere that would drift from it. Schema applied by KamoInitializer ahead of this commit; columns verified.