- Shipped
- October 23, 2026 at 3:58 AM UTC
- Author
- Kamo
- Commit
- 936d02d
SubscriptionChangeService records a change to a live subscription's seats and add-on licenses effective on any date from today. It previews the exact prorated charge: each added unit's per-period price x days left / days in the period it falls in, e.g. Harmony +6 seats from Nov 1 = 6 x $124 x 17/31 = $408.00. The charge is invoiced when the operator chooses: its own draft invoice now (even before the effective date) or on the next renewal invoice. On the effective date the billing job applies the change: - the subscription's seats, licenses and MRR; - the customer's access (seat count, seat rows, add-on licenses, cache); - every later renewal draft, rebuilt, or given an adjustment line if staff had edited it. Edge cases: - a change exactly on a billing day is carried by that renewal rather than prorated twice; - a reduction charges nothing and can credit the unused part on the next renewal; - a scheduled change can be cancelled, voiding its draft invoice; - setup fees for added seats read the CUSTOMER's agreement. The old change-seats path now goes through this service. New table commerce_subscription_changes; new column ****************
