Статья содержит техническую информацию о модуле "Выгрузка для СОРМ":
- информацию для диагностики модуля;
- структуру хранения выгрузки в базе данных (БД) модуля. Для полей, выгружаемых из основной БД платформы, указан источник данных в формате "таблица.поле". Например, 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
- Скопируйте все файлы модуля в другую директорию.
- Удалите модуль в интерфейсе платформы: Интеграция → Модули → Выгрузка для СОРМ → значок .
- Верните все файлы модуля в исходные директории.
- Внесите необходимые изменения в код модуля.
Способ 2
- Создайте копию файла sorm_task.py с именем my_sorm_task.py
- Скопируйте содержимое директории /usr/local/mgr5/addon/sorm/ в директорию /usr/local/mgr5/addon/my_sorm/
- Создайте XML-описание модуля /usr/local/mgr5/etc/xml/my_billmgr_mod_sorm.xml Скопируйте в него содержимое блока handler из файла /usr/local/mgr5/etc/xml/billmgr_mod_sorm.xml
<?xml version="1.0" encoding="UTF-8"?> <mgrdata> <handler name="my_sorm_task.py" type="xml"> ... </handler> </mgrdata>
- Во всех файлах формата py в конструкциях вида замените sorm на my_sorm
from sorm.<filename> import <function>
- Внесите необходимые изменения в код модуля.
- Чтобы избежать параллельной работы вашего и оригинального модулей:
- Выключите выгрузки в интерфейсе платформы: Инструменты → Выгрузка для СОРМ → выберите все выгрузки → кнопка Выкл.
- В коде вашего модуля разрешите работу с выключенными выгрузками. Для этого вы можете в файле report_config.py удалить строку
WHERE active = 'on'
Подробнее о создании собственных модулей см. в статье документации COREmanager Фоновые плагины.