Документация BILLmanager 6

Принцип работы модуля "Выгрузка для СОРМ"

Статья содержит техническую информацию о модуле "Выгрузка для СОРМ": 

  • информацию для диагностики модуля;
  • структуру хранения выгрузки в базе данных (БД) модуля. Для полей, выгружаемых из основной БД платформы, указан источник данных в формате "таблица.поле". Например, user.name;
  • инструкции по модификации модуля.

Диагностика

Лог-файлы

Логи взаимодействия биллинговой платформы с модулем СОРМ записываются в файлы:

  • /usr/local/mgr5/var/sorm_task.log — запросы на выгрузку данных;
  • /usr/local/mgr5/var/billmgr.log — настройка модуля.

Настройки модуля

Настройки модуля хранятся в основной БД платформы (по умолчанию — billmgr):

  • таблица sorm_report — свойства выгрузки:
    • name — наименование;
    • split_clients_by_contracts — опция Выгружать данные отдельно по каждому договору;
    • active — включена ли выгрузка;
  • таблица sorm_report2project — связь выгрузки с провайдером:
    • sorm_report — id выгрузки;
    • project — id провайдера;
  • таблица sorm_report2account_group — связь выгрузки с группой клиентов:
    • sorm_report — id выгрузки;
    • account — id группы клиентов;
  • таблица sorm_reportobject — данные выгрузки:
    • sorm_report — id выгрузки;
    • name — наименование;
    • type — тип данных;
  • таблица sorm_reportobjectparam — параметры данных (справочники):
    • sorm_reportobject — id выгрузки;
    • intname — внутреннее имя параметра;
    • value — значение параметра.

Хранение данных выгрузки

Данные выгрузки хранятся в БД модуля (по умолчанию — billmgr_sorm).

Клиенты

Данные хранятся в таблице client:

  • record_id — id записи;
  • report — id отчёта выгрузки в BILLmanager;
  • object — id данных отчёта в BILLmanager;
  • update_date — дата и время выгрузки;
  • id — id клиента. Если включена опция Выгружать данные отдельно по каждому договору, имеет вид "%ID_клиента%_%ID_договора%";
  • name — ФИО клиента;
  • company_name — название юридического лица (profile.name);
  • inn — ИНН (profile.vatnum);
  • email — e-mail (user.email);
  • username — имя пользователя (user.name);
  • registration_ip — IP-адрес регистрации (account.registration_ip);
  • communication_standart — стандарт связи абонента. Значение всегда равно 0 — неконкретизированный стандарт;
  • contract_number — номер договора (contract.number);
  • status — статус клиента. Значение всегда равно 0 — клиент подключён;
  • contract_sign_date — дата заключения договора (contract.signdate);
  • client_type — тип клиента. Возможные значения:
    • 0 — физическое лицо;
    • 1 — юридическое лицо или ИП;
  • birthday — дата рождения. Выгружается по данным паспорта, если они указаны;
  • passport_data_type — тип паспортных данных. Значение всегда равно 0 — структурированные паспортные данные;
  • passport_series — серия паспорта;
  • passport_number — номер паспорта;
  • passport_date — дата выдачи паспорта;
  • passport_org — организация, выдавшая  паспорт;
  • passport_type — тип документа. Значение всегда равно "Паспорт РФ";
  • contact_person_name — контактное лицо (profile.person);
  • contact_person_phone — контактные телефоны (profile.phone);
  • address_data_type — тип данных адреса. Значение всегда равно 1 — неструктурированный адрес;
  • address — адрес.

Пользователи

Данные хранятся в таблице user:

  • record_id — id записи;
  • report — id отчёта выгрузки в BILLmanager;
  • object — id данных отчёта в BILLmanager;
  • update_date — дата и время выгрузки;
  • id — id пользователя;
  • client_id — id клиента. Если включена опция Выгружать данные отдельно по каждому договору, имеет вид "%ID_клиента%_%ID_договора%";
  • username — имя пользователя (user.name);
  • name — ФИО (user.realname);
  • phone — номер телефона (user.phone);
  • create_date — дата создания пользователя;
  • delete_date — дата удаления пользователя. При удалении пользователя будет выгружен только этот параметр и id пользователя.

Данные авторизации

Данные хранятся в таблице auth_history:

  • record_id — id записи;
  • report — id отчёта выгрузки в BILLmanager;
  • object — id данных отчёта в BILLmanager;
  • update_date — дата и время выгрузки;
  • user — имя пользователя;
  • action — тип события. Возможные значения:
    • login — авторизация в платформе;
    • logout — завершение сессии со стороны пользователя;
    • session_drop — завершение сессии со стороны сервера;
  • ip — IP-адрес;
  • session_hash — хеш сессии. Значение не меняется в пределах одной сессии и позволяет соотнести события авторизации и завершения сессии;
  • port — сетевой порт;
  • user_agent — User agent браузера;
  • email — e-mail;
  • phone — номер телефона.

Платежи

Данные хранятся в таблице payment:

  • record_id — id записи;
  • report — id отчёта выгрузки в BILLmanager;
  • object — id данных отчёта в BILLmanager;
  • update_date — дата и время выгрузки;
  • client_id — id клиента. Если включена опция Выгружать данные отдельно по каждому договору, имеет вид "%ID_клиента%_%ID_договора%";
  • id — id платежа (payment.id);
  • create_date — дата создания платежа (payment.createdate); 
  • amount — сумма платежа. Выгружается в валюте платежа (payment.paymethodamount);
  • currency — валюта. Выгружается ISO-код валюты (payment.currency);
  • paymethod — наименование метода оплаты (paymethod.name_ru);
  • unstructured_info — неструктурированная информация. Используется только для банковских платежей;
  • status — статус платежа в BILLmanager (payment.status).

IP-адреса

Данные хранятся в таблице ip_address:

  • record_id — id записи;
  • report — id отчёта выгрузки в BILLmanager;
  • object — id данных отчёта в BILLmanager;
  • update_date — дата и время выгрузки;
  • client_id — id клиента. Если включена опция Выгружать данные отдельно по каждому договору, имеет вид "%ID_клиента%_%ID_договора%";
  • ip — IP-адрес. Выгружается только для услуг, которые предоставляют IP-адреса (ip.name);
  • type — тип IP-адреса. Значение всегда равно 1 (публичный адрес).

Домены

Данные хранятся в таблице domain:

  • record_id — id записи;
  • report — id отчёта выгрузки в BILLmanager;
  • object — id данных отчёта в BILLmanager;
  • update_date — время и дата выгрузки;
  • client_id — id клиента. Если включена опция Выгружать данные отдельно по каждому договору, имеет вид "%ID_клиента%_%ID_договора%";
  • admin — данные административного владельца домена;
  • tech — данные технического владельца домена;
  • domain_name — имя домена;
  • registrator — регистратор домена.

Сообщения запросов

Выгружаются все сообщения переписки сотрудников с клиентами, кроме резюме, внутренних комментариев и скрытых сообщений. Если тикет был разделён, сообщения отделённого тикета будут выгружены повторно, начиная с момента разделения.

Данные хранятся в таблице ticket_message:

  • record_id — id записи;
  • report — id отчёта выгрузки в BILLmanager;
  • object — id данных отчёта в BILLmanager;
  • update_date — время и дата выгрузки;
  • id — id сообщения в BILLmanager;
  • action — тип действия. Значение всегда равно "message";
  • username — имя пользователя, совершившего действие (user.name);
  • user_id — id пользователя, совершившего действие (user.id);
  • name — наименование запроса (ticket.name);
  • message — сообщение (ticket_message.message).

Услуги

Данные хранятся в таблице item:

  • record_id — id записи;
  • report — id отчёта выгрузки в BILLmanager;
  • object — id данных отчёта в BILLmanager;
  • update_date — время и дата выгрузки;
  • id — id услуги;
  • client_id — id клиента. Если включена опция Выгружать данные отдельно по каждому договору, имеет вид "%ID_клиента%_%ID_договора%";
  • name — имя услуги (item.name_ru);
  • description — описание тарифа. Используется значение pricelist.description_markdown_ru. Если отсутствует, то значение pricelit.description_ru.

Условия выгрузки

Выгрузка данных в систему СОРМ осуществляется поэтапно и не включает все услуги сразу:

  • при первой выгрузке из БД модуля в таблицу client базы данных billmgr_sorm  будут загружены только данные о клиентах;
  • услуги выгружаются в таблицу item базы данных billmgr_sorm начиная с момента установки нового плагина. Чтобы информация об услуге выгружалась в таблицу, необходимо средствами платформы присвоить услуге статус "Активна";
  • таблицы в процессе работы модуля заполняются при изменении полей. Например, таблица user заполняется, когда пользователи создаются, удаляются или изменяются.

Модификация модуля

Раздел содержит способы создания собственного модуля на основе оригинального. 

Модуль реализован на языке программирования Python. Файлы модуля:

  • /usr/local/mgr5/addon/sorm_task.py — основной файл;
  • /usr/local/mgr5/addon/sorm/ — директория, содержимое которой используется основным файлом;
  • /usr/local/mgr5/lib/libsorm.so — библиотека модуля;
  • /usr/local/mgr5/etc/xml/billmgr_mod_sorm.xml — XML-описание модуля.

Способ 1

Недостатком этого способа является полное удаление оригинального модуля из платформы. Вы не сможете получать обновления к оригинальному модулю. Если оригинальный модуль будет повторно установлен администратором, ваши модификации удалятся.
  1. Скопируйте все файлы модуля в другую директорию.
  2. Удалите модуль в интерфейсе платформы: ИнтеграцияМодулиВыгрузка для СОРМ → значок .
  3. Верните все файлы модуля в исходные директории.
  4. Внесите необходимые изменения в код модуля.

Способ 2

В примере используются имена файлов с префиксом my_. Вы можете использовать произвольные имена для файлов.
  1. Создайте копию файла sorm_task.py с именем my_sorm_task.py
  2. Скопируйте содержимое директории /usr/local/mgr5/addon/sorm/ в директорию /usr/local/mgr5/addon/my_sorm/
  3. Создайте XML-описание модуля /usr/local/mgr5/etc/xml/my_billmgr_mod_sorm.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <mgrdata>
      <handler name="my_sorm_task.py" type="xml">
        ...
      </handler>
    </mgrdata>
    Скопируйте в него содержимое блока handler из файла /usr/local/mgr5/etc/xml/billmgr_mod_sorm.xml
  4. Во всех файлах формата py в конструкциях вида
    from sorm.<filename> import <function>
    замените sorm на my_sorm
  5. Внесите необходимые изменения в код модуля.
  6. Чтобы избежать параллельной работы вашего и оригинального модулей: 
    1. Выключите выгрузки в интерфейсе платформы: Инструменты → Выгрузка для СОРМ  выберите все выгрузки → кнопка Выкл.
    2. В коде вашего модуля разрешите работу с выключенными выгрузками. Для этого вы можете в файле report_config.py удалить строку 
      WHERE active = 'on'

Подробнее о создании собственных модулей см. в статье документации COREmanager Фоновые плагины.