Web-сервисы: Сервис бронирования

Материал из Megatec
Версия от 09:20, 5 сентября 2013; Kurkemova (обсуждение | вклад) (Настройка)
Перейти к: навигация, поиск

Содержание

Введение

Данный модуль включает в себя два сервиса:

  • Сервис формирования списка услуг
  • Сервис бронирования

Сервис формирования списка услуг предназначен для получения следующей информации:

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

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

Установка

Для установки Сервиса бронирования нужно создать директорию Reservation в каталоге c:/inetpub/wwwroot/ (корневом каталоге IIS) и выложить туда распакованные файлы из архива mw-ws-reservation-2007.2.XX.XXXX.zip. В управлении IIS необходимо создать виртуальный каталог для папки Reservation.

Создание виртуального каталога

По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:

  • 1. Зайти в Пуск (Start) – Настройки (Settings) – Панель управления (Control Panel).


843.PNG

  • 2. В открывшемся окне выбрать Администрирование (Administrative Tools).


844.PNG

  • 3. Запустить Internet Information Services (IIS) Manager.


845.PNG

  • 4. В открывшемся дереве каталогов выбрать Web Sites – Default Web Site. В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и зайти в Свойства (Properties).


846.PNG

  • 5. В открывшемся окне, в закладке Directory нужно нажать кнопку «Create», а затем кнопку «ОК».


847.PNG
1.2 Подключение к базе данных ПК «Мастер-Тур» В файле web.config, расположенном в папке Reservation пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести). Строка подключения к базе данных ПК «Мастер-Тур»: <add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-тур;Initial Catalog=название базы данных ПК Мастер-тур;User ID=логин пользователя ПК Мастер-тур;Password=пароль пользователя ПК Мастер-тур"/>

Настройка

После установки «Сервис бронирования» доступен по адресу:

  • http: //ip- адрес сервера Мастер-Веб/Reservation/ServiceProvider.asmx (сервис формирования списка услуг)
  • http: //ip- адрес сервера Мастер-Веб/Reservation/ReservationService.asmx (сервис бронирования)
Предупреждение


Для корректной работы сервиса Reservation на релизах ПК «Мастер-Web» 2009.2.15 и выше нужно включить настройку customErrors в элементе <system.web>:
<system.web>
 <customErrors mode="On"/>
…
                </system.web>

Подготовка данных

Описание формата данных

CalculatedPriceInfo

/// <summary>
/// Информация по рассчитанной цене
/// </summary>
public class CalculatedPriceInfo
{
    /// <summary>
    /// Прайс-лист
    /// </summary>
    public PriceTour PriceTour { get; set; }

    /// <summary>
    /// Дата тура
    /// </summary>
    public DateTime TourDate { get; set; }

    /// <summary>
    /// Количество дней по туру
    /// </summary>
    public int TotalDays { get; set; }

    /// <summary>
    /// Количество ночей по туру
    /// </summary>
    public int Nights { get; set; }
}

ReservationParams

/// <summary>
/// Параметры бронирования
/// </summary>
public class ReservationParams
{
    /// <summary>
    /// Идентификатор рекламного источника в БД
    /// </summary>
    public int AdvertiseID { get; set; }

    /// <summary>
    /// Идентификатор основания для скидки в БД
    /// </summary>
    public int CauseDiscountID { get; set; }

    /// <summary>
    /// Идентификатор страны тура
    /// </summary>
    public int CountryID { get; set; }

    /// <summary>
    /// Идентификатор пользователя, бронирующего тур
    /// </summary>
    public int DupUserID { get; set; }

    /// <summary>
    /// Имя оператора
    /// </summary>
    public string OperatorName { get; set; }

    /// <summary>
    /// Иденификатор ведущего менеджера по путевке
    /// </summary>
    public int OwnerID { get; set; }

    /// <summary>
    /// Идентификатор партнера, бронирующего тур
    /// </summary>
    public int PartnerID { get; set; }

    /// <summary>
    /// Валюта, в котрой производится бронирование
    /// (если не задана, то вытягивается из тура)
    /// </summary>
    public string RateCode { get; set; }

    /// <summary>
    /// Бронируемая продолжительность 
    /// (если не задана, то высчитывается на основании услуг)
    /// </summary>
    public int ReserveDuration { get; set; }

    /// <summary>
    /// Дата тура
    /// </summary>
    public DateTime TourDate { get; set; }

    /// <summary>
    /// Идентификатор тура
    /// </summary>
    public int TourID { get; set; }

    /// <summary>
    /// Количество туристов по услугам
    /// </summary>
    public int TouristsCount { get; set; }
}

ReservationResult

/// <summary>
/// Класс, описывающий результат расчета стоимости и бронирования комплекса услуг
/// </summary>
public class ReservationResult
{
    /// <summary>
    /// Стоимость к оплате
    /// </summary>
    public double Brutto { get; set; }

    /// <summary>
    /// Процент скидки
    /// </summary>
    public double DiscountPercent { get; set; }

    /// <summary>
    /// Абсолютная величина скидки
    /// </summary>
    public double DiscountSumm { get; set; }

    /// <summary>
    /// Валюта
    /// </summary>
    public string Rate { get; set; }

    /// <summary>
    /// Код сформированной путевки
    /// </summary>
    public string ReservationCode { get; set; }

    /// <summary>
    /// Сообщение об ошибке
    /// </summary>
    public string ErrorMessage { get; set; }
}

Сервис формирования списка услуг (ServiceProvider.asmx)

Метод получения информации по ключу цены

Сигнатура вызова
/// <summary>
/// Получение информации о цене
/// </summary>
/// <param name="priceKey">Ключ цены</param>
/// <param name="includeTourDescriptionText">Возвращать ли описание тура</param>
/// <param name="includeBookingConditionsText">Возвращать ли условия бронирования по туру</param>
/// <returns></returns>
[WebMethod]
public CalculatedPriceInfo GetCalculatedPriceInfo(int priceKey, bool includeTourDescriptionText, bool includeBookingConditionsText)

Метод получения рассчитанных услуг

Сигнатура вызова
/// <summary>
/// Возвращает список рассчитанных услуг по ключу цены
/// </summary>
/// <param name="priceKey">Ключ обсчитанной цены</param>
/// <returns></returns>
[WebMethod]
public List<Service> GetCalculatedServices(int priceKey)

Метод получения нерасчитанных услуг

Сигнатура вызова
/// <summary>
/// Возвращает список нерассчитанных услуг по ключу цены
/// </summary>
/// <param name="priceKey">Ключ обсчитанной цены</param>
/// <returns></returns>
[WebMethod]
public List<Service> GetNotCalculatedServices(int priceKey)

Метод получения вариантов услуги

Сигнатура вызова
/// <summary>
/// Получение вариантов услуги
/// </summary>
/// <param name="service">Базовая услуга</param>
/// <param name="dtDate">Дата заезда</param>
/// <param name="duration">Продолжительность тура</param>
/// <param name="allowHidden">Искать ли аналоги для скрытой услуги</param>
/// <param name="allowHotelCodeChange">Можно ли поменять отель</param>
/// <param name="CheckFlightPacket">Проверять ли пакет услуги</param>
/// <param name="checkQuotes">Нужно ли делать проверку квот и удалять варианты без мест</param>
/// <param name="nMen">Количество мест для проверки (если 0, то игнорируем byRoom и userKey</param>
/// <param name="byRoom">Что проверяем. Места или комнаты</param>
/// <param name="userKey">Агент</param>
/// <param name="includeOriginal">Включать в результат базовую услугу</param>
/// <param name="excludeCharterClasses">Исключить из подбора данные классы перелетов</param>
/// <returns>Список услуг</returns>
[WebMethod]
public List<Service> GetServiceVariants(Megatec.Travel.Entities.Service service
    , DateTime tourDate
    , int tourDuration
    , bool allowHidden
    , bool allowHotelCodeChange
    , bool checkFlightPacket
    , bool checkQuotes
    , short nMen
    , bool byRoom
    , int userKey
    , bool includeOriginal
    , string excludeCharterClasses)

Сервис бронирования (ReservationService.asmx)

Метод расчета стоимости услуг

Сигнатура вызова
/// <summary>
/// Метод расчета стоимости услуг
/// </summary>
/// <param name="services">Список услуг, по которым рассчитывается стоимость</param>
/// <param name="parameters">Параметры расчета</param>
/// <returns>Результат расчета стоимости</returns>
public Megatec.Travel.Entities.ReservationResult CalculateReservation(List<Megatec.Travel.Entities.Service> services, ReservationParams parameters)

Метод бронирования услуг

Сигнатура вызова
/// <summary>
/// Метод бронирования
/// </summary>
/// <param name="services">Список бронируемых услуг</param>
/// <param name="tourists">Список туристов по путевке</param>
/// <param name="parameters">Параметры бронирования</param>
/// <returns></returns>
[WebMethod]
public Megatec.Travel.Entities.ReservationResult CreateReservation(List<Megatec.Travel.Entities.Service> services, List<Tourist> tourists, ReservationParams parameters) 

Работа в системе

Работа с сервисом ServiceProvider.asmx

Метод получения информации по ключу цены

Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?>
<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>
    <GetCalculatedPriceInfo xmlns="http://megatec.ru/">
      <priceKey>5038425</priceKey>
      <includeTourDescriptionText>true</includeTourDescriptionText>
      <includeBookingConditionsText>true</includeBookingConditionsText>
    </GetCalculatedPriceInfo>
  </soap:Body>
</soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?>
<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>
    <GetCalculatedPriceInfoResponse xmlns="http://megatec.ru/">
      <GetCalculatedPriceInfoResult>
        <PriceTour>
          <ID>667</ID>
          <Name>Test Tour</Name>
          <Description />
          <Country>
            <ID>90</ID>
            <Name>Австрия</Name>
          </Country>
          <Tour>
            <ID>542</ID>
            <Name>Test Tour</Name>
            <Description />
            <BookingConditions />
          </Tour>
          <Attribute>0</Attribute>
          <IncludedServices> Авиаперелет, Трансфер, Проживание(питание: Полупансион), Виза, Страховка, Доп. услуги</IncludedServices>
        </PriceTour>
        <TourDate>2010-07-02T00:00:00</TourDate>
        <TotalDays>11</TotalDays>
        <Nights>10</Nights>
      </GetCalculatedPriceInfoResult>
    </GetCalculatedPriceInfoResponse>
  </soap:Body>
</soap:Envelope>

Метод получения рассчитанных услуг

Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?>
<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>
    <GetCalculatedServices xmlns="http://megatec.ru/">
      <priceKey>5038425</priceKey>
    </GetCalculatedServices>
  </soap:Body>
</soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?>
 <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>
    <GetCalculatedServicesResponse xmlns="http://megatec.ru/">
      <GetCalculatedServicesResult>
        <Service xsi:type="HotelService">
          <ID>-159</ID>
          <Name>Отель/Отель 5*+ (Арльберг), Single Standart Взрослый, Полупансион, ,</Name>
          <ExternalID>0</ExternalID>
          <StartDate>0001-01-01T00:00:00</StartDate>
          <EndDate>0001-01-01T00:00:00</EndDate>
          <StartDay>1</StartDay>
          <Duration>10</Duration>
          <Attribute>390</Attribute>
          <RateBrutto />
          <Brutto>0</Brutto>
          <RateNetto />
          <Netto>0</Netto>
          <NMen>1</NMen>
          <Partner>
            <ID>10760</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <PartnersGroupID>0</PartnersGroupID>
            <FullName />
            <BossName />
            <Fax />
            <Address />
            <Zip />
            <Email />
            <Phones />
          </Partner>
          <Quota>NotChecked</Quota>
          <PacketID>250</PacketID>
          <City>
            <ID>275</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
          </City>
          <Country>
            <ID>90</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <IsIncoming>false</IsIncoming>
          </Country>
          <Tourists />
          <DetailNetto />
          <DetailBrutto />
          <Notes />
          <ServiceClass>
            <ID>3</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <ServiceClasses>None</ServiceClasses>
          </ServiceClass>
          <Hotel>
            <ID>3254</ID>
            <Name>Отель 5*+</Name>
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <City>
              <ID>3254</ID>
              <Name>Арльберг</Name>
              <NameLat />
              <Code />
              <CodeLat />
              <Unicode />
              <Description />
            </City>
          </Hotel>
          <Room>
            <ID>1112</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <RoomType>
              <ID>1</ID>
              <Name>Single</Name>
              <NameLat />
              <Code>SGL</Code>
              <CodeLat />
              <Unicode />
              <Description />
              <PrintOrder>0</PrintOrder>
              <Places>
                <Main>1</Main>
                <Extra>1</Extra>
              </Places>
            </RoomType>
            <RoomCategory>
              <ID>20</ID>
              <Name>Standart</Name>
              <NameLat />
              <Code>STD</Code>
              <CodeLat />
              <Unicode />
              <Description />
              <PrintOrder>0</PrintOrder>
            </RoomCategory>
            <RoomAccomodation>
              <ID>320</ID>
              <Name>Взрослый</Name>
              <NameLat />
              <Code>Взр.</Code>
              <CodeLat />
              <Unicode />
              <Description />
              <Places>
                <Main>0</Main>
                <Extra>0</Extra>
              </Places>
              <IsMain>true</IsMain>
              <AgeRange AgeFrom="0" AgeTo="0" />
              <AgeRange2 AgeFrom="0" AgeTo="0" />
              <PerRoom>false</PerRoom>
            </RoomAccomodation>
          </Room>
          <Pansion>
            <ID>2</ID>
            <Name>Полупансион</Name>
            <NameLat />
            <Code>HB</Code>
            <CodeLat />
            <Unicode />
            <Description />
          </Pansion>
        </Service>
      </GetCalculatedServicesResult>
    </GetCalculatedServicesResponse>
  </soap:Body>
 </soap:Envelope>

Метод получения нерассчитанных услуг

Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?>
 <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>
    <GetNotCalculatedServices xmlns="http://megatec.ru/">
      <priceKey>5038425</priceKey>
    </GetNotCalculatedServices>
  </soap:Body>
 </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?>
 <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>
    <GetNotCalculatedServicesResponse xmlns="http://megatec.ru/">
      <GetNotCalculatedServicesResult>
        <Service xsi:type="ExcursionService">
          <ID>-190</ID>
          <Name>Экскурсия::Арльберг/Кладбища Австрии, /Крысиная упряжка /</Name>
          <ExternalID>0</ExternalID>
          <StartDate>0001-01-01T00:00:00</StartDate>
          <EndDate>0001-01-01T00:00:00</EndDate>
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <Attribute>1</Attribute>
          <RateBrutto />
          <Brutto>0</Brutto>
          <RateNetto />
          <Netto>0</Netto>
          <NMen>0</NMen>
          <Partner>
            <ID>10760</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <PartnersGroupID>0</PartnersGroupID>
            <FullName />
            <BossName />
            <Fax />
            <Address />
            <Zip />
            <Email />
            <Phones />
          </Partner>
          <Quota>NotChecked</Quota>
          <PacketID>250</PacketID>
          <City>
            <ID>275</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
          </City>
          <Country>
            <ID>90</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <IsIncoming>false</IsIncoming>
          </Country>
          <Tourists />
          <DetailNetto />
          <DetailBrutto />
          <Notes />
          <ServiceClass>
            <ID>4</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <ServiceClasses>None</ServiceClasses>
          </ServiceClass>
          <Excursion>
            <ID>292</ID>
            <Name>Кладбища Австрии</Name>
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <PlaceFrom />
            <PlaceTo />
            <TimeBeg>0001-01-01T00:00:00</TimeBeg>
            <TimeEnd>0001-01-01T00:00:00</TimeEnd>
          </Excursion>
          <Transport>
            <ID>28</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
          </Transport>
        </Service>
      </GetNotCalculatedServicesResult>
    </GetNotCalculatedServicesResponse>
  </soap:Body>
 </soap:Envelope>

Метод получения вариантов услуги

Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?>
 <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>
    <GetServiceVariants xmlns="http://megatec.ru/">
      <service xsi:type="FlightService">
        <StartDay>1</StartDay>
        <Duration>0</Duration>
        <Attribute>7</Attribute>
        <NMen>1</NMen>
        <Partner>
          <ID>10762</ID>
        </Partner>
        <PacketID>248</PacketID>
        <City>
          <ID>275</ID>
        </City>
        <Country>
          <ID>90</ID>
        </Country>
        <ServiceClass>
          <ID>1</ID>
        </ServiceClass>
        <Tariff>
          <ID>89</ID>
        </Tariff>
        <Flight>
          <ID>523</ID>
        </Flight>
      </service>
      <tourDate>2010-07-02T00:00:00</tourDate>
      <tourDuration>11</tourDuration>
      <allowHidden>false</allowHidden>
      <allowHotelCodeChange>false</allowHotelCodeChange>
      <checkFlightPacket>true</checkFlightPacket>
      <checkQuotes>true</checkQuotes>
      <nMen>1</nMen>
      <byRoom>false</byRoom>
      <userKey>1</userKey>
      <includeOriginal>true</includeOriginal>
      <excludeCharterClasses />
    </GetServiceVariants>
  </soap:Body>
 </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?>
<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>
    <GetServiceVariantsResponse xmlns="http://megatec.ru/">
      <GetServiceVariantsResult>
        <Service xsi:type="FlightService">
          <ID>-209</ID>
          <Name>А_П::Москва/Арльберг/P74211, DME-AL, 12:12-15:15/Y Экономический класс/</Name>
          <ExternalID>0</ExternalID>
          <StartDate>0001-01-01T00:00:00</StartDate>
          <EndDate>0001-01-01T00:00:00</EndDate>
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <Attribute>7</Attribute>
          <RateBrutto />
          <Brutto>0</Brutto>
          <RateNetto />
          <Netto>0</Netto>
          <NMen>1</NMen>
          <Partner>
            <ID>10762</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <PartnersGroupID>0</PartnersGroupID>
            <FullName />
            <BossName />
            <Fax />
            <Address />
            <Zip />
            <Email />
            <Phones />
          </Partner>
          <Quota>NotChecked</Quota>
          <PacketID>248</PacketID>
          <City>
            <ID>275</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
          </City>
          <Country>
            <ID>90</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <IsIncoming>false</IsIncoming>
          </Country>
          <Tourists />
          <DetailNetto />
          <DetailBrutto />
          <Notes />
          <ServiceClass>
            <ID>1</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <ServiceClasses>None</ServiceClasses>
          </ServiceClass>
          <Tariff>
            <ID>89</ID>
            <Name>Экономический класс</Name>
            <NameLat>Coach economy</NameLat>
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <ServiceClassID>0</ServiceClassID>
            <Comment />
            <CreateDate>0001-01-01T00:00:00</CreateDate>
          </Tariff>
          <Flight>
            <ID>525</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <CityFrom>
              <ID>1</ID>
              <Name />
              <NameLat />
              <Code />
              <CodeLat />
              <Unicode />
              <Description />
            </CityFrom>
            <CityTo>
              <ID>275</ID>
              <Name />
              <NameLat />
              <Code />
              <CodeLat />
              <Unicode />
              <Description />
            </CityTo>
            <AirportFrom>
              <ID>-212</ID>
              <Name />
              <NameLat />
              <Code>DME</Code>
              <CodeLat />
              <Unicode />
              <Description />
            </AirportFrom>
            <AirportTo>
              <ID>-213</ID>
              <Name />
              <NameLat />
              <Code>AL</Code>
              <CodeLat />
              <Unicode />
              <Description />
            </AirportTo>
            <Airline>
              <ID>-211</ID>
              <Name />
              <NameLat />
              <Code>P7</Code>
              <CodeLat />
              <Unicode />
              <Description />
            </Airline>
            <Number>4211</Number>
            <TimeFrom>1899-01-01T12:12:00</TimeFrom>
            <TimeTo>1899-01-01T15:15:00</TimeTo>
            <DateFrom>0001-01-01T00:00:00</DateFrom>
            <DateTo>0001-01-01T00:00:00</DateTo>
            <IsArrival>false</IsArrival>
            <Available>No</Available>
          </Flight>
        </Service>
        <Service xsi:type="FlightService">
          <ID>-245</ID>
          <Name>А_П::Москва/Арльберг/SU1875, SVO1-AL, 20:20-23:30/Y Экономический класс/</Name>
          <ExternalID>0</ExternalID>
          <StartDate>0001-01-01T00:00:00</StartDate>
          <EndDate>0001-01-01T00:00:00</EndDate>
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <Attribute>7</Attribute>
          <RateBrutto />
          <Brutto>0</Brutto>
          <RateNetto />
          <Netto>0</Netto>
          <NMen>1</NMen>
          <Partner>
            <ID>10762</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <PartnersGroupID>0</PartnersGroupID>
            <FullName />
            <BossName />
            <Fax />
            <Address />
            <Zip />
            <Email />
            <Phones />
          </Partner>
          <Quota>NotChecked</Quota>
          <PacketID>248</PacketID>
          <City>
            <ID>275</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
          </City>
          <Country>
            <ID>90</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <IsIncoming>false</IsIncoming>
          </Country>
          <Tourists />
          <DetailNetto />
          <DetailBrutto />
          <Notes />
          <ServiceClass>
            <ID>1</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <ServiceClasses>None</ServiceClasses>
          </ServiceClass>
          <Tariff>
            <ID>89</ID>
            <Name>Экономический класс</Name>
            <NameLat>Coach economy</NameLat>
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <ServiceClassID>0</ServiceClassID>
            <Comment />
            <CreateDate>0001-01-01T00:00:00</CreateDate>
          </Tariff>
          <Flight>
            <ID>523</ID>
            <Name />
            <NameLat />
            <Code />
            <CodeLat />
            <Unicode />
            <Description />
            <CityFrom>
              <ID>1</ID>
              <Name />
              <NameLat />
              <Code />
              <CodeLat />
              <Unicode />
              <Description />
            </CityFrom>
            <CityTo>
              <ID>275</ID>
              <Name />
              <NameLat />
              <Code />
              <CodeLat />
              <Unicode />
              <Description />
            </CityTo>
            <AirportFrom>
              <ID>-248</ID>
              <Name />
              <NameLat />
              <Code>SVO1</Code>
              <CodeLat />
              <Unicode />
              <Description />
            </AirportFrom>
            <AirportTo>
              <ID>-249</ID>
              <Name />
              <NameLat />
              <Code>AL</Code>
              <CodeLat />
              <Unicode />
              <Description />
            </AirportTo>
            <Airline>
              <ID>-247</ID>
              <Name />
              <NameLat />
              <Code>SU</Code>
              <CodeLat />
              <Unicode />
              <Description />
            </Airline>
            <Number>1875</Number>
            <TimeFrom>1899-01-01T20:20:00</TimeFrom>
            <TimeTo>1899-01-01T23:30:00</TimeTo>
            <DateFrom>0001-01-01T00:00:00</DateFrom>
            <DateTo>0001-01-01T00:00:00</DateTo>
            <IsArrival>false</IsArrival>
            <Available>No</Available>
          </Flight>
        </Service>
      </GetServiceVariantsResult>
    </GetServiceVariantsResponse>
  </soap:Body>
 </soap:Envelope>

Работа с сервисом ReservationService.asmx

Метод расчета стоимости услуг

Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?>
<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>
    <CalculateReservation xmlns="http://megatec.ru/">
      <services>
        <Service xsi:type="TransferService">
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <Attribute>19975</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <PacketID>250</PacketID>
          <City>
            <ID>275</ID>
          </City>
          <Country>
            <ID>90</ID>
          </Country>
          <ServiceClass>
            <ID>2</ID>
          </ServiceClass>
          <Transfer>
            <ID>372</ID>
          </Transfer>
          <Transport>
            <ID>3</ID>
          </Transport>
        </Service>
        <Service xsi:type="VisaService">
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <Attribute>131</Attribute>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <PacketID>250</PacketID>
          <Country>
            <ID>90</ID>
          </Country>
          <ServiceClass>
            <ID>5</ID>
          </ServiceClass>
          <Visa>
            <ID>157</ID>
          </Visa>
        </Service>
        <Service xsi:type="InsuranceService">
          <StartDay>1</StartDay>
          <Duration>11</Duration>
          <Attribute>151</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10763</ID>
          </Partner>
          <PacketID>250</PacketID>
          <Country>
            <ID>90</ID>
          </Country>
          <ServiceClass>
            <ID>6</ID>
          </ServiceClass>
          <AddDescription1>
            <ID>6</ID>
          </AddDescription1>
          <AddDescription2>
            <ID>0</ID>
          </AddDescription2>
          <Insurance>
            <ID>174</ID>
          </Insurance>
        </Service>
        <Service xsi:type="AdditionalService">
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <Attribute>3</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <Quota>NotChecked</Quota>
          <PacketID>250</PacketID>
          <Country>
            <ID>90</ID>
          </Country>
          <ServiceClass>
            <ID>1032</ID>
          </ServiceClass>
          <Description>
            <ID>183</ID>
          </Description>
          <Description1>
            <ID>0</ID>
          </Description1>
          <Description2>
            <ID>0</ID>
          </Description2>
        </Service>
        <Service xsi:type="HotelService">
          <StartDay>1</StartDay>
          <Duration>10</Duration>
          <Attribute>390</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <Quota>NotChecked</Quota>
          <PacketID>250</PacketID>
          <City>
            <ID>275</ID>
          </City>
          <Country>
            <ID>90</ID>
          </Country>
          <ServiceClass>
            <ID>3</ID>
          </ServiceClass>
          <Hotel>
            <ID>3254</ID>
          </Hotel>
          <Room>
            <ID>1112</ID>
            <RoomType>
              <ID>1</ID>
            </RoomType>
            <RoomCategory>
              <ID>20</ID>
            </RoomCategory>
            <RoomAccomodation>
              <ID>320</ID>
            </RoomAccomodation>
          </Room>
          <Pansion>
            <ID>2</ID>
          </Pansion>
        </Service>
        <Service xsi:type="TransferService">
          <StartDay>8</StartDay>
          <Duration>0</Duration>
          <Attribute>19975</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <PacketID>250</PacketID>
          <City>
            <ID>275</ID>
          </City>
          <Country>
            <ID>90</ID>
          </Country>
          <ServiceClass>
            <ID>2</ID>
          </ServiceClass>
          <Transfer>
            <ID>373</ID>
          </Transfer>
          <Transport>
            <ID>3</ID>
          </Transport>
        </Service>
        <Service xsi:type="FlightService">
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <NMen>2</NMen>
          <Partner>
            <ID>27990</ID>
          </Partner>
          <PacketID>19443</PacketID>
          <ServiceClass>
            <ID>1</ID>
          </ServiceClass>
          <Tariff>
            <ID>226</ID>
          </Tariff>
          <Flight>
            <ID>17234</ID>
            <CityFrom>
              <ID>30</ID>
            </CityFrom>
            <CityTo>
              <ID>65</ID>
            </CityTo>
          </Flight>
        </Service>
        <Service xsi:type="FlightService">
          <StartDay>8</StartDay>
          <Duration>0</Duration>
          <Attribute>0</Attribute>
          <NMen>2</NMen>
          <Partner>
            <ID>27990</ID>
          </Partner>
          <PacketID>18920</PacketID>
          <ServiceClass>
            <ID>1</ID>
          </ServiceClass>
          <Tariff>
            <ID>226</ID>
          </Tariff>
          <Flight>
            <ID>17235</ID>
            <CityFrom>
              <ID>65</ID>
            </CityFrom>
            <CityTo>
              <ID>30</ID>
            </CityTo>
          </Flight>
        </Service>
      </services>
      <parameters>
        <AdvertiseID>-1</AdvertiseID>
        <CauseDiscountID>-1</CauseDiscountID>
        <CountryID>90</CountryID>
        <DupUserID>-1</DupUserID>
        <OperatorName />
        <OwnerID>-1</OwnerID>
        <PartnerID>10764</PartnerID>
        <RateCode />
        <ReserveDuration>-1</ReserveDuration>
        <TourDate>2010-07-02T00:00:00</TourDate>
        <TourID>542</TourID>
        <TouristsCount>1</TouristsCount>
      </parameters>
    </CalculateReservation>
  </soap:Body>
 </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?>
 <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>
    <CalculateReservationResponse xmlns="http://megatec.ru/">
      <CalculateReservationResult>
        <Brutto>1646</Brutto>
        <DiscountPercent>10</DiscountPercent>
        <DiscountSumm>172</DiscountSumm>
        <Rate>$</Rate>
        <ReservationCode />
        <ErrorMessage />
      </CalculateReservationResult>
    </CalculateReservationResponse>
  </soap:Body>
 </soap:Envelope>

Метод расчета бронирования услуг

Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?>
<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>
    <CalculateReservation xmlns="http://megatec.ru/">
      <services>
        <Service xsi:type="TransferService">
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <Attribute>19975</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <PacketID>250</PacketID>
          <City>
            <ID>275</ID>
          </City>
          <Country>
            <ID>90</ID>
          </Country>
          <Tourists>
            <Tourist>
              <ID>0</ID>
            </Tourist>
          </Tourists>
          <ServiceClass>
            <ID>2</ID>
          </ServiceClass>
          <Transfer>
            <ID>372</ID>
          </Transfer>
          <Transport>
            <ID>3</ID>
          </Transport>
        </Service>
        <Service xsi:type="VisaService">
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <Attribute>131</Attribute>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <PacketID>250</PacketID>
          <Country>
            <ID>90</ID>
          </Country>
          <Tourists>
            <Tourist>
              <ID>0</ID>
            </Tourist>
          </Tourists>
          <ServiceClass>
            <ID>5</ID>
          </ServiceClass>
          <Visa>
            <ID>157</ID>
          </Visa>
        </Service>
        <Service xsi:type="InsuranceService">
          <StartDay>1</StartDay>
          <Duration>11</Duration>
          <Attribute>151</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10763</ID>
          </Partner>
          <PacketID>250</PacketID>
          <Country>
            <ID>90</ID>
          </Country>
          <Tourists>
            <Tourist>
              <ID>0</ID>
            </Tourist>
          </Tourists>
          <ServiceClass>
            <ID>6</ID>
          </ServiceClass>
          <AddDescription1>
            <ID>6</ID>
          </AddDescription1>
          <AddDescription2>
            <ID>0</ID>
          </AddDescription2>
          <Insurance>
            <ID>174</ID>
          </Insurance>
        </Service>
        <Service xsi:type="AdditionalService">
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <Attribute>3</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <Quota>NotChecked</Quota>
          <PacketID>250</PacketID>
          <Country>
            <ID>90</ID>
          </Country>
          <Tourists>
            <Tourist>
              <ID>0</ID>
            </Tourist>
          </Tourists>
          <ServiceClass>
            <ID>1032</ID>
          </ServiceClass>
          <Description>
            <ID>183</ID>
          </Description>
          <Description1>
            <ID>0</ID>
          </Description1>
          <Description2>
            <ID>0</ID>
          </Description2>
        </Service>
        <Service xsi:type="HotelService">
          <StartDay>1</StartDay>
          <Duration>10</Duration>
          <Attribute>390</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <Quota>NotChecked</Quota>
          <PacketID>250</PacketID>
          <City>
            <ID>275</ID>
          </City>
          <Country>
            <ID>90</ID>
          </Country>
          <Tourists>
            <Tourist>
              <ID>0</ID>
            </Tourist>
          </Tourists>
          <ServiceClass>
            <ID>3</ID>
          </ServiceClass>
          <Hotel>
            <ID>3254</ID>
          </Hotel>
          <Room>
            <ID>1112</ID>
            <RoomType>
              <ID>1</ID>
            </RoomType>
            <RoomCategory>
              <ID>20</ID>
            </RoomCategory>
            <RoomAccomodation>
              <ID>320</ID>
            </RoomAccomodation>
          </Room>
          <Pansion>
            <ID>2</ID>
          </Pansion>
        </Service>
        <Service xsi:type="TransferService">
          <StartDay>8</StartDay>
          <Duration>0</Duration>
          <Attribute>19975</Attribute>
          <NMen>1</NMen>
          <Partner>
            <ID>10760</ID>
          </Partner>
          <PacketID>250</PacketID>
          <City>
            <ID>275</ID>
          </City>
          <Country>
            <ID>90</ID>
          </Country>
          <Tourists>
            <Tourist>
              <ID>0</ID>
            </Tourist>
          </Tourists>
          <ServiceClass>
            <ID>2</ID>
          </ServiceClass>
          <Transfer>
            <ID>373</ID>
          </Transfer>
          <Transport>
            <ID>3</ID>
          </Transport>
        </Service>
        <Service xsi:type="FlightService">
          <StartDay>1</StartDay>
          <Duration>0</Duration>
          <NMen>2</NMen>
          <Partner>
            <ID>27990</ID>
          </Partner>
          <PacketID>19443</PacketID>
          <Tourists>
            <Tourist>
              <ID>0</ID>
            </Tourist>
          </Tourists>
          <ServiceClass>
            <ID>1</ID>
          </ServiceClass>
          <Tariff>
            <ID>226</ID>
          </Tariff>
          <Flight>
            <ID>17234</ID>
            <CityFrom>
              <ID>30</ID>
            </CityFrom>
            <CityTo>
              <ID>65</ID>
            </CityTo>
          </Flight>
        </Service>
        <Service xsi:type="FlightService">
          <StartDay>8</StartDay>
          <Duration>0</Duration>
          <Attribute>0</Attribute>
          <NMen>2</NMen>
          <Partner>
            <ID>27990</ID>
          </Partner>
          <PacketID>18920</PacketID>
          <Tourists>
            <Tourist>
              <ID>0</ID>
            </Tourist>
          </Tourists>
          <ServiceClass>
            <ID>1</ID>
          </ServiceClass>
          <Tariff>
            <ID>226</ID>
          </Tariff>
          <Flight>
            <ID>17235</ID>
            <CityFrom>
              <ID>65</ID>
            </CityFrom>
            <CityTo>
              <ID>30</ID>
            </CityTo>
          </Flight>
        </Service>
      </services>
      <tourists>
        <Tourist Sex="Male" BirthDate="1980-02-01T00:00:00" AgeType="Adult" Citizen="" IsMain="true" ExternalID="0">
          <ID>0</ID>
          <Name>
            <FirstName />
            <SecondName />
            <LastName />
          </Name>
          <NameLat>
            <FirstName>SEMEN</FirstName>
            <SecondName />
            <LastName>IVANOV</LastName>
          </NameLat>
          <LocalPassport IssuedBy="" Series="" Number="" IssueDate="0001-01-01T00:00:00" EndDate="0001-01-01T00:00:00" />
          <ForeignPassport IssuedBy="" Series="1234" Number="234567" IssueDate="0001-01-01T00:00:00" EndDate="2020-06-05T00:00:00" />
        </Tourist>
      </tourists>
      <parameters>
        <AdvertiseID>-1</AdvertiseID>
        <CauseDiscountID>-1</CauseDiscountID>
        <CountryID>90</CountryID>
        <DupUserID>-1</DupUserID>
        <OperatorName />
        <OwnerID>-1</OwnerID>
        <PartnerID>10764</PartnerID>
        <RateCode />
        <ReserveDuration>-1</ReserveDuration>
        <TourDate>2010-07-02T00:00:00</TourDate>
        <TourID>542</TourID>
        <TouristsCount>1</TouristsCount>
      </parameters>    </CalculateReservation>
  </soap:Body>
 </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?>
<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>
    <CreateReservationResponse xmlns="http://megatec.ru/">
      <CreateReservationResult>
        <Brutto>1646</Brutto>
        <DiscountPercent>10</DiscountPercent>
        <DiscountSumm>172</DiscountSumm>
        <Rate>$</Rate>
        <ReservationCode>AT 0702007</ReservationCode>
        <ErrorMessage />
      </CreateReservationResult>
    </CreateReservationResponse>
  </soap:Body>
 </soap:Envelope>