Конвертация и загрузка тарифов Телефонии в биллинг
Материал из BiTel WiKi
Ставится задача сконвертировать МГ и ВЗ тарифы телефонии в формат, пригодный для загрузки биллингом. В качестве исходных данных - CSV файлы следующего формата (разделитель - точка с запятой):
<Направление>;<Префикс>;<Стоимость льготная юр. лица>;<Стоимость обычная физ. лица>;<Стоимость льготная физ. лица>;<Стоимость обычная физ. лица>;<Тип связи>
Пример фрагмента файла:
Самарская (mob) - Билайн;7961392;1,5;1,5;1,5;1,5;ВЗ связь Самарская (mob) - Билайн;7961391;1,5;1,5;1,5;1,5;ВЗ связь Самарская (mob) - Билайн;7961390;1,5;1,5;1,5;1,5;ВЗ связь "ОАО ""ВымпелКоммуникации""";7961381;1,5;1,5;1,5;1,5;ВЗ связь "ОАО ""ВымпелКоммуникации""";7961380;1,5;1,5;1,5;1,5;ВЗ связь Самарская (mob) - Билайн;7960850;1,5;1,5;1,5;1,5;ВЗ связь "ОАО ""ВымпелКоммуникации""";7960834;1,5;1,5;1,5;1,5;ВЗ связь Самарская (mob) - Билайн;7960809;1,5;1,5;1,5;1,5;ВЗ связь
Льготное и обычное время описывается в справочнике типов времени биллинга.
В справочнике карт зон создается карта Основная карта, в справочнике услуг модуля - услуги МГ и ВЗ связи.
Архив с программой конвертации: Медиа:phone_tariff_convert.zip Запускается Perl скрипт process.pl, генерирует в каталог result четыре файла:
- codes.txt - Файл для загрузки в справочкник географических кодов
- jur.xml - тарифный план для юридических лиц
- phis.xml - тарифный план для физических лиц
- zone_map.xml - карта зон
Принцип конвертации - выделение из файла с тарифами уникальных комбинаций цен и создание на их основе зон тарификаций для биллинга. Формат справочника географических кодов и карты зон сложностей не представляет, остановимся подробнее на файле с тарифом. Рассмотрим фрагмент:
<?xml version="1.0" encoding="windows-1251"?> <nodes> <use_map id="1" title="Основная карта"/> <config data="0;5;0:0:60"/> <zone zone="R0;0;0;0"> <service_set regexp="^8" sid="14"/> <time_filter id="2" title="Выходные и праздники"> <costout default="true" value="0"/> </time_filter> <time_filter id="1" title="Рабочее время"> <costout default="true" value="0"/> </time_filter> </zone> <zone zone="R3.36;3.36;3.36;3.36"> <service_set regexp="^8" sid="14"/> <time_filter id="2" title="Выходные и праздники"> <costout default="true" value="3.36"/> </time_filter> <time_filter id="1" title="Рабочее время"> <costout default="true" value="3.36"/> </time_filter> </zone> ........