Главная » про WinTariff

Зачем нужны группы тарифов?

14 апреля 2010

В настройках каждого тарифа есть параметр ‘Тариф принадлежит к N-й группе тарифов’ (N=1..4). ‘Группа тарифов’ это способ поставить метку на данный тариф — в дальнейшем, эта метка будет унаследована звонками, расчитанными с помомощью этого тарифа.
Зачем это нужно? Иногда бывает сложно выделить интересующие звонки, используя обычный подход — по типу звонка или по первым цифрам номера. Например, проблематично (хотя и можно — с помощью исключения лишних звонков) построить отчет по междугородним звонкам (номера начинаются на 8***), но без международных (810*) и сотовых (89**). А с помощью групп задача решается легко:

  1. разносим тарифы по разным группам: 1 — сотовые (и обычные, городские звонки) , 2 — межгород, 3 — международные
  2. теперь можно выбирать звонки из разных групп по отдельности: открываем окно параметров выборки и на закладке ‘Время&зона’ выбираем нужную группу. Например, для междугородних звонков в нашем примере следует выбрать группу 2. Остальные параметры выборки можно оставить без изменений (разве что указать диапазон дат)

Группа звонков может быть использована и в бланках отчетов для детализации счета. Например, для примера выше может оказаться полезным бланк, в котором отдельно выводятся данные (и в общей шапке отчета, и для каждого внутр. номера) по трём группам звонков:

  • сотовые+городские
  • межгород
  • международные

Пример такого отчета можно скачать здесь (файл нужно скопировать в папку WinTariff32\Forms). Для вывода суммарных данным по каждой группе тарифов в шапке отчета применены функции CALLSCOUNT(TariffGroupNo), TOTALDURATION(TariffGroupNo), TOTALPRICE(TariffGroupNo). Значения этих функций вычисляются один раз перед подготовкой отчета по всем отобранным звонкам.

Подсчет промежуточных данных для каждого внутреннего телефона устроен сложнее — используется функция SUM():

Примеры:

Подсчет количества звонков:

SUM( IF(TrfGroup=2, 1, 0), MasterData1)

  • MasterData1 — это название объекта типа ‘Master data’, который выводит данные для каждого телефона. В функции SUM() это название служит для указание пределов суммирования.
  • IF(TrfGroup=2, 1, 0) — функция IF() возвращает 1, если данный звонок принадлежит к тарифной группе 2 (если значение поля TRFGROUP файла Calls.bf равно 2) или 0, если для этого звонка использовались другие тарифы.

Подсчет общей длительности:

SUM( IF(TrfGroup=2, IDuration, 0), MasterData1)

IF(TrfGroup=2, IDuration, 0) — функция IF() возвращает значение поля IDURATION файла Calls.dbf (т.е. длительность
звонка в секундах) если если данный звонок принадлежит к тарифной группе 2 и 0 в противном случае. Так функция SUM()
вернёт значение в секундах, для форматирования в привычный вид HH:MM:SS далее используется функция I2TIME(SUM(..))

Общая стоимость звонков:

SUM( IF(TrfGroup=2, Price, 0), MasterData1)

— аналогично вычислению общей длительности, но используется поле PRICE вместо IDURATION.

Совет: список всех функций WinTariff’a, которые можно использовать в отчетах, можно посмотреть так:

  • откройте бланк отчета в редакторе бланков
  • далее нужно щелкнуть мышкой любой ‘прямоугольник с тектом’, предназначеный для вывода информации о звонках — откроется маленький текстовый редактор
  • левая кнопка на панели инструментов этого редактора называется ‘вставить функцию’ — нажмите её, откроется окно редактора выражений
  • нажмите на кнопку ‘Functions’ — откроется окно со списком доступных функций. В левом списке выберите ‘WinTariff functions’ — в правом списке увидите интересующие функции с короткими комментариями