Plan change policies¶
Changing (upgrading or downgrading) plan is another thing that can be highly customizable. You can choose which
ChangePlanPolicy should be used via
PLANS_CHANGE_POLICY settings variable.
Plan change policy is a class that derives from
plans.plan_change.PlanChangePolicy which should implement
get_change_price(plan_old, plan_new, period). This method returns should return total price of changing current plan to new one, assuming that a given active period left on the account.
get_change_price(plan_old, plan_new, period)¶
Calculates total price of plan change. Returns None if no payment is required.
There are some default change plan policies already implemented.
- This plan switch policy follows the rules:
- user can downgrade a plan for free if the plan is cheaper or have exact the same price (additional constant charge can be applied)
- user need to pay extra amount depending of plans price difference (additional constant charge can be applied)
Change percent rate while upgrading is defined in
- Additional constant charges are:
User has PlanA which costs monthly (30 days) 20 €. His account will expire in 23 days. He wants to change to PlanB which costs monthly (30 days) 50€. Calculations:
PlanA costs per day 20 €/ 30 days = 0.67 € PlanB costs per day 50 €/ 30 days = 1.67 € Difference per day between PlanA and PlanB is 1.00 € Upgrade percent rate is 10% Constant upgrade charge is 0 € Switch cost is: 23 * 1.00 € * 10% + 0 € = 25.30 € days_left * cost_diff_per_day * upgrade_percent_rate + constant_upgrade_charge
UPGRADE_PERCENT_RATE can be customized by creating a custom change plan class that derives from