Переключение тарифов

В таблице cs_accnt с первичным ключом nm содержится текущий тариф (колонка tarif), стек/очередь будущих тарифов (колонка tarifn), и готовность к переключению (srdy). Описание tarifn в другом документе, нас пока интересует только тот факт, что из tarifn можно получить следующий тариф.

Содержимым srdy должна управлять тарифная программа, которая в данный момент ведет договор, или другие процессы (например, оператор), а само переключение происходит внешними относительно тарифных программ средствами.

Процесс переключения может вызываться на разных этапах. Сейчас это: tick, hour, day, month.

Правила переключения содержатся в таблице taritch, ее колонки frotr и totar являются первичным ключом, и каждая из них - внешний ключ к тарифу. Эти колонки определяют тарифы, с которого предстоит переключиться и на который произойдет переключение, соответственно. Если колонка f_bing непустая, то в ней задано имя функции с параметром nm и булевым результатом, и именно эта функция вызывается для переключения. Если ее результат TRUE, то переключение считается на этом этапе выполненным, и общий процесс только зачищает srdy и продвигает стек/очередь будущих тарифов. Если результат этой процедуры другой, процесс переключения производится по общим правилам.

Эти правила заданы в колонке twis. Эта колонка, как и srdy - битовая строка, и значения битов в этих строках до некоторой степени похожи, и имеют общее пространство имен, заданное таблицей tars и/или макрокомандой tarsNUM(). В srdy используется только подмножество tarsNUM() битов:

Если тарифы, с которого и на который происходит переключение, совпадают, и этот тариф повторяемый (бит t_rpt), то переход происходит упрощенно - зачищается srdy и продвигает стек/очередь будущих тарифов.

Если есть заказ на переключение в tick, hour, day, month в srdy клиента, и на соответствующем этапе переключение почему либо не случилось, то у таких клиентов выключается auto в cs_cl.bits.


А.А.Бабайлов (C)2003..2022