Документация 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.

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

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

Модуль реализован на языке программирования 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 Фоновые плагины.