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

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

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

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

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

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

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

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

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

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


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

  1. SendEmailOnAccountCreation для указания отправки/запрета отправки email-сообщения пользователю при создании персоны.Возможные значения поля:

    • true (отправлять письмо);

    • false (не отправлять).

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

  2. NoneDefaultCode проставлять дефолтный код “none“ в структурных или структурных меняемых справочниках, если не был указан код.
    (release 03.11.2020)
    Возможные значения поля:
    -true (проставлять);
    -false (не проставлять).
    Внимание: Если в справочнике не существует кода со значением none, то система создаст новый и привяжет его. Если код уже выбран для справочника, то система пропустит данный справочник.

  3. 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>

 

____