Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Для работы с “жёстким” или “мягким” контейнером командировки необходимо:

Обязательно отключить мод Первичный контейнер командировки

Произвести настройки Интеграции с SSO - Интеграция с SSO (ModSSOService)
тест https://test.sso.corteos.ru/
продуктив https://prd.sso.corteos.ru/

Активировать моды.
В данной задаче моды достаточно просто активировать, через тревел менеджмент управляем настройками клиента от его имени и включаем чекбоксы для того, чтобы моды заработали. Настройку производить нет необходимости сверх базовых настроек SSO-портала.
мод Интеграция с SSO.
мод Контейнер командировки: жесткое сохранение структуры маршрута или
мод Контейнер командировки: мягкое сохранение структуры маршрута


Web Services
Описание службы: http://test.sso.corteos.ru/XmlGate/DataService.asmx
Файл WSDL: https://test.sso.corteos.ru/XmlGate/DataService.asmx?WSDL

Сценарий использования
При переходе при помощи SSO, мы инициализируем запрос при помощи следующих данных:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sso="https://sso.corteos.ru/">
   <soapenv:Header/>
   <soapenv:Body>
      <sso:Set>
         <!--Optional:-->
         <sso:request>
          <sso:OuterId>0000000001</sso:OuterId>
            <!--Optional:-->
            <sso:CurrentRoute>
               <!--Optional:-->
               <sso:Origin>Москва</sso:Origin>
               <!--Optional:-->
               <sso:Destination>Санкт-Петербург</sso:Destination>
               <sso:DepartureDate>2024-09-21</sso:DepartureDate>
               <sso:ReturnDate>2024-09-22</sso:ReturnDate>
            </sso:CurrentRoute>
            <!--Optional:-->
            <sso:Persons>
               <!--Zero or more repetitions:-->
               <sso:Person LastName="Ли" FirstName="Лида" MiddleName="Ивановна" LastNameLatin="Li" FirstNameLatin="Lida" MiddleNameLatin="Ivanovna" Gender="false" DateBirth="1988-10-11">
                  <!--Optional:-->
                  <sso:INN>111111111111</sso:INN>
                  <!--Optional:-->
                  <sso:KPP>111111111</sso:KPP>
                  <!--Optional:-->
                  <sso:CountryAlpha2>RU</sso:CountryAlpha2>
                   <!--Optional:-->
                  <sso:PersonalCodes>
                     <!--Zero or more repetitions:-->
                     <sso:Code DictionaryName="Табельный номер" CodeValue="00003" IsPrimaryKey="true" />
                  </sso:PersonalCodes>
               </sso:Person>
            </sso:Persons>
            <!--Optional:-->
            <sso:AccountDetails id_Group="8417" GroupSecurityKey="359ED695-6B6F-464E-957F-2D2033ACFFD5" Email="usr8417@corteos.travel"/>
         </sso:request>
      </sso:Set>
   </soapenv:Body>
</soapenv:Envelope>

OuterId -идентификатор командировки во внешней системе,
Origin -string, город отправления пассажира, название города из справочника городов,
Destination -string, город следующего назначения,название города из справочника городов,
DepartureDatedatetime,  дата отправления пассажира в пункт назначения,
ReturnDate -datetime, дата отправления пассажира обратно,
LastName -string, фамилия персоны на русском языке,
FirstName -string, имя персоны на русском языке,
MiddleName -string, отчество персоны, если нет - передаем пробельный символ,
LastNameLatin, FirstNameLatin, MiddleNameLatin -string, все то же самое, но на английском языке, строка. Если у вас в системе эти данные не хранятся, то русский аналог необходимо транслитерировать по ГОСТ 7.79-2000 (система Б)
Gender - true - мужчина, false - женщина,
DateBirth -datetime, дата рождения,
INN -int, ИНН организации, в которой работает персона,
KPP -int, КПП организации, в которой работает персона.
По полям ИНН и КПП мы привязываем персону к нужной компании.
CountryAlpha2- страна?
CodeValue-значение кода, предполагается, что оно должно быть уникально внутри справочника с названием DictionaryName - данное ограничение должен отслеживать разработчик клиентского приложения (обязательно для заполнения, не может быть пустым, строка);
IsPrimaryKey- К персоне может быть привязано несколько кодов из разных справочников. Например, Табельный номер (это может быть идентификатор в учетной системе клиента), Категория должности (для применения тревел-политики) и т.п.

Данное значение обязательно должно быть уникальным.

Ключ isPrimaryKey = true позволяет определить, какой код отвечает за идентификатор пользователя. По этому параметру синхронизируются данные из запроса с данными в БД и обновляются значениями, передаваемыми в запросе.

Если такого параметра нет, то мы пробуем искать по документу, а потом по ФИО + ДР. Если никто не нашелся, создаем нового.
AccountDetails - данные для авторизации пользователя из внутренней клиентской системы Corteos
id_Group-int, идентификатор компании заказчика,
GroupSecurityKey- ключ для SSO,
Email - это логин пользователя, который создает командировку,
Параметры id_Group и GroupSecurityKey для AccountDetails предоставляются агентством,также их можно определить в настройках договора:

image-20240826-173609.png

Пример ответа:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <SetResponse xmlns="https://sso.corteos.ru/">
         <SetResult>
            <OuterId>0000000001</OuterId>
            <CurrentRoute>
               <Origin>Москва</Origin>
               <Destination>Санкт-Петербург</Destination>
               <DepartureDate>2024-09-21T00:00:00</DepartureDate>
               <ReturnDate>2024-09-22T00:00:00</ReturnDate>
            </CurrentRoute>
            <CustomRoute/>
            <CustomOptions/>
            <Persons>
               <Person LastName="Ли" FirstName="Лида" MiddleName="Ивановна" LastNameLatin="Li" FirstNameLatin="Lida" MiddleNameLatin="Ivanovna" Gender="false" DateBirth="1988-10-11T00:00:00">
                  <INN>111111111111</INN>
                  <KPP>111111111</KPP>
                  <CountryAlpha2>RU</CountryAlpha2>
                  <Documents/>
                  <Contacts/>
                  <BonusCards/>
                  <PersonalVisas/>
                  <PersonalCodes>
                     <Code DictionaryName="Табельный номер" CodeValue="00003" IsPrimaryKey="true"/>
                  </PersonalCodes>
               </Person>
            </Persons>
            <BudgetCodes/>
            <AccountDetails id_Group="8417" GroupSecurityKey="359ED695-6B6F-464E-957F-2D2033ACFFD5" Email="usr8417@corteos.travel">
               <id_Role xsi:nil="true"/>
            </AccountDetails>
            <id_User>145076</id_User>
            <CorteosId>9e3dec0a-f6d6-476d-8061-827ce3429494</CorteosId>
            <CreationDate>2024-08-27T14:50:24.853537+03:00</CreationDate>
            <AugmentationData>&lt;xml /></AugmentationData>
         </SetResult>
      </SetResponse>
   </soap:Body>
</soap:Envelope>

В ответе веб-сервиса нам следует обратить внимание на поле CorteosId (33 строка)
Значение выглядит таким образом:

 <CorteosId>xxxx-xxx-xxx-xxxx-xxxxxxxxx</CorteosId>

Данный идентификатор мы используем при SSO переходе на адрес:
https://домен/mods/ssoentrance/go?portalId={CorteosId}

Перейдя по этой ссылке мы попадаем на страницу созданной командировки.

Если был включен мод Контейнер командировки: жесткое сохранение структуры маршрута будет автоматически отрисован таймлайн поездки на основании тех параметров которые вы указали при создании командировки

 

image-20240823-153755.png

Если был включен мод Контейнер командировки: мягкое сохранение структуры маршрута не будет автоматически отрисован таймлайн, а только после добавления услуг.


  • No labels