Зависимость стоимости от объема
Рассмотрим пример, когда первые 10 МБ входящего трафика будут идти по 1 руб., следующие 10 МБ - по 2 руб., а оставшиеся - по 3 руб.
Совершенно аналогично можно создать тарифный план с предоплаченным трафиком. В первом узле типа Диапазон указывается нулевая стоимость. Для начисления за предоплаченный трафик в модуле абонплат устанавливается абонентская плата.
Узел Диапазон может быть за день, за месяц, либо за учётный период и работать в режимах: безусловно, пропорционально периоду разрешённой услуги, пропорционально периоду действия тарифа. Разрешённые сочетания параметров и нюансы поведения узла приведены в таблице ниже. Квота базовая - это указанное в узле количество услуги. Квота - это используемое при тарификации для сравнения количество услуги.Таблица. Логика работы узла
За период |
Режим |
Оцениваемаемый объём услуги |
Квота |
за день |
безусловно |
Объём услуги за сутки. |
Квота = Квота базовая. |
за месяц |
безусловно |
Объём услуги за период действия тарифа в месяце. |
Квота = Квота базовая. |
за месяц |
пропорционально периоду разрешённой услуги |
Объём услуги за период действия тарифа в месяце. |
Квота = Квота базовая * (Количество дней с разрешённой услугой в месяце / Количество дней в месяце). |
за месяц |
пропорционально периоду действия тарифа |
Объём услуги за период действия тарифа в месяце. |
Квота = Квота базовая * (Количество дней действия тарифа в месяце / Количество дней в месяце). |
за месяц |
пропорционально периоду действия тарифа (с учётом приостановленных статусов) |
Объём услуги за период действия тарифа в месяце. |
Квота = Квота базовая * (Количество дней действия тарифа в месяце с не приостановленными статусами / Количество дней в месяце). |
за учётный период |
безусловно |
Объём услуги за период действия тарифа в учётном периоде. |
Квота = Квота базовая. |
за учётный период |
пропорционально периоду разрешённой услуги |
Объём услуги за период действия тарифа в учётном периоде. |
Квота = Квота базовая * (Количество дней с разрешённой услугой в учётном периоде / Количество дней в учётном периоде). |
за учётный период |
пропорционально периоду действия тарифа |
Объём услуги за период действия тарифа в учётном периоде. |
Квота = Квота базовая * (Количество дней действия тарифа в учётном периоде / Количество дней в учётном периоде). |
за учётный период |
пропорционально периоду действия тарифа (с учётом приостановленных статусов) |
Объём услуги за период действия тарифа в учётном периоде. |
Квота = Квота базовая * (Количество дней действия тарифа в учётном периоде с не приостановленными статусами / Количество дней в учётном периоде). |
Если клиент исчерпает разрешённые в тарифном плане объёмы, тарификация прекратится и услуга более ему не будет предоставляться. Таким образом, можно создавать ограничивающие тарифные планы. Ниже приведён пример плана, разрешающего потреблять клиенту 5МБ в течение суток.
Логика работы узла Диапазон следующая:
В запросе узел получает количество услуги amount, которое необходимо протарифицировать.
Оценивается текущее значение счётчика услуги в узле для данного договора и квота, в данном узле может быть протарифицирован объём MIN (amount, КВОТА - ТЕК. ЗНАЧЕНИЕ). Если в данном узле значение счётчика ещё не достигло квоты, то запрос посылается внутрь узла, откуда должна возвратиться стоимость единицы услуги узлом Стоимость услуги и быть установлен флаг акцепта. Возможный объём тарифицируется, значение amount в запросе уменьшается, увеличивается значение параметра ответа costAmount.
Текущее значение счётчика для договора в узле увеличивается отдельным запросом после запроса получения цены. Передаётся тарифный init запрос с протарифицированным объёмом услуги amount и узлы последовательно "разбирают" объём наработки, увеличивая счётчики.
По итогам обработки тарифного запроса RADIUS либо процесс переобсчёта реагируют либо на параметр costAmount в тарифном ответе, либо на cost и divisor (устанавливает узел Стоимость услуги). Поэтому при оценке услуги диапазонами недопустимо размещать цену вне диапазона. Например, вместо такого тарифа.
Недопустимо определять цену по умолчанию следующим образом.