Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Для активации мода необходимо предварительно активировать мод “Интеграция с SSO”, после чего активируем сам мод “Детальный маршрут для SSO” в marketplace.

...

Мод позволяет передавать следующий набор данных при установке параметров перехода:

...

информацию о том, какие участки маршрута можно бронировать и в какой последовательности.

Первоначально бронируются авиа, ж/д и отели, т.е. основные услуги, а уже потом создаются заказы на дополнительные услуги, например, на трансферы.

Для того, чтобы передать детали маршрута из внешней системы, необходимо добавить блок с CustomOption следующего вида, который активирует применения механизма контроля маршрута по командировке:

Code Block
 <sso:CustomOptions>
               <sso:CustomOption>
  <!--Zero or more repetitions:-->                <sso:Key>routeControl</sso:Key>
                  <sso:Value>true</sso:Value>
               </sso:CustomOption>
</sso:CustomOptions>

Также мы можем передать дополнительные управляющие флаги:

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

  • allowedExtraServices - разрешенные дополнительные услуги, которые можно заказывать после заказа основных

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

Пример использования ключей:

Code Block
languagexml
 <sso:CustomOptions>
               <sso:CustomOption>
                  <sso:Key>routeControl</sso:Key>
                  <sso:Value>true</sso:Value>
               </sso:CustomOption>
                <sso:CustomOption>
                  <!--Optional:--><sso:Key>personalDays</sso:Key>
                  <sso:Value>2020-12-21,2020-12-22</sso:Value>
               </sso:CustomOption>
               <sso:CustomOption>
                  <sso:Key>routeControl<Key>allowedExtraServices</sso:Key>
                  <!--Optional:--><sso:Value>transfer</sso:Value>
               </sso:CustomOption>
               <sso:CustomOption>
                  <sso:Key>updateMode</sso:Key>
                  <sso:Value>true<Value>update</sso:Value>
               </sso:CustomOption>
            </sso:CustomOptions>

Кроме того, мы передаем коллекцию блоков с участками маршрута следующего вида:

Code Block
<sso:RoutePart>
                  <sso:UniqueId>d043f458-b6e7-4c73-8e06-b6ef615a0ea0</sso:UniqueId>
                  <sso:DateDepart>2020-11-11</sso:DateDepart>
                  <!--Optional:-->
                  <sso:Origin>Самара</sso:Origin>
                  <!--Optional:-->
                  <sso:

...

DateReturn>2020-11-20</sso:

...

DateReturn>
                  

...

<sso:Destination>Москва</sso:Destination>
                  <sso:ServiceType>transport</sso:ServiceType>
                  <sso:DepartureAdvanceShiftDays>1</sso:DepartureAdvanceShiftDays>
                  <sso:DeparturePostShiftDays>2</sso:DeparturePostShiftDays>
                  <sso:ReturnAdvanceShiftDays>0</sso:ReturnAdvanceShiftDays>
                  <sso:ReturnPostShiftDays>0</sso:ReturnPostShiftDays>
                  <sso:BookingSequence>1</sso:BookingSequence>
</sso:RoutePart>

Разберем структуру этого элемента:

  • UniqueId - guid, используемый для сравнения участка маршрута. При формировании набора участков в вашей ИС, вы должны сгенерить и сохранить для каждого участка уникальный GUID, который впоследствии будет использован для

  • DateDepart - дата отправления, обязательный параметр, гггг-мм-дд

  • DateReturn - дата возвращения, необязательный параметр, используется для формирования маршрута туда и обратно. Для ServiceType == lodging дата является датой выезда и её передача обязательна, формат гггг-мм-дд

  • Origin - пункт отправления, не заполняется для ServiceType == lodging. Может быть идентификатором или названием города, строка или int.

  • Destination - пункт назначения, обязательный параметр, может быть идентификатором или названием города, строка или int.

  • ServiceType - тип услуги - transport для авиа и ж/д, lodging - для отелей

  • DepartureAdvanceShiftDays - на сколько дней назад можно сдвинуть дату отправления, int. Если двигать дату нельзя, то 0.

  • DeparturePostShiftDays - на сколько дней вперед можно сдвинуть дату отправления, int. Если двигать дату нельзя, то 0.

  • ReturnPostShiftDays - на сколько дней вперед можно сдвинуть дату возвращения, int. Если двигать дату нельзя, то 0.

  • ReturnAdvanceShiftDays - на сколько дней назад можно сдвинуть дату возвращения, int. Если двигать дату нельзя, то 0.

  • BookingSequence - последовательность бронирования услуг, int. Услугу с большим значением BookingSequence можно бронировать только после того, как все услуги с меньшим BookingSequence уже забронированы. Допуслуги(не авиа, жд и отели) могут бронироваться только после того, как все основные услуги в рамках маршрута были заказаны

Info

Для получения идентификаторов или названий городов отправления и назначения следует использовать веб-сервис получения городов из БД Кортеос.

Info

Для тестовой генерации guids используйте веб-сервис: https://www.guidgenerator.com/online-guid-generator.aspx

Пример использования

Прежде всего у пользователя должны быть активированы два мода:

  1. Интеграция с SSO (ModSSOService)

  2. Мод, описанный в этой статье

Предположим, мы сделали передачу параметров поездки такого вида:

Code Block
languagexml
<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>
            <!--Optional:-->
            <sso:OuterId>marina-321</sso:OuterId>
            <!--Optional:-->
            <sso:CustomRoute>
               <!--Zero or more repetitions:-->
               <sso:RoutePart>
                  <sso:DateDepart>2020-11-10</sso:DateDepart>
                  <sso:DateReturn>2020-11-15</sso:DateReturn>
                  <!--Optional:-->
                  <sso:Origin>Москва</sso:Origin>
                  <!--Optional:-->
                  <sso:Destination>Самара</sso:Destination>
                  <!--Optional:-->
                  <sso:ServiceType>transport</sso:ServiceType>
                  <sso:DepartureAdvanceShiftDays>1</sso:DepartureAdvanceShiftDays>
                  <sso:DeparturePostShiftDays>2</sso:DeparturePostShiftDays>
                  <sso:ReturnAdvanceShiftDays>1</sso:ReturnAdvanceShiftDays>
                  <sso:ReturnPostShiftDays>2</sso:ReturnPostShiftDays>
                  <sso:BookingSequence>1</sso:BookingSequence>
               </sso:RoutePart>
                <sso:RoutePart>
                  <sso:DateDepart>2020-11-11</sso:DateDepart>
                  <!--Optional:-->
                  <sso:Origin>Самара</sso:Origin>
                  <!--Optional:-->
                  <sso:Destination>Москва</sso:Destination>
                  <!--Optional:-->
                  <sso:ServiceType>transport</sso:ServiceType>
                  <sso:DepartureAdvanceShiftDays>1</sso:DepartureAdvanceShiftDays>
                  <sso:DeparturePostShiftDays>2</sso:DeparturePostShiftDays>
                  <sso:ReturnAdvanceShiftDays>0</sso:ReturnAdvanceShiftDays>
                  <sso:ReturnPostShiftDays>0</sso:ReturnPostShiftDays>
                  <sso:BookingSequence>1</sso:BookingSequence>
               </sso:RoutePart>
               <sso:RoutePart>
                  <sso:DateDepart>2020-11-10</sso:DateDepart>
                  <sso:DateReturn>2020-11-15</sso:DateReturn>
                  <!--Optional:-->
                  <sso:Origin />
                  <!--Optional:-->
                  <sso:Destination>Самара</sso:Destination>
                  <!--Optional:-->
                  <sso:ServiceType>lodging</sso:ServiceType>
                  <sso:DepartureAdvanceShiftDays>1</sso:DepartureAdvanceShiftDays>
                  <sso:DeparturePostShiftDays>2</sso:DeparturePostShiftDays>
                  <sso:ReturnAdvanceShiftDays>1</sso:ReturnAdvanceShiftDays>
                  <sso:ReturnPostShiftDays>2</sso:ReturnPostShiftDays>
                  <sso:BookingSequence>2</sso:BookingSequence>
               </sso:RoutePart>
            </sso:CustomRoute>
            <!--Optional:-->
            <sso:CustomOptions>
               <!--Zero or more repetitions:-->
               <sso:CustomOption>
                  <!--Optional:-->
                  <sso:Key>routeControl</sso:Key>
                  <!--Optional:-->
                  <sso:Value>true</sso:Value>
               </sso:CustomOption>
            </sso:CustomOptions>
            <!--Optional:-->
            <sso:AccountDetails id_Group="хх" GroupSecurityKey="test" Email="ххххх@test.ru">
               <!--Optional:-->
            </sso:AccountDetails>
         </sso:request>
      </sso:Set>
   </soapenv:Body>
</soapenv:Envelope>