Активация
По умолчанию работа с корпоративными клиентами активирована для всех клиентов, подключенных по соответствующим тарифным планам (профессиональный). Но те клиенты, которые на момент появления функциональности корпоративных клиентов в системе имели клиентов с заполненными юридическими или банковскими реквизитами, переводятся в режим совместимости, при котором работа с юридическими реквизитами клиентов осуществляется по старой схеме, а работа с корпоративными клиентами отключена. Таким клиентам нужно в ручном режиме активировать работу с корпоративными клиентами.
Важно!
Перед активацией корпоративных клиентов убедитесь, что в заказах, создаваемых через 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"
}
}