Редактирование или создание новой персоны
Данный метод позволяет изменить данные персоны и параметры связанных объектов:
Данные персоны (ФИО, дата рождения, гражданство и так далее);
Документы (1 персона может иметь 0...n документов);
Контактная информация (1 персона может иметь 0...n контактов);
Мильные карты для авиаперелетов и ж/д (1 персона может иметь 0...n карт);
Тревел-политики (1 персона может иметь 0...n связей с политиками);
Структурные и структурные меняемые коды (1 персона может иметь 0...n кодов);
Данные аккаунта пользователя (у персоны может быть / не быть пользовательский доступ в Кортеос; также доступ может быть заблокирован).
Также в запрос добавлен контейнер Options, который в дальнейшем будет расширяться разными опциями.
Сейчас в контейнер внесены поля:
SendEmailOnAccountCreation для указания отправки/запрета отправки email-сообщения пользователю при создании персоны.Возможные значения поля:
true (отправлять письмо);
false (не отправлять).
Если данный контейнер не передавать (т. е., ничего не менять в запросе), то письмо будет отправляться по умолчанию.
NoneDefaultCode проставлять дефолтный код “none“ в структурных или структурных меняемых справочниках, если не был указан код.
(release 03.11.2020)
Возможные значения поля:
-true (проставлять);
-false (не проставлять).
Внимание: Если в справочнике не существует кода со значением none, то система создаст новый и привяжет его. Если код уже выбран для справочника, то система пропустит данный справочник.KeepMissingRelations для того, чтобы сохранялись связи, которые не были переданы в запросе.
Возможные значения поля:true (сохранять привязки сущностей к персоне, которые не были переданы в запросе);
false (удалять привязки сущностей к персоне, которые не были переданы в запросе).
Значение по умолчанию: false
Этот параметр введен для того, чтобы можно было отредактировать поля персоны (ФИО, дату рождения и т.п.) не передавая весь массив данных с привязками других сущностей (документов, мильных карт и т.п.).
Если параметр передан, как true, то в таком случае при сохранении персоны пропускаются проверки привязок, и не производится удаление сущностей, которые не были переданы в запросе.
При переданном параметре true производится проверка значения вновь передаваемой сущности и, если среди уже имеющихся обнаружена сущность с таким же значением, то новое значение не добавляется. Если же передаваемое значение не совпадает со значением имеющихся сущностей, то создается еще одна новая сущность с новым значением в дополнение к имеющимся.
Внимание: Если передавать справочники привязанных к персоне сущностей, и указывать параметр KeepMissingRelations = true, то из-за этого будут возникать дубли привязок, поэтому его следует использовать только в том случае, когда есть точное понимание, как этот параметр работает, и для чего он нужен.
Для проведения данной операции необходимо пройти авторизацию, а также, если мы работаем от имени агента, получить контекст клиента. Для получения контекста клиента используется сервис OrchestratedPersonEditor.asmx. WSDL можно скачать с демо-сайта: https://demo.corteos.travel/XmlGate/V3/Orchestrated/OrchestratedPersonEditor.asmx?WSDL Для работы в продуктовой среде необходимо заменить demo.corteos.travel на свой домен (на котором работают пользователи вашей компании) Метод для создания/редактирования персоны: https://demo.corteos.travel/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
Удаление сущности
Для удаления какого-либо структурного элемента персоны (документа, контакта и т.п.) необходимо передать внутри него элемент <Operation>delete</Operation>
Например:
<cor:OrchestratedPersonTravelPolicy id_TravelPolicy="2125" PolicyName="Лимит цена" ServiceType="avia">
<cor:CorteosVersions>
<cor:int>2</cor:int>
</cor:CorteosVersions>
<cor:Operation>delete</cor:Operation>
</cor:OrchestratedPersonTravelPolicy>
____