Модуль определяет потребление договором абонплаты по наличию услуги из модуля в договоре. Алгоритм работы следующий. Начисление производится за определённый месяц.
1) производится выборка потребителей услуг данного модуля, получая набор сочетаний:
2) для каждого сочетания производится разбивка по действующим на период тарифные планы, получая тарифицируемые сочетания:
Пример 22.1. Пример получения
В договоре определены:
Абонплата 1 - с 1 по 10 число;
Абонплата 2 - с 9 по 31 число;
Тариф 1 - с 2 по 31 число.
Получаем два тарифицируемых сочетания:
Абонплата 1 - Тариф 1 - с 2 по 10 число;
Абонплата 2 - Тариф 1 - с 9 по 31 число;
Каждое сочетание тарифицируется по тарифу.
1) При Количества для помесячного режима также всегда рассчитываются на дату окончания периода. Помесячный режим всегда рассчитывается до конца расчётного месяца.
начисления цена в тарифе запрашивается один раз, используя дату окончания периода для передачи в тарифный запрос. При стоимости цена определяется пропорционально отношению количество дней, когда абонплата в месяце была открыта и статус активен к общему числу дней месяца.2) При
передаётся запрос в тариф на каждый день, входящий в период сочетания. Для каждого дня оценивается стоимость и количества, анализируется статус договора. Снятие может быть произведено как до текущего дня, так и до конца месяца, в зависимости от настройки узла.Исходя из этого, помесячный режим начислений оптимальнее в плане тарификации, однако цена и количество сущностей, которым пропорциональна абонплата в нем может изменятся только один раз в месяц. В этом её отличие от подневного режима с начислением до конца месяца. При погодовом режиме начисления цена в тарифе формируется аналогично помесячному режиму, но снятие средств происходит один раз в год только в месяц добавления услуги.
3) При
начисление производится только в том месяце, в который была добавлена абонплата. Стоимость абонплаты определяется на конец месяца.4) При
начисления:Если период абонплаты закрыт, то цена запрашивается на день начала периода и абонплата снимается
согласно стоимости дня или месяца. При указании цены за месяц дневная цена получается делением месячной на количество дней в месяце начала абонплаты. Соответственно при начислении за месяц авансовые абонплаты с закрытым периодом, открытые не в месяце начисления игнорируются.Если период абонплаты открыт, то цена запрашивается на ДАТУ_НАЧАЛА=МАКСИМУМ(День начала периода; День начала месяца). Стоимость дня умножается на количество дней от ДАТЫ_НАЧАЛА до конца месяца. При указании цены за месяц дневная цена получается делением месячной на количество дней в месяце начисления.
Рассмотрим несколько примеров. Для начала, простейшие абонплаты, не зависящие от наработок в других модулях.