...
Для корректного сопоставления персон, нам необходимо создать справочник структурных кодов, привязанный ко всем организациям внутри группы клиента, который будет содержать уникальный идентификатор внешней системы, на основании которого будет проводиться обновление данных пассажира. В нашем примере справочник будет называться “Идентификатор в SAP”
...
Активация и настройка модов
...
Code Block | ||
---|---|---|
| ||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sso="https://sso.corteos.ru/"> <soapenv:Header/> <soapenv:Body> <sso:Set> <sso:request> <sso:OuterId>2000000171</sso:OuterId> <sso:CustomRoute> <sso:RoutePart> <sso:DateDepart>2020-12-14</sso:DateDepart> <sso:Origin>Москва</sso:Origin> <sso:Destination>Санкт-Петербург</sso:Destination> <sso:DepartureAdvanceShiftDays>1</sso:DepartureAdvanceShiftDays> <sso:DeparturePostShiftDays>1</sso:DeparturePostShiftDays> <sso:ReturnAdvanceShiftDays>0</sso:ReturnAdvanceShiftDays> <sso:ReturnPostShiftDays>0</sso:ReturnPostShiftDays> <sso:BookingSequence>1</sso:BookingSequence> </sso:RoutePart> <sso:RoutePart> <sso:DateDepart>2020-12-16</sso:DateDepart> <sso:Origin>Самара</sso:Origin> <sso:Destination>Санкт-Петербург</sso:Destination> <sso:DepartureAdvanceShiftDays>1</sso:DepartureAdvanceShiftDays> <sso:DeparturePostShiftDays>1</sso:DeparturePostShiftDays> <sso:ReturnAdvanceShiftDays>0</sso:ReturnAdvanceShiftDays> <sso:ReturnPostShiftDays>0</sso:ReturnPostShiftDays> <sso:BookingSequence>1</sso:BookingSequence> </sso:RoutePart> </sso:CustomRoute> <sso:CustomOptions> <sso:CustomOption> <sso:Key>routeControl</sso:Key> <sso:Value>true</sso:Value> </sso:CustomOption> <sso:CustomOption> <sso:Key>automaticServices</sso:Key> <sso:Value>transport,hotel</sso:Value> </sso:CustomOption> <sso:CustomOption> <sso:Key>allowedExtraServices</sso:Key> <sso:Value>transfer</sso:Value> </sso:CustomOption> <sso:CustomOption> <sso:Key>updateMode</sso:Key> <sso:Value>update</sso:Value> </sso:CustomOption> <sso:CustomOption> <sso:Key>personalDays</sso:Key> <sso:Value>2020-12-14,2020-12-15</sso:Value> </sso:CustomOption> </sso:CustomOptions> <sso:Persons> <!--Zero or more repetitions:--> <sso:Person LastName="Максимов" FirstName="Максим" MiddleName="Максимович" LastNameLatin="Maximov" FirstNameLatin="Maxim" MiddleNameLatin="Maximovich" Gender="true" DateBirth="2000-02-01"> <!--Optional:--> <sso:INN>987987987</sso:INN> <!--Optional:--> <sso:KPP>779901001</sso:KPP> <!--Optional:--> <sso:CountryAlpha2>RU</sso:CountryAlpha2> <!--Optional:--> <sso:Documents> <!--Zero or more repetitions:--> <sso:Document CountryCode="RU" DocumentNumber="4505111222" DocumentType="NationalPassport" DateValid="2030-10-10"/> </sso:Documents> <!--Optional:--> <sso:Contacts> <!--Zero or more repetitions:--> <sso:Contact ContactType="MobilePhone" Value="+79162223311"/> </sso:Contacts> <!--Optional:--> <sso:PersonalCodes> <!--Zero or more repetitions:--> <sso:Code DictionaryName="Идентификатор в SAP" CodeValue="1234" IsPrimaryKey="true"/> </sso:PersonalCodes> </sso:Person> </sso:Persons> <sso:AccountDetails id_Group="XX" GroupSecurityKey="test" Email="user@somedomain.ru"> <sso:PersonToCreate LastName="Админских" FirstName="Максим" MiddleName="Валерьевич" LastNameLatin="Adminskih" FirstNameLatin="Maksim" MiddleNameLatin="Valerievich" Gender="true" DateBirth="2000-01-02"> <sso:INN>987987987</sso:INN> <sso:KPP>779901001</sso:KPP> <sso:CountryAlpha2>RU</sso:CountryAlpha2> </sso:PersonToCreate> <sso:id_Role>1</sso:id_Role> </sso:AccountDetails> </sso:request> </sso:Set> </soapenv:Body> </soapenv:Envelope> |
...
OuterId - идентификатор заявки в SAP, по нему система понимает, что делать - обновить существующую командировку(если с таким номером уже был переход ранее) или создать новую
CustomRoute - участки маршрута, целостность которых мы контролируем
RoutePart - элемент маршрута, один участок
Origin - string, обязательный элемент, название или цифровой идентификатор города из справочника городов
Destination - string, обязательный элемент, название или цифровой идентификатор города из справочника городов
DateDepart - datetime, обязательный элемент, дата отправления пассажира в пункт назначения
DateReturn - datetime, не обязательный элемент, нужен для участков вида туда и обратно
DepartureAdvanceShiftDays - int, обязательный, на сколько дней назад можно сдвинуть вылет в пункт назначения
DeparturePostShiftDays - int, обязательный, на сколько дней вперед можно сдвинуть вылет в пункт назначения
ReturnAdvanceShiftDays - int, обязательный, на сколько дней назад можно сдвинуть возвращение в пункт отправления, для маршрута в одну сторону передаем 0
ReturnPostShiftDays - int, обязательный, на сколько дней вперед можно сдвинуть возвращение в пункт отправления, для маршрута в одну сторону передаем 0
BookingSequence - int, обязательный, в том случае, если нам нужно бронировать услуги друг за другом(например, сперва один участок, а потом другой), то тут передаем последовательность этой процедуры бронирования. Если нас это не волнует, а мы работаем в стандартном режиме: сперва транспорт, потом гостиницы, потом сервисы, то всегда передаем 1
Persons - список пассажиров командировки, подробности о структуре данных можно почитать на SSO портале.
CustomOptions - контейнер бизнес-правил в формате ключ-значение(строки), которые содержат информацию о том, как должна система вести себя с командировкой
routeControl - true для командировок, false для личных поездок, включает или выключает логику контроля маршрута
automaticServices - transport,hotel - какие услуги можно бронировать в автоматическом режиме(типы услуг, доступны transport - авиа или жд и hotel - гостиница)
allowedExtraServices - какие дополнительные сервисы можно заказывать, в настоящий момент только transfer
personalDays - список личных дней через запятую в формате dd-MM-yyyy, правило бронирований отеля такое, что в одном заказе не может быть и личный, и рабочий день
updateMode - update - говорит о том, что нужно обновить информацию о командировки(полное перетирание данных новыми)
AccountDetails - информация о пользователе для создания аккаунта на лету или входа в систему. Если пассажир также является пользователем, его все равно надо передать в секции Persons, т.е. дублируем данные для унификации.
Info |
---|
При передаче персоны следует обратить внимание на то, что мы определяем профайл по идентификатору в SAP, таким образом нужно уделять особое внимание корректной передаче этого кода |
Code Block | ||
---|---|---|
| ||
<sso:PersonalCodes>
<sso:Code DictionaryName="Идентификатор в SAP" CodeValue="1234" IsPrimaryKey="true"/>
</sso:PersonalCodes> |