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.
There are some default change plan policies already implemented.
StandardPlanChangePolicy
¶
-
class
plans.plan_change.
StandardPlanChangePolicy
[source]¶ - 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
StandardPlanChangePolicy.UPGRADE_PERCENT_RATE
- Additional constant charges are:
StandardPlanChangePolicy.UPGRADE_CHARGE
StandardPlanChangePolicy.FREE_UPGRADE
StandardPlanChangePolicy.DOWNGRADE_CHARGE
Note
Example
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
Note
Values of UPGRADE_CHARGE
, DOWNGRADE_CHARGE
, FREE_UPGRADE
and UPGRADE_PERCENT_RATE
can be customized by creating a custom change plan class that derives from StandardPlanChangePolicy
.