# Плагин BGBillingS

## О плагине

Плагин предназначен для интеграции с биллинговой системой BGBilling и предоставляет функционал:

- поиск договоров по базе биллингов;

- просмотр и модификация договоров через интерфейс приложения:

  - основных свойств: режим, дат действия;

  - баланса;

  - параметров;

  - подключённых модулей;

- привязка процессов к договорам;

  - учёт связанных процессов в карточке договора.

| BGERP не хранит в своей базе данные из биллинга, такие как договора, но предосталяет визуальный интерфейс для доступа к ним. В базе данного приложения сохряняется только связь договоров с процессами и контрагентами.

Договора могут быть привязаны к контрагентам, что позволяет:

- учёт в параметрах контрагента актуальных реквизитов физического лица организации;

- просмотр в одном месте всех договоров контрагента;

- создание привязанных к контрагентам договоров с копированием параметров.

Связка с плагином BGBilling HelpDesk импортирует обращения клиентов BGBilling HelpDesk в процессы, обрабатываемые службой поддержки. Назначаемые на процессы исполнители преобразуются в кураторов топиков биллинга. Сообщения из топика HelpDesk появляются в сообщениях процесса, ответы пользователей BGERP экспортируются как сообщения HelpDesk.

## Настройка

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

Обращение к биллингу осуществляется с использованием логина и пароля текущего пользователя BGERP, либо конфигурируется для задачи планировщика, например импорт HelpDesk.

Возможна установка отличного логина и пароля в конфигурации пользователя:

    bgbilling:login=<LOGIN>
    bgbilling:password=<PSWD>

Либо настройка логина и (или) пароля для конкретного сервера биллинга.

    bgbilling:login.<BILLING_ID>=<LOGIN>
    bgbilling:password.<BILLING_ID>=<PSWD>

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

Сопоставление ID пользователей BGBilling и BGERP, например, для исполнителей в топиках HelpDesk производится по логинам. Либо соответствие устанавливается конфигурации пользователя BGERP:

    bgbilling:userId.<BILLING_ID>=<BGBILLING_USER_ID>

### Конфигурация

Убедитесь, что плагин включен и добавьте в конфигурацию:

#### Серверы биллинга

Для добавления биллингов в конфигурации сервера добавляют конструкции вида:

    bgbilling:server.{@inc:cnt}.id=<ID>
    bgbilling:server.{@cnt}.title=<TITLE>
    bgbilling:server.{@cnt}.url=<URL>
    # необязательные параметры
    bgbilling:server.{@cnt}.customerIdParam=<PARAM_ID>
    bgbilling:server.{@cnt}.timezone=<TIMEZONE>
    bgbilling:server.{@cnt}.requestTimeOut=<TIMEOUT>
    bgbilling:server.{@cnt}.version=<VERSION>

Где:

- <ID> - строковый ID биллинга, короткая строка, именно на него ссылаются все остальные записи в конфигурации;

- <TITLE> - отображаемое наименование;

- <URL> - URL для подключения к сервлету executer биллинга;

- <PARAM_ID> - код текстового параметра договора в биллинге, в котором сохраняется код контрагента, к которому привязан данный договор;

- <TIMEZONE> - временная зона сервера, например Europe/Moscow;

- <TIMEOUT> - таймаут ожидания ответа сервера биллинга в мс;

- <VERSION> - явно определённая версия сервера биллинга, возможные значения префикса версии во фрагменте кода далее.

    // PzdcDoc snippet of: 'DBInfoManager.java', lines: 24 - 24

        static final String[] SUPPORTED_VERSIONS = { "10.2", "9.2", "8.2", "8.0", "7.2", "7.1", "7.0" };

Например:

    bgbilling:server.1.id=bitel
    bgbilling:server.1.title=BiTel
    bgbilling:server.1.url=http://billing.bitel.ru/executer
    bgbilling:server.1.customerIdParam=100

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

    bgbilling:server.{@cnt}.markerRequestParam=<markerParam>:<markerValue>
    bgbilling:server.{@cnt}.contract_pattern.<pat_num>.title_pattern=<pattern>
    bgbilling:server.{@cnt}.copyParamMapping=<mapping>

Где:

- <markerParam>:<markerValue> - наименование и значение дополнительного "маркерного" параметра HTTP запроса к данному биллингу, для возможности простого разделения запросов в логах;

- <pat_num> - код шаблона договора из биллинга;

- <pattern> - шаблон нумерации договоров по этому шаблону при создании их из BGERP;

- <mapping> - правила копирования параметров контрагента в договор, см. далее.

В параметре <mapping> указываются разделённые точкой с запятой значения вида <cust_id>:<billing_id>. Где:

- <cust_id> - числовой код параметра контрагента либо customerTitle - наименование контрагента; для списковых параметров указывается код параметра и коды значений в квадратных скобках после кода;

- <billing_id> - числовой код параметра договора биллинга; для списковых параметров указывается код параметра и коды значений в квадратных скобках после кода.

Например:

    bgbilling:server.1.copyParamMapping=15:9;72:46;73:5;74:51;75:68;76:69;77:56;78:7;14:8;12:6;109:48;110:50;114:12;115[1,2]:25[4,3];customerTitle:1

##### Доступ для отчётов

Для возможности отчётов плагина Report выполнять запросы в БД биллингу необходимо добавить в конфигурацию сервера, пример:

    bgbilling:server.1.db.driver=com.mysql.jdbc.Driver
    bgbilling:server.1.db.url=jdbc:mysql://127.0.0.1/bgbilling?useUnicode=true&characterEncoding=UTF-8&connectionCollation=utf8_unicode_ci&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&elideSetAutoCommits=true&cachePrepStmts=true&useCursorFetch=true&queryTimeoutKillsConnection=true
    bgbilling:server.1.db.user=bill
    bgbilling:server.1.db.pswd=pass

Рекомендуется использовать реплику основной БД биллинга и пользователя с правами только на чтение и создание временных таблиц.

#### Поиск

Укажите, какие параметры договоров могут быть использованы для поиска их по адресу:

    bgbilling:search.contract.param.address.paramIds=<PARAM_IDS>

Где:

- <PARAM_IDS> - ID параметров договоров через запятую.

#### Сообщения

Плагин предоставляет следующие возможности для настройки типов сообщений.

##### Режимы поиска

###### BGBillingMessageTypeSearchContractByTitleAndComment

Поиск договора в базе BGBilling по номеру и комментарию, для любого типа сообщения.

Конфигурация:

    messageType.<ID>.search.{@cnt}.class=BGBillingMessageTypeSearchContractByTitleAndComment
    messageType.<ID>.search.{@cnt}.billingId=<BILLING_ID>

Где:

- <BILLING_ID> - ID биллинга.

Пример:

    messageType.1.search.{@inc:cnt}.title=По номеру/примечанию
    messageType.1.search.{@cnt}.class=BGBillingMessageTypeSearchContractByTitleAndComment
    messageType.1.search.{@cnt}.billingId=bg

###### BGBillingMessageTypeSearchCall

Автоматически выполняемый поиск договоров в базе BGBilling по номеру телефона звонящего для типа сообщения MessageTypeCall. Поиск производится по подстроке.

Конфигурация:

    messageType.<ID>.search.{@inc:cnt}.title=<TITLE>
    messageType.<ID>.search.{@cnt}.class=BGBillingMessageTypeSearchCall
    messageType.<ID>.search.{@cnt}.billingId=<BILLING_ID>
    messageType.<ID>.search.{@cnt}.commands=<COMMANDS>
    # опционально
    messageType.<ID>.search.{@cnt}.expressionNumberPreprocess=<JEXL>

Где:

- <BILLING_ID> - ID биллинга;

- <COMMANDS> - команды, в данный момент поддержана: contractByPhoneParam:<PARAM_ID>, где <PARAM_ID> - ID параметра типа "телефон" в биллинге;

- <JEXL> - JEXL выражение для предобработки номера перед поиском с его использованием, исходный номер передаётся переменной numberFrom.

Пример:

    messageType.50.search.1.title=Договор по номеру звонящего
    messageType.50.search.1.class=BGBillingMessageTypeSearchCall
    messageType.50.search.1.billingId=bg
    messageType.50.search.1.commands=contractByPhoneParam:27
    messageType.50.search.1.expressionNumberPreprocess=if (numberFrom.length() == 11) { numberFrom = numberFrom.substring(1) }; return numberFrom;

###### BGBillingMessageTypeSearchEmail

Автоматически выполняемый поиск договора в базе BGBilling по email парамеру для типа сообщения MessageTypeEmail.

Конфигурация:

    messageType.<ID>.search.{@inc:cnt}.title=<TITLE>
    messageType.<ID>.search.{@cnt}.class=BGBillingMessageTypeSearchEmail
    messageType.<ID>.search.{@cnt}.billingId=<BILLING_ID>
    messageType.<ID>.search.{@cnt}.paramIds=<PARAM_IDS>

Где:

- <BILLING_ID> - идентификатор биллинга;

- <PARAM_IDS> - коды параметров договора типа email через запятую.

Пример:

    messageType.100.search.{@inc:cnt}.title=Договор по параметру email
    messageType.100.search.{@cnt}.class=BGBillingMessageTypeSearchEmail
    messageType.100.search.{@cnt}.billingId=bg
    messageType.100.search.{@cnt}.paramIds=7

##### Сохранение контактов

###### BGBillingMessageTypeContactSaverPhone

Сохранение номер звонящего из сообщения MessageTypeCall в параметр типа "телефон" договора биллинга, привязанному к процессу после обработки сообщения.

Конфигурация:

    messageType.<ID>.saver.class=BGBillingMessageTypeContactSaverPhone
    messageType.<ID>.saver.paramId=<PARAM_ID>

Где:

- <PARAM_ID> - код параметра типа "телефон" договора биллинга.

Пример:

    messageType.<ID>.saver.class=BGBillingMessageTypeContactSaverPhone
    messageType.<ID>.saver.paramId=27

#### Плагин Document

Для вкладки документов карточки договора в конфигурации типов документов указывать scope=bgbilling-contract.

#### Контрагент

Использование контрагентов не является обязательным при интеграции BGERP с BGBilling. Возможна работа с договорами посредством веб-интерфейса приложения, к договорам могут быть привязаны процессы. Контрагент позволяет выделить параметры специфичные для непосредственно клиента либо организации в отдельную сущность. Например, актуальные контакты, паспортные данные, банковские реквизиты. Также контрагент позволяет сгруппировать договора организации/клиента.

Наиболее оптимально импортировать контрагентов вторым этапом интеграции. Общее описание алгоритма импорта:

1. Из базы биллинга выбирается следующий договор с текстовым полем Код контрагента = 0 (код поля настраивается, само поле нужно создать в биллинге).

2. Наименование контрагента извлекается из комментария договора биллинга.

3. Производится поиск в базе контрагентов с названием, включающем в себя название контрагента договора, для всех найденных контрагентов сверяются подтверждающие параметры (адреса, телефоны, паспортные данные и т.п.). При совпадении хотя бы одного из подтверждающих параметров контрагент считается установленным.

4. Если в шаге 2 контрагент не найден, то контрагент ищется по ключевым параметрам, после чего для найденных контрагентов определяется степень несовпадения наименования с наименованием контрагента договора. Если расстояние Левенштейна между двумя наименованиями не превышает указанного в конфигурации значения, то контрагент считается установленным. К наименованию контрагента в BGERP добавляется новый вариант написания через символ пайпа (|). В дальнейшем правильный вариант написания предстоит установить оператору.

5. Если контрагент не найден при прямом и обратном поиске - создаётся новый контрагент.

6. К созданному контрагенту привязывается договор, в него импортируются параметры договора.

Для настройки импорта контрагентов из базы договоров биллинга добавьте в конфигурацию правила импорта:

    bgbilling:creator.confirmParameters=<confirm_params>
    bgbilling:creator.searchParameters=<search_params>
    bgbilling:creator.titleDistance=<title_dist>
    bgbilling:creator.importParameters=<import_params>
    bgbilling:creator.importBillingIds=<billing_ids>

Где:

- <confirm_params> - подтверждающие параметры контрагента, коды через запятую;

- <search_params> - ключевые параметры контрагента, коды через запятую;

- <title_dist> - максимальное расстояние Левенштейна;

- <import_params> - импортируемые из договора параметры контрагента;

- <billing_ids> - IDы биллингов, из которых запускается импорт, если не указано - каждый запуск в планировщике инициирует импорт для всех биллингов.

Далее одно или несколько правил определения группы параметров контрагента из номера договора:

    # необязательный параметр, если шаблона нет - то группа выставляется всем контрагентам
    bgbilling:creator.parameterGroupRule.<ID>.contractTitlePattern=<title_pattern>

    bgbilling:creator.parameterGroupRule.<ID>.paramGroupId=<param_group>
    bgbilling:creator.parameterGroupRule.<ID>.titlePatternId=<title_pattern_id>

Где:

- <ID> - уникальный числовой ID правила, правила просматриваются в порядке их IDов;

- <param_group> - группа параметров контрагента;

- <title_pattern> - REGEXP выражение, с которым сравнивается номер договора;

- <title_pattern_id> - код шаблона имени контрагента.

И для каждого из серверов биллинга записи:

    bgbilling:creator.server.<ID>.billingId=<billing_id>
    bgbilling:creator.server.<ID>.user=<user>
    bgbilling:creator.server.<ID>.pswd=<PSWD>
    bgbilling:creator.server.<ID>.paramMapping=<mapping>
    bgbilling:creator.server.<ID>.pageSize=<page_size>

Где:

- <ID> - уникальный числовой ID правила;

- <billing_id> - строковый ID сервера биллинга;

- <user>, <PSWD> - логин и пароль пользователя биллинга, под которым осуществляется импорт;

- <page_size> - количество договоров для импорта, выбираемых за один раз;

- <mapping> - соотношение параметров контрагента и биллинга, разделённые точкой с запятой пары <код параметра контрагента>:<код параметра договора> для простых параметров и <код параметра контрагента>[<коды значений спискового параметра через запятую>]:<код параметра договора>[<коды значений спискового параметра через запятую>] - для спискового типа; если маппинг не задан, то код значения спискового параметра будет импортирован "как есть" из биллинга.

Дополнительные необязательные параметры:

    bgbilling:creator.server.<ID>.minCustomerTitleLength=<minTitleLength>

Где:

- <minTitleLength> - минимально допустимая длина наименования контрагента (комментария договора) с которым будет предпринята попытка импорта, если параметр не указан, то значение по-умолчанию равно 10.

При импорте поддерживаются параметры договоров и, соответственно, контрагентов типа: "дата, текст, адрес, телефон, список". Параметры дата и текст перетирают значение параметра в договора, адрес, телефон и список - дополняют.

Параметр контрагента типа email может быть импортирован из аналогичного либо текстового параметра биллинга.

Пример конфигурации импорта контрагентов:

    # загрузчик контрагентов
    # дата рожд, адреса  услуг, сот. телефон(ы), паспорт с.-н.
    bgbilling:creator.confirmParameters=73,12,14,74
    # поиск по с.-н. паспорта, адресам услуг, сот. телефонам
    bgbilling:creator.searchParameters=74,12,14
    # расстояние по Левинштейну
    bgbilling:creator.titleDistance=2
    # кодовая фр., дата рожд., с.-н. пасп., д.в. пасп., кем выд. пасп, адрес проп., тел. гор, тел. сот, адрес(а) усл.
    bgbilling:creator.importParameters=72,73,74,75,76,77,78,14,12

    # группа параметров контрагента
    bgbilling:creator.parameterGroupRule.1.paramGroupId=3

    bgbilling:creator.server.1.billingId=ds
    bgbilling:creator.server.1.user=bgcrm
    bgbilling:creator.server.1.pswd=bgcrmv2
    bgbilling:creator.server.1.paramMapping=72:456;73:386;74:457;75:458;76:459;77:460;78:401;14:399;12:42;46:378;115[1,2]:421[14575,14576]
    bgbilling:creator.server.1.pageSize=10

    bgbilling:creator.server.2.billingId=tks
    bgbilling:creator.server.2.user=bgcrm
    bgbilling:creator.server.2.pswd=bgcrmv2
    bgbilling:creator.server.2.paramMapping=72:95;73:51;74:96;75:97;76:98;77:99;78:59;14:60;12:9,80,83
    bgbilling:creator.server.2.pageSize=10

Импорт контрагента можно инициировать вручную в карточке договора, что рекомендуется на время отладки.

Либо добавить в конфигурацию планировщика класс CustomerCreator, например:

    scheduler.task.{@inc:cnt}.class=CustomerCreator
    scheduler.task.{@cnt}.minutes=2,12,22,32,42,52

##### Типы договоров

Это договоры, которые могут быть созданы в привязке к контрагенту, при этом нумерацию осуществляет биллинг. Для добавления договора услуги в конфигурации указываются одна или несколько записей вида:

    bgbilling:contractType.{@inc:cnt}.title=<TITLE>
    bgbilling:contractType.{@cnt}.billing=<billing_id>
    bgbilling:contractType.{@cnt}.patternId=<pattern_id>
    bgbilling:contractType.{@cnt}.tariffList=<tariff_list>
    # необязательно, если не указано, то считается равным -1
    bgbilling:contractType.{@cnt}.tariffPosition=<tariff_pos>

Где:

- <TITLE> - наименование типа договора;

- <billing_id> - строковый ID биллинга;

- <pattern_id> - код шаблона договора в биллинге;

- <tariff_list> - перечень разделённых через точку с запятой записей вида <ID>:<TITLE>, где <ID> -код тарифа в биллинге, <TITLE> - обозначение тарифа;

- <tariff_pos> - позиция, с которой будет добавлен тариф (если выбран): -1 - заменить тарифом первый текущий тариф, либо добавить с позицией 0, если тарифа нет; >= 0 - тариф будет добавлен к существующем в договоре с данной позицией.

### Адресные справочники

Система может быть интегрирована с несколькими серверами BGBilling, все их адресные справочники (города, улицы, дома) должны быть синхронизированы между собой. При такой типовой схеме редактирование справочников производится в программе, а биллинги получают изменения. Если биллинг один и при первичной настройке, возможен обратный процесс, когда данные переносятся из биллинга в BGERP. Подробнее о синхронизации адресов.

### Конфигурация типа процесса

В конфигурацию типа процесса возможна установка следующих параметров.

Для автоматического добавления групп решения процесса по названию либо биллингу привязанного договора одна или несколько правил вида:

    bgbilling:processLinkedContract.{@inc:cnt}.groupIds=<groupIds>
    bgbilling:processLinkedContract.{@cnt}.titleRegexp=<titleRegexp>
    bgbilling:processLinkedContract.{@cnt}.billingIds=<billingIds>

Где:

- <titleRegexp> - REGEXP номера договора;

- <billingIds> - строковые IDы биллингов через запятую, к которым может относиться договор.

Правила отрабатывают при привязке договора к процессу, либо при создании привязанного к договору процесса. Проверка осуществляется до первого совпавшего по REGEXP либо кодам биллингов правила. Достаточно указать лишь одно из этих условий.

Для отключения привязки контрагента к процессу при привязке относящегося к нему договора:

    bgbilling:linkCustomerOnContractLink=0

Отображение на вкладках в карточке процесса процессов привязанных договоров:

    bgbilling:processShowLinkContractProcess=1

Выглядит так, для каждого привязанного договора добавляется дополнительная вкладка:

### HelpDesk

#### Процесс

Для представления HelpDesk топиков в системе должен быть настроен отдельный тип процесса, содержащий обязательно:

- два статуса процесса, соответствующие открытому и закрытому топику;

- параметр процесса типа list, хранящий статус топика в биллинге.

Опционально тип может содержать параметры для сохранения стоимости, разрешения автозакрытия топика. Ниже изображён такой тип процесса из Демо системы.

Процессы HelpDesk топиков выводятся в отдельной очереди, содержащей обычно столбцы: статус, исполнители, количество непрочитанных сообщений. Пример очереди доступен (очередь Plugin BGBilling HD) также в Демо.

#### Тип сообщения

Для сообщений из HelpDesk топиков в конфигурации добавляется отдельный тип сообщения:

    messageType.<ID>.title=<TTILE>
    messageType.<ID>.billingId=<BILLING_ID>
    messageType.<ID>.class=MessageTypeHelpDesk
    messageType.<ID>.user=<USER_LOGIN>
    messageType.<ID>.pswd=<USER_PSWD>
    messageType.<ID>.processTypeId=<PROCESS_TYPE_ID>
    messageType.<ID>.openStatusId=<PROCESS_OPEN_STATUS_ID>
    messageType.<ID>.closeStatusId=<PROCESS_CLOSED_STATUS_ID>
    messageType.<ID>.statusParamId=<PARAM_STATUS_ID>
    # опционально
    #messageType.<ID>.markMessagesReadStatusIds=<PROCESS_READ_STATUS_IDS>
    #messageType.<ID>.costParamId=<PARAM_COST_ID>
    #messageType.<ID>.autoCloseParamId=<PARAM_AUTO_CLOSE_ID>
    # максимальное количество однократно импортируемых сообщений топиков
    #messageType.<ID>.pageSize=100000
    #messageType.<ID>.topicId=<TOPIC_ID>
    # добавление в описание создаваемого процесса текста первого сообщения топика
    #messageType.<ID>.addFirstMessageInDescription=1
    # генерация события для каждого нового импортированного сообщения в процесса
    #messageType.<ID>.newMessageEvent=1

Где:

- <ID> - уникальный числовой положительный ID типа, для HelpDesk рекомендуется начинать его с 200;

- <TITLE> - наименование типа сообщения;

- <BILLING_ID> - строковый ID биллинга;

- <USER_LOGIN> и <USER_PSWD> - логин и пароль для доступа к BGBilling при импорте оттуда топиков;

- <PROCESS_TYPE_ID> - ID ранее настроенного типа процесса;

- <PROCESS_OPEN_STATUS_ID> - ID статуса процесса для открытых топиков;

- <PROCESS_CLOSED_STATUS_ID> - ID статуса процесса для закрытых топиков;

- <PARAM_STATUS_ID> - ID параметра процесса типа list, содержащего статус топика (темы): Ошибка, Консультация; значения для параметра следует взять в BGBilling, Справочники / Другие / Helpdesk - Статус тем;

- <PROCESS_READ_STATUS_IDS> - разделённые запятыми ID статусов процесса, при переводе процесса в который все сообщения в нём становятся прочитанными;

- <PARAM_COST_ID> - ID параметра процесса типа text, содержащего стоимость топика;

- <PARAM_AUTO_CLOSE_ID> - ID параметра процесса типа list, содержащего флаг автозакрытия топика;

- <TOPIC_ID> - ID единственного HelpDesk топика для тестирования импорта;

Настройка типа сообщения доступна (конфигурация Plugin BGBilling) в Демо.

#### Планировщик

Создание процессов из топиков и импорт в них сообщений осуществляется стандартной задачей планировщика Kernel Message Exchange.

#### Отладка

Для быстрой отладки интеграции рекомендуется установить в конфигурации типа сообщения ID единственного топика HelpDesk в ключе topicId, в конфигурации задачи планировщика указать ID типа сообщения в ключе messageTypeIds. Задачу синхронизации запускать вручную, проверяя корректность получившегося процесса, параметров и сообщений в нём. Проверить установку исполнителя процесса, отправку в него сообщений, закрытие топика после закрытия процесса. Все эти операции выполняются сразу после действий в BGERP.

### Кастомизация карточки договора

#### Пункт меню "Оплатить до"

Сумма тарифов рассчитывается исходя из названий вида Тариф такой-то (400 р.). Далее выполняется расчёт исходящего остатка для месяца в 30 дней. JSP файл с комментарием по установке внутри.

## Использование

### Поиск

Плагин предоставляет функционал поиска договоров и объектов по базам биллинга. Поиск может осуществляться по номеру договора, комментарию, адресным параметрам.

Поиск по номеру и комментарию осуществляется по подстроке. Поиск по адресным параметрам - аналогично поиску контрагента, можно искать как по только по улице так и дополнять данные для поиска.

Возможен также поиск по нескольким типам параметров: текстовому, телефонному, дате. Для поиска необходимо выбрать тип параметра и названия параметров данного типа. Если не выбраны названия параметров, то поиск осуществляется по всем параметрам данного типа.

Из результатов поиска отображаются только первые 30 на каждый биллинг. Под результатами поиска в каждом из биллингов отображается число найденных и отображённых записей.

### Договор

Карточка договора отображает основные параметры договора в биллинге. Отдельно открываются не привязанные к контрагенту договоры. Через данный редактор BGERP может быть использован как веб-интерфейс для работы с договорами BGBilling.

Кнопка изменения контрагента () позволяет убрать привязку контрагента к договору либо привязать договор к одному из открытых в буфере контрагентов. Кнопка *Импорт вызывает импорт параметров из договора в выбранного контрагента, либо создаёт контрагента в соответствии с правилами импорта контрагентов и привязывает его к договору.

Кнопка Открыть в биллинге - позволяет быстро открыть вкладку договора клиенте BGBillingClient. Для этого клиент биллинга должен быть подключен к серверу под тем же пользователем, что и текущий пользователь в BGERP. Для открытия договора - нажать кнопку и перейти в клиент биллинга. Быстрый переход предназначен для операций с договором, не реализованных через интерфейс BGERP.

| Создание нового договора возможно только с из карточки контрагента.

### Контрагент

Плагин позволяет видеть в карточке контрагента привязанные к нему договора, а также создавать привязанные договора сконфигурированных типов.

Возможно копирование параметров в договоры, переход на карточку договора нажатием на ссылку-номер.

### HelpDesk

Импортированные из HelpDesk процессы выбираются в настроенной очереди процессов, с помощью фильтров выбирая процессы без исполнителей, либо назначенные на конкретное лицо.

В открытой карточке процесса меняется исполнитель и происходит переписка на вкладке с сообщениями.

| После первичного создания у процесса можно изменять его тип, связь с топиком HelpDesk не потеряется.