Порядок просмотра тарифных планов
В различных модулях используется различный алгоритм порядка просмотра тарифных планов.
Алгоритм 1:
1. ищется тариф, содержащий модульное поддерево экземпляра модуля среди персональных тарифов договора, используется фильтр по дате, сортировка по позиции тарифа; если найдено - то 3;
2. ищется тариф, содержащий модульное поддерево среди глобальных тарифов договора, используется фильтр по дате, сортировка по позиции тарифа;
3. в найденном модульном поддереве ищется цена на все услуги, которые нужно тарифицировать; если цена какой-то услуги там не найдена, то ошибка тарификации.
При такой схеме в один день в договоре может активно действовать только один тариф, содержащий модульное поддерево экземпляра модуля. Если таких тарифов окажется несколько, то будет выбран первый из них в соответствии с алгоритмом. Если в найденном тарифе не окажется цен на все требуемые услуги - получится ошибка тарификации, другие тарифы просматриваться не будут.
Алгоритм 2:
1. выбирается список тарифов, содержащих модульное поддерево экземпляра модуля среди персональных тарифов договора, используется фильтр по дате, сортировка по позиции тарифа;
2. выбирается список тарифов, содержащих модульное поддерево экземпляра модуля среди глобальных тарифов договора, используется фильтр по дате, сортировка по позиции тарифа.
Для каждой из тарифицируемых сущностей (услуга, тип трафика) ищется последовательно цена в списках 1 и 2. Как только находится тариф с ценой - поиск прекращается.
В ряде модулей (Phone, NPay) алгоритм поиска тарифа отличается от перечисленных здесь и описан отдельно.