Активация
По умолчанию работа с корпоративными клиентами активирована для всех клиентов, подключенных по соответствующим тарифным планам (профессиональный). Но те клиенты, которые на момент появления функциональности корпоративных клиентов в системе имели клиентов с заполненными юридическими или банковскими реквизитами, переводятся в режим совместимости, при котором работа с юридическими реквизитами клиентов осуществляется по старой схеме, а работа с корпоративными клиентами отключена. Таким клиентам нужно в ручном режиме активировать работу с корпоративными клиентами.
Важно!
Перед активацией корпоративных клиентов убедитесь, что в заказах, создаваемых через API, тип контрагента соответствует типу контрагента клиента в заказе. Например, не должно быть такого, что тип контрагента в заказе "Физическое лицо", а в соответствующем клиенте тип контрагента не "Физическое лицо". Подробнее ознакомиться с логикой активации корпоративных клиентов можно здесь.
Триггеры
В связи с изменениями структуры данных заказа (поле order.customer теперь может содержать как клиента, так и корпоративного клиента, а так же появление полей order.contact и order.company), необходимо проверить все триггеры на изменение данных заказа, которые так или иначе работают с данными клиента order.customer. Если триггер не должен срабатывать на заказы, оформленные на корпоративного клиента, тогда надо в условие триггера добавить проверку order.customer.typeCode == 'customer'. В противном случае нужно доработать триггер, учитывая что набор полей клиента и корпоративного клиента в order.customer разный.
Работа с корпоративными клиентами через API
Раннее для доступа к данным всех клиентов использовались только методы /api/v5/customers/*. Теперь же для работы с корпоративными клиентами нужно использовать методы /api/v5/customers-corporate/*. В версиях API ниже 5 нет возможности работать с корпоративными клиентами.
Каждый корпоративный клиент содержит в себе 3 набора объектов:
- Список контактных лиц - это связи корпоративного клиента с клиентами. Для каждой связи можно указывать набор компаний, к которым принадлежит данное контактное лицо
- Список компаний - множество компаний в составе корпоративного клиента. Каждая компания имеет юридические и банковские реквизиты
- Список адресов - набор адресов данного клиента
Создание корпоративного клиента
Перед созданием корпоративного клиента необходимо создать клиентов, которые будут его контактными лицами, используя методы /api/v5/customers/create или /api/v5/customers-corporate/upload.
Создать самого корпоративного клиента можно используя метод /api/v5/customers-corporate/create, либо /api/v5/customers-corporate/upload для пакетной выгрузки. Контактные лица указываются в поле customerCorporate[customerContacts]. Данные реквизитов необходимо передавать в полях компании customerCorporate[companies][][contragent].
Также можно создать корпоративного клиента вместе с заказом /api/v5/orders/create. В этом случае предварительное создание клиента для контактного лица не обязательно, оно будет создано вместе с заказом.
Редактирование корпоративного клиента
- Для изменения основных данных корпоративного клиента используется метод
/api/v5/customers-corporate/{externalId}/edit
Для работы с наборами объектов в корпоративном клиенте используются свои api-методы:
- Добавить контактное лицо можно используя метод
/api/v5/customers-corporate/{externalId}/contacts/create - Отредактировать данные контактного лица можно используя метод
api/v5/customers-corporate/{externalId}/contacts/{entityExternalId}/edit. В качествеentityExternalIdиспользуетсяexternalIdклиента (либоidклиента, если передан параметрentityBy=id) - Создать компанию для корпоративного клиента можно используя метод
api/v5/customers-corporate/{externalId}/companies/create - Отредактировать данные компании можно используя метод
api/v5/customers-corporate/{externalId}/companies/{entityExternalId}/edit. В качествеentityExternalIdиспользуетсяexternalIdкомпании (либоidкомпании, если передан параметрentityBy=id) - Создать адрес для корпоративного клиента можно используя метод
api/v5/customers-corporate/{externalId}/addresses/create - Отредактировать адрес можно используя метод
api/v5/customers-corporate/{externalId}/addresses/{entityExternalId}/edit. В качествеentityExternalIdиспользуетсяexternalIdадреса (либоidадреса, если передан параметрentityBy=id)
Работа с заказом
Оформление заказа на клиента, не являющегося корпоративным, не изменилось. Если же вам надо оформить заказ на корпоративного клиента, то в поле order[customer][type] необходимо передать значение customer_corporate. Если вы оформляете заказ на существующего клиента, то так же надо передать order[customer][id], order[customer][externalId] или order[customer][browserId], в противном случае необходимо передать наименование для нового корпоративного клиента, который будет создан order[customer][nickName].
Кроме того, необходимо указать контактное лицо, на которое оформлен заказ - order[contact]. Если данные контактного лица не указаны, то будет создан новый клиент, и он будет привязан к корпоративному клиенту, выбранному в заказе, как контактное лицо.
Опционально можно указать компанию, на которую оформлен заказ order[company]. Если компания указана и в заказ не переданы данные контрагента order[contragent], то в заказ будут подставлены данные контрагента из копании.
Синхронизация
- При синхронизации клиентов с юридическими реквизитами с системой, данные юридических реквизитов необходимо передавать в компанию корпоративного клиента
/api/v5/customers-corporate/{externalId}/companies/{entityExternalId}/edit, личные данные - в клиента, являющегося контактным лицом/api/v5/customers/{externalId}/edit, адреса, связанные с клиентом, в адреса корпоративного клиента/api/v5/customers-corporate/{externalId}/addresses/{entityExternalId}/edit, данные профиля (скидка, наименование, метки плохого/важного клиента) в самого корпоративного клиента/api/v5/customers-corporate/{externalId}/edit - При обратной синхронизации корпоративных клиентов удобно использовать метод получения истории изменений корпоративных клиентов
/api/v5/customers-corporate/history. Через этот метод можно получить историю изменений основных данных корпоративного клиента, данных компаний, адресов и связей контактных лиц и компаний. Если вам нужно отслеживать изменения данных клиентов, которые являются контактными лицами корпоративных клиентов, то следует использовать метод/api/v5/customers/history, и с помощью фильтраfilter[contactIds][]в методе/api/v5/customers-corporateнаходить корпоративного клиента, для которого данный клиент является контактным лицом. - При обратной синхронизации заказов важно учитывать, что теперь в
order[customer]могут быть как данные клиента, так и данные корпоративного клиента!
Пример создания корпоративного клиента с вложенными объектами
{
"externalId": "corp_3144",
"nickName": "My Company",
"site": "main",
"addresses": [
{
"index": "75002",
"city": "Paris ",
"text": "16, Main street 2nd floor",
"countryIso": "FR",
"externalId": "corp_3144_1"
},
{
"index": "650004",
"text": "Кемерово, ул. Лесная, д. 26, оф. 115",
"countryIso": "RU",
"externalId": "corp_3144_4"
}
],
"companies": [
{
"isMain": true,
"externalId": "corp_3144_company",
"active": true,
"name": "My Company",
"contragent": {
"INN": "1111111"
},
"address": {
"externalId": "corp_3144_4"
}
}
],
"customerContacts": [
{
"customer": {
"isMain": true,
"externalId": "existing_contact_425",
"site": "main"
},
"companies": [
{
"company": {
"externalId": "corp_3144_company"
}
}
]
}
]
}
Пример создания заказа с новым корпоративным клиентом
{
"externalId": "order_3144",
"firstName": "Contact first name",
"lastName": "Contact last name",
"customer": {
"type": "customer_corporate",
"nickName": "Corporate nick name"
}
}
Пример создания заказа с для существующего корпоративного клиента
{
"externalId": "order_3144",
"firstName": "Contact first name",
"lastName": "Contact last name",
"customer": {
"type": "customer_corporate",
"site": "main",
"externalId": "corp_3144"
},
"contact": {
"id": 34457
},
"company": {
"externalId": "corp_3144_company"
}
}