Модуль абонплат может производить начисление в зависимости от объёмов наработок в других модулях.
Зависимости можно выставить только для подневного и помесячного режима начислений.
Все используемые при тарификации объёмы должны быть описаны в конфигурации экземпляра модуля. Объём наработки описывается в конфигурации экземпляра модуля абонплат следующим образом.
module.amount.<id>.title=<title> module.amount.<id>.mid=<mid> module.amount.<id>.class=<class_name> module.amount.<id>.sids=<sids>
Где:
- <id> - уникальный числовой идентификатор объёма, нумерация должна быть последовательной и непреревной, число не должно меняться впоследствии, при изменении нумерации необходима правка всех тарифов, где используются данные объёмы;
- <title> - название объёма;
- <mid> - код экземпляра модуля, в котором рассчитывается объём;
- <class_name> - класс, рассчитывающий объём;
- <sids> - коды услуг через запятую.
В данный момент поддерживаются следующие классы, которые могут быть указаны в <class_name> для расчёта объёма услуги (байт, либо секунд):
- ru.bitel.bgbilling.modules.npay.server.bean.amount.DialUpModuleAmount (до версии 8.XXXX - bitel.billing.server.npay.bean.DialUpModuleAmount) - количество байт или секунд в экземпляре модуля DialUp;
- ru.bitel.bgbilling.modules.npay.server.bean.amount.IPNModuleAmount (до версии 8.XXXX - bitel.billing.server.npay.bean.IPNModuleAmount) - количествто байт в экземпляре модуля IPN;
- ru.bitel.bgbilling.modules.npay.server.bean.amount.InetModuleAmount (до версии 8.XXXX - ru.bitel.bgbilling.modules.inet.npay.InetModuleAmount) - количествто байт в экземпляре модуля Inet;
- ru.bitel.bgbilling.modules.npay.server.bean.amount.PhoneModuleAmount (до версии 8.XXXX - bitel.billing.server.npay.bean.PhoneModuleAmount) - количество секунд округлённой длительности в экземляре модуля Phone.
- ru.bitel.bgbilling.modules.npay.server.bean.amount.VoipModuleAmount
- ru.bitel.bgbilling.modules.npay.server.bean.amount.VoiceModuleAmount
Указанный в конфигурации объём можно использовать в узле тарифного плана типа Условие по объёму услуги. При размещении данного узла в узле типа Дневной режим снятия объем будет вычисляться за каждый день для использования в условиях по объёму. При размещении в узле типа Месячный режим снятия объем будет вычисляться за рассчитываемый период (период сочетания, см. алгоритм).
Рассмотрим пример конфигурации экземпляра модуля для начисления несколько типов абонплат и использующую при начислении значения входящих трафиков модуля DialUP, IPN и голосового трафика модулей Телефонии(Phone. VoiceIp, Voice). Если необходимо учитывать суммарную наработку по нескольким услугам, они перечисляются через запятую.
module.amount.1.title=Входящий DialUP трафик module.amount.1.mid=21 module.amount.1.class=ru.bitel.bgbilling.modules.npay.server.bean.amount.DialUpModuleAmount module.amount.1.sids=23 # module.amount.2.title=Входящий внешний IPN трафик module.amount.2.mid=33 module.amount.2.class=ru.bitel.bgbilling.modules.npay.server.bean.amount.IPNModuleAmount module.amount.2.sids=40 # module.amount.3.title=Объем трафика телефонии module.amount.3.mid=73 module.amount.3.class=ru.bitel.bgbilling.modules.npay.server.bean.amount.PhoneModuleAmount module.amount.3.sids=83,84,85,86 # module.amount.4.title=Входящий трафик INET module.amount.4.mid=179 module.amount.4.class=ru.bitel.bgbilling.modules.npay.server.bean.amount.InetModuleAmount module.amount.4.sids=203 # module.amount.5.title=Входящий Voiceip трафик module.amount.5.mid=79 module.amount.5.class=ru.bitel.bgbilling.modules.npay.server.bean.amount.VoipModuleAmount module.amount.5.sids=122 # module.amount.6.title=Входящий Voice трафик module.amount.6.mid=217 module.amount.6.class=ru.bitel.bgbilling.modules.npay.server.bean.amount.VoiceModuleAmount module.amount.6.sids=150
Приведённая выше конфигурация используется в следующих примерах тарифов:
Начисление 1 го рубля только за те дни, когда была наработка в модуле DialUP
Начисление за дни, когда у клиента не было достаточной наработки по IPN, "штрафа" в 10 рублей, стимулирующий тариф.
Все приведённые выше примеры могут быть совмещены с узлами типа: Фильтр по времени и Период.
Тариф, снимающий абонплату за предоплаченные 100 МБ в месяц, если клиент наработал меньше, то снятие происходит пропорционально реально потреблённому объёму.
Тот же тариф, но снимающий в случае, если объем менее 100, как выгоднее: т.е. анализируется доля потреблённых дней в месяце и доля потреблённого объёма, большая доля умножается на цену за месяц.
Необходимо учитывать, что в узле типа "Условие" нижняя граница включена в диапазон, а верхняя - нет. 0 в верхней границе диапазона означает неограниченный объем.