86 lines
5.3 KiB
Markdown
Raw Permalink Normal View History

# Orders
## Create
### Items
### Delivery
### Addresses
Для адреса оплаты `id_address_invoice`, если заказ сделан обычным клиентом, используются данные
клиента `order[customer]`
| CRM field / value | CMS field |
|-------------------------------------------|---------------------------|
| default | `alias` |
| `order[customer][firstName]` | `firstname` |
| `order[customer][lastName]` | `lastname` |
| `order[customer][phones][0][number]` | `phone` |
| `order[customer][address][text]` | `address1`, `address2` |
| `order[customer][address][countryIso]` | `id_country` |
| `order[customer][address][city]` | `city` |
| `order[customer][address][index]` | `postcode` |
| `order[customer][address][region]` | `id_state` |
Если заказ сделан корпоративным клиентом и опция "Корпоративные клиенты" включена, то используются данные
контакта `order[contact]`, а также указываются дополнительные поля — ИНН и название компании.
| CRM field / value | CMS field |
|-------------------------------------------|---------------------------|
| -- | `alias` |
| `order[contact][firstName]` | `firstname` |
| `order[contact][lastName]` | `lastname` |
| `order[contact][phones][0][number]` | `phone` |
| `order[company][address][text]` | `address1`, `address2` |
| `order[company][address][countryIso]` | `id_country` |
| `order[company][address][city]` | `city` |
| `order[company][address][index]` | `postcode` |
| `order[company][address][region]` | `id_state` |
| `order[company][contragent][INN]` | `vat_number` |
| `order[company][name]` | `company` |
Для адреса доставки (`id_address_delivery`) используются данные заказа.
| CRM field / value | CMS field |
|-------------------------------------------|---------------------------|
| default | `alias` |
| `order[firstName]` | `firstname` |
| `order[lastName]` | `lastname` |
| `order[phone]` | `phone` |
| `order[delivery][address][text]` | `address1`, `address2` |
| `order[delivery][address][countryIso]` | `id_country` |
| `order[delivery][address][city]` | `city` |
| `order[delivery][address][index]` | `postcode` |
| `order[delivery][address][region]` | `id_state` |
После сборки объекта адреса выполняется проверка на валидность (_RetailcrmTools::validateEntity()_). Если адрес валиден,
то выполняется проверка наличия такого же адреса в CMS (_RetailcrmTools::assignAddressIdsByFields()_) и если адрес
найден, то берется его id (позволяет не создавать дубль адреса). В итоге, если id не был найден, то создается новый
адрес, иначе — сохраняется и используется существующий
### Payments
## Update
Обновление данных адреса в CMS происходит, если в заказе было изменено одно из следующих полей:
* `order[firstName]`
* `order[lastName]`
* `order[delivery][address]`
* `order[phone]`
Если были изменены поля адреса, на основе которых формируется `address1` и `address2` поля заказа, то делается запрос в
CRM для получения полной информации по заказу (проверка осуществляется в
функции `RetailcrmHistoryHelper::isAddressLineChanged()`). При этом данные, полученные по истории перезаписывают данные,
полученные по конкретному заказу — это сделано для сохранения возможности кастомизировать поля в фильтре.
Далее в зависимости от версии CMS возможны 2 варианта:
* На версии < 1.7.7 - происходит создание нового объекта адреса, после чего он присваивается заказу
* На версии \>= 1.7.7 - обновляются данные текущего адреса заказа
## Delete
При удалении заказа из Crm в CMS ничего не изменится