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

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

module.account.<id>.title=<title>
module.account.<id>.mid=<mid>
module.account.<id>.class=<class_name>
#module.account.<id>.sids=<sids>

Где:

<id> - уникальный числовой идентификатор денежной наработки, нумерация должна быть последовательной и непреревной, число не должно меняться впоследствии, при изменении нумерации необходима правка всех тарифов, где используются данные денежные наработки;
<title> - название денежной наработки;
<mid> - код экземпляра модуля, в котором рассчитывается объём, 0 для класса KernelAccount;
<class_name> - класс, рассчитывающий объём;
<sids> - коды услуг через запятую (необязательный параметр).

В данный момент поддерживаются следующие классы, которые могут быть указаны в <class_name> для расчёта денежной наработки:

bitel.billing.server.npay.bean.DialUpModuleAccount - денежная наработка в экземпляре модуля DialUp;
bitel.billing.server.npay.bean.PhoneModuleAccount - денежная наработка в экземпляре модуля Phone;
ru.bitel.bgbilling.modules.inet.npay.InetModuleAccount - денежная наработка в экземпляре модуля Inet;
bitel.billing.server.npay.bean.KernelAccount - денежная наработка в ядре, возможен расчёт только целиком за месяц.
bitel.billing.server.npay.bean.VoipModuleAccount - денежная наработка в экземпляре модуля Voiceip;

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

Рассмотрим пример конфигурации экземпляра модуля абонплат для начисления несколько типов абонплат и использующую при начислении значения денежной наработки экземпляра модуля DialUp с кодом 21.

module.account.1.title=Наработка в DialUp
module.account.1.mid=21
module.account.1.class=bitel.billing.server.npay.bean.DialUpModuleAccount
module.account.1.sids=<если нужно, уточнение услуг модуля>
#
module.account.1.title=Наработка в модуле Inet
module.account.1.mid=179
module.account.1.class=ru.bitel.bgbilling.modules.inet.npay.InetModuleAccount

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

Тариф начисляет дополнительную наработку в случае, если клиент недостаточно наработал по услугам DialUP модуля.

В данном случае Догнать до 600 - это название услуги модуля абонплаты. Пропорциональный периоду режим обозначает, что 600 будет преобразовано в 300, если клиент подключён в середине месяца и период абонплаты в услугах договора также будет открыт серединой месяца. При этом наработка DialUP модуля также анализируется за этот период. Возможен и безусловный режим снятия, когда "доводимая" сумма не изменяется в зависимости от периода действия абонплаты. Режим как выгоднее оценивает сумму снятия при безусловном и пропорциональном режимах и выбирает максимальную из них.

Тариф начисляет клиенту абонплату в 100 рублей в том случае, если его наработка DialUP была менее 400 рублей и 60 рублей в противном случае. Абонплата называется 60 в месяц.