4.2. Абонплаты, зависящие от наработки по объёму в других модулях

Модуль абонплат может производить начисление в зависимости от объёмов наработок в других модулях.

Замечание

Зависимости можно выставить только для подневного и помесячного режима начислений.

Все используемые при тарификации объёмы должны быть описаны в конфигурации экземпляра модуля. Объём наработки описывается в конфигурации экземпляра модуля абонплат следующим образом.

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> для расчёта объёма услуги (байт, либо секунд):

bitel.billing.server.npay.bean.DialUpModuleAmount - количество байт или секунд в экземпляре модуля DialUp;
bitel.billing.server.npay.bean.IPNModuleAmount - количествто байт в экземпляре модуля IPN;
ru.bitel.bgbilling.modules.inet.npay.InetModuleAmount - количествто байт в экземпляре модуля Inet;
bitel.billing.server.npay.bean.PhoneModuleAmount - количество секунд округлённой длительности в экземляре модуля Phone.

Указанный в конфигурации объём можно использовать в узле тарифного плана типа Условие по объёму услуги. При размещении данного узла в узле типа Дневной режим снятия объем будет вычисляться за каждый день для использования в условиях по объёму. При размещении в узле типа Месячный режим снятия объем будет вычисляться за рассчитываемый период (период сочетания, см. алгоритм).

Рассмотрим пример конфигурации экземпляра модуля для начисления несколько типов абонплат и использующую при начислении значения входящих трафиков модуля DialUP, IPN и голосового трафика модуля Телефонии. Если необходимо учитывать суммарную наработку по нескольким услугам, они перечисляются через запятую.

module.amount.1.title=Входящий DialUP трафик 
module.amount.1.mid=21 
module.amount.1.class=bitel.billing.server.npay.bean.DialUpModuleAmount 
module.amount.1.sids=23 
# 
module.amount.2.title=Входящий внешний IPN трафик 
module.amount.2.mid=33 
module.amount.2.class=bitel.billing.server.npay.bean.IPNModuleAmount 
module.amount.2.sids=40
#
module.amount.3.title=Объем трафика телефонии 
module.amount.3.mid=73
module.amount.3.class=bitel.billing.server.npay.bean.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.inet.npay.InetModuleAmount 
module.amount.4.sids=203
#
module.amount.5.title=Входящий Voiceip трафик 
module.amount.5.mid=79 
module.amount.5.class=bitel.billing.server.npay.bean.VoipModuleAmount
module.amount.5.sids=122

Приведённая выше конфигурация используется в следующих примерах тарифов:

Начисление 1 го рубля только за те дни, когда была наработка в модуле DialUP

Начисление за дни, когда у клиента не было достаточной наработки по IPN, "штрафа" в 10 рублей, стимулирующий тариф.

Все приведённые выше примеры могут быть совмещены с узлами типа: Фильтр по времени и Период.

Тариф, снимающий абонплату за предоплаченные 100 МБ в месяц, если клиент наработал меньше, то снятие происходит пропорционально реально потреблённому объёму.

Тот же тариф, но снимающий в случае, если объем менее 100, как выгоднее: т.е. анализируется доля потреблённых дней в месяце и доля потреблённого объёма, большая доля умножается на цену за месяц.

Необходимо учитывать, что в узле типа "Условие" нижняя граница включена в диапазон, а верхняя - нет. 0 в верхней границе диапазона означает неограниченный объем.