...
The following strategies are available. Bundle values should be the smallest meaningful units so rounding is performed only on the first decimal, by rounding half up, e.g. a calculated value of 20.5 will result in 21 while a value 20.49 will be rounded to 20.
The date being calculated against is taken from the subscription_campaign.from_date and occurs upon campaign activation, in the same way that the old ProrateActivation method was invoked by the campaign framework.
Strategy Name | Description | Calculation | Example |
---|---|---|---|
ProrateDayOfMonthUsing30DayMonth | This strategy will prorate based on remaining days of a fixed month length of 30. | bundleValue * ((30-dayOfMonth) + 1) / 30). | For the 5th the calculation would always be bundleValue * (26/30) irrespective of the actual month length. |
ProrateRemainingCalendarDaysUsing30DayMonth | This strategy calculates actual remaining days of the month (including the date itself) but uses a | bundleValue * ((monthLength - dayOfMonth + 1)/30) | Example 1: January 5th would be calculated by bundleValue * (27/30).
|
ProrateRemainingDaysOfMonth | This strategy will prorate a bundle based on the actual remaining days of the month (including the date itself), using the calendar month length. | bundleValue * (remainingDays / lengthOfMonth) | Example 1: February 27, 2018 would be bundleValue * (2 / 28).
|
ProrateRemainingDaysOnInvoiceSchedule | This strategy will prorate a bundle based on the remaining days of the current invoice schedule, compared to the associated billing cycle length. | bundleValue * (remainingDays / billing_cycle.length) | Let the billing_cycle have a length of 14 and the current invoice_schedule be from 1st-14th January.
|
...
3 - Implementation Details
The implemented available strategies are identified using the implementation finder framework.
Thus, new strategies that are implemented and implementing the ProrateBundleStrategy interface and subsequently added in the service resource file (i.e., resources/META-INF/services/com.CDRator.billing.campaign.bundle.strategy.ProrateBundleStrategy) will be automatically discovered and available in the GUI for configuration.