- Shipped
- September 2, 2026 at 4:11 PM UTC
- Author
- Kamo
- Commit
- 37cdbd2
Two things a quote could not state. A one-off setup fee lived only on QuoteOption, where each alternative carries its own. A flat sheet has no option to hang one from, so it could not record a setup fee at all — quoting one meant switching the whole quote to Compare Options, which changes how the document reads for the customer. Quote.setup_fee is the flat-sheet equivalent. It sits OUTSIDE the discountable subtotal deliberately: a percentage off the goods is not a percentage off the cost of installing them. An address was assembled into one comma-joined string, so 'Suite 400' ran into the street and the city. That is not how an address is written, and on a quote it is what a customer is expected to post a cheque to. The unit now travels as its own field on both the customer block and the org's own details, leaving the page free to give it its own line. The column is nullable — every row written before it has no fee, and null means none — so no existing quote changes value.