Here's another scenario showing problems with the current upgrade system based on billing cycle changes. In this scenario the customer is screwed over because they end up paying for a year's worth of service at quarterly pricing.

1. Customer purchases a plan set for $65 / year
2. Later that day the customer wants to upgrade to a higher plan, but also change its billing cycle to quarterly. The quarterly price on the plan is $55 / quarter
3. WHMCS will bill the customer $55 * 4 (to complete the remaining year on the new plan) @ $220. This occurs even when the plan is cheaper when paid annually, so they don't get any of the advantages of the annual pricing. Our annual pricing on this plan is $140 so they just paid $80 more than they should have.

As described above, WHMCS should change the upgrade calculation so that it switches to the new cycle immediately. Here's how that would change things for the better with the same scenario:

1. Customer purchases a plan set for $65 / year
2. Later that day the customer wants to upgrade to a higher plan, but also change its billing cycle to quarterly. The quarterly price on the plan is $55 / quarter
3. WHMCS *should* add a credit on account for $10 (if credits during upgrade/downgrade is enabled)
4. WHMCS *should* change the plan renewal to be 3 months later rather than 1 year later.

This makes way more sense than the current calculation, and it resolves both cycle change abuse from customers, and cases where the cycle change can disadvantage the customer.