Редактирование или создание новой персоны

Данный метод позволяет изменить данные персоны и параметры связанных объектов:

  • Данные персоны (ФИО, дата рождения, гражданство и так далее);

  • Документы (1 персона может иметь 0...n документов);

  • Контактная информация (1 персона может иметь 0...n контактов);

  • Мильные карты для авиаперелетов и ж/д (1 персона может иметь 0...n карт);

  • Тревел-политики (1 персона может иметь 0...n связей с политиками);

  • Структурные и структурные меняемые коды (1 персона может иметь 0...n кодов);

  • Данные аккаунта пользователя (у персоны может быть / не быть пользовательский доступ в Кортеос; также доступ может быть заблокирован).

Также в запрос добавлен контейнер Options, который в дальнейшем будет расширяться разными опциями.


Сейчас в контейнер внесены поля:

  • SendEmailOnAccountCreation для указания отправки/запрета отправки email-сообщения пользователю при создании персоны.

Возможные значения поля:
- true (отправлять письмо);
- false (не отправлять).

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

  • KeepMissingRelations для того, чтобы сохранялись связи, которые не были переданы в запросе.

Возможные значения поля:
- true (сохранять привязки сущностей к персоне, которые не были переданы в запросе);
- false (удалять привязки сущностей к персоне, которые не были переданы в запросе).

Значение по умолчанию: false
Этот параметр введен для того, чтобы можно было отредактировать поля персоны (ФИО, дату рождения и т.п.) не передавая весь массив данных с привязками других сущностей (документов, мильных карт и т.п.).
Если параметр передан, как true, то в таком случае при сохранении персоны пропускаются проверки привязок, и не производится удаление сущностей, которые не были переданы в запросе.

Внимание: Если передавать справочники привязанных к персоне сущностей, и указывать параметр KeepMissingRelations = true, то из-за этого будут возникать дубли привязок, поэтому его следует использовать только в том случае, когда есть точное понимание, как этот параметр работает, и для чего он нужен.

  • NoneDefaultCode проставлять дефолтный код “none“ в структурных или структурных меняемых справочниках, если не был указан код.
    (release 03.11.2020)

Возможные значения поля:
-true (проставлять);
-false (не проставлять).

Внимание: Если в справочнике не существует кода со значением none, то система создаст новый и привяжет его. Если код уже выбран для справочника, то система пропустит данный справочник.

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

Для получения контекста клиента используется сервис OrchestratedPersonEditor.asmx.

WSDL можно скачать с демо-сайта: https://stage1.corteos.ru/XmlGate/V3/Orchestrated/OrchestratedPersonEditor.asmx?WSDL

Для работы в продуктовой среде необходимо заменить stage1.corteos.ru на свой домен (на котором работают пользователи вашей компании)

Метод для создания/редактирования персоны: https://stage1.corteos.ru/XmlGate/V3/Orchestrated/OrchestratedPersonEditor.asmx?op=OrchestratedPersonSet

Запрос метода редактирования содержит в себе данные из метода загрузки персоны.

Пример ответа с ошибкой:

Замечания по структуре запроса

Для редактирования существующей персоны следует передать её идентификатор в поле id_Person:

Если мы создаем новую персону (пример запроса - person-creation-example.xml), то идентификатор следует оставить пустым, т. е. в XML должен отсутствовать элемент id_Person.

Также следует учитывать, что при создании новой персоны у нас должны быть обнулены идентификаторы связанных объектов:

  • id_MileCard;

  • id_Document;

  • id_Client;

  • id_Contact.

В том случае, если мы при создании новой персоны в одном из этих полей передадим значение, то возникнет ошибка валидации данных и персона не будет сохранена:

<cor:OrchestratedPersonMileCard Provider="SU" Number="1234567"> <cor:id_MileCard>35</cor:id_MileCard> </cor:OrchestratedPersonMileCard>

Ошибка будет с типом InvalidDataException:

<UniversalApiError Type="InvalidDataException" Text="Ошибка валидации объекта OrchestratedPersonMileCard Мильная или бонусная карта 35 SU 1234567: поле id_MileCard не может содержать значение, если персона ещё не была сохранена, сохранение не было произведено"/>

В случае удачного сохранения новой персоны мы получим её идентификатор, а коллекция ошибок будет пустой:

На портале логов мы увидим полный протокол редактирования (также он доступен как вложение к этому документу):

Правила валидации для OrchestratedPersonContainer

____