A market decides who a quote names as the customer's contact

Featurekamo-shared-library
Shipped
September 2, 2026 at 1:55 AM UTC
Author
Kamo
Commit
b8aedd9

QuoteContactMode gives a LeadMarket three answers: the lead's assigned agent (resolved per read, which is what every quote does today and what a null column means), one explicit person, or a choice made on each quote. The latter two are snapshotted onto Quote.contactMemberId when the quote is raised, so changing a market's mind never rewrites the contact a customer was already given, and a revision carries the snapshot forward — it is the same offer. QuoteService takes the resolved contact as an argument rather than reading it off the request body: this module reaches the lead only by soft id, and a value a client could set would let anyone be named on a document. Update honours it only when the caller passes one, which is how ADJUSTABLE_PER_QUOTE is enforced server-side rather than by the editor hiding a field. agentForMember is named rather than overloaded — agentFor(null, ...) would be ambiguous at any call site passing a literal null — and the lead-taking form now delegates to it, so the two cannot drift on a printed document.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing