- Shipped
- September 3, 2026 at 4:15 AM UTC
- Author
- Kamo
- Commit
- 31b72fe
updateDraftOrder set seatCount and billingCycle and saved. Both are price drivers, and neither the order's money fields nor its line items were touched, so the order went on stating a price for the shape it used to have: editing a 1-seat order up to 10 kept the 1-seat total, and switching MONTHLY to ANNUAL kept the monthly rate. The customer was then quoted a number nobody would ever charge. Reprice through calculatePrice, which is the authority every other path already uses, recovering the add-ons from the order's own line items via **************** A bundle is recorded nowhere on the order and a promotion only as a discount row, so neither survives a round trip. Rather than reprice around them and quietly drop a saving the customer was quoted, refuse. Nothing has ever been sold with either, so this guards a shape that does not occur yet instead of inventing a smaller discount than the order promises. createOrder now shares applyPricing and addLineItems with the reprice, because two independent copies of "turn a quote into an order" is exactly how the two would come to disagree — and add-on reference codes, added a commit ago, would have been written by one of them and not the other.