Мастер-Web:Дополнительный модуль Распределенный поиск

Материал из Megatec
Перейти к: навигация, поиск

Статья находится на стадии разработки.

Версия статьи от 28.02.2017. Для перехода на версию статьи, соответствующую используемой Вами версии программы, нажмите ссылку в таблице:

Более ранние версии:
До версии ПК «Мастер-Web» 2009.2.16 включительно
До версии ПК «Мастер-Web» 2009.2.20.1 включительно


Содержание

Введение

Дополнительный модуль «Распределенный поиск» предназначен для отображения в едином поисковом модуле как своих, так и сторонних предложений. Модуль позволяет осуществлять поиск и бронирование туров от различных туроператоров в одном приложении ПК «Мастер-Web».

Установка

Для установки дополнительного модуля «Распределенный поиск» нужно распаковать архив mw-distributedsearch-9.2.x.xxxxx.zip в корень каталога, где установлено приложение ПК «Мастер-Web».

Для развертывания распределенного поиска необходимо на веб-сервере каждого туроператора, цены которого необходимо отображать в собственном приложении, установить 5 веб-сервисов:

  • FilterBinding — сервис по загрузке поисковых фильтров;
  • Search — поисковый сервис;
  • CheckQuotes — сервис по проверке наличия мест;
  • Reservation — сервис бронирования;
  • WsAuthorization — cервис авторизации.

Описание процесса установки сервисов приведено в руководстве пользователя соответствующего сервиса.

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

Соответствие версий сервисов и ПК "Мастер-Web" показано в таблице совместимости.

Настройка

Добавление секций

Добавление секций в конфигурационный файл web.config ПК «Мастер-Web» производится только в том случае, если локальные предложения туроператора подключены через сервис.

  • В секции <ConfigSections> добавить элемент:
    <sectionGroup name="Megatec.Web.Services">
      <section name="servicesAccessibility"
        type="Megatec.Configuration.WebServicesSection, Megatec.Configuration"/>
    </sectionGroup>
    
  • На одном уровне с секцией <ConfigSections> добавить секцию:
    В данной секции необходимо указать адреса собственных поисковых веб-сервисов.
    <Megatec.Web.Services>
      <servicesAccessibility Enabled="true">
        <Services>
          <add name="FilterBinding" enabled="true"
            url="http://server:8080/distributedsearch/mw-filterbinding/FilterBindingService.asmx"/>
          <add name="DoSearch" enabled="true"
            url="http://server:8080/distributedsearch/mw-megatecwebservices/Search.asmx"/>
          <add name="Reservation" enabled="true"
            url="http://server:8080/distributedsearch/mw-ws-reservation/ReservationService.asmx"/>
          <add name="ServiceProvider" enabled="true"
            url="http://server:8080/distributedsearch/mw-ws-reservation/ServiceProvider.asmx"/>
          <add name="CheckQuotes" enabled="true"
            url="http://server:8080/distributedsearch/mw-ws-checkquotes/CheckQuotesService.asmx"/>
        </Services>
      </servicesAccessibility>
    </Megatec.Web.Services>
    

Настройки файла distributedSearchSettings.xml

Файл distributedSearchSettings.xml содержит информацию о внешних источниках данных.

Элемент <Enabled>true</Enabled> в секции <DistributedSearchSettings> указывает на необходимость проведения поиска во внешних источниках данных.

Каждый из элементов <DistributedSearchSource Id="source"> в секции <SearchSources> представляет собой описание источника данных. Атрибут id может быть произвольным, но должен быть уникальным в рамках документа.

Настройка Описание
Настройка сервисов
<FilterBindingServiceUrl> Адрес сервиса по загрузке поисковых фильтров FilterBinding.
<SearchServiceUrl> Адрес поискового сервиса Search.
<ReservationServiceUrl> Адрес сервиса бронирования ReservationService.
<ServiceProviderServiceUrl> Адрес сервиса формирования списка услуг ServiceProvider.
<CheckQuotesServiceUrl> Адрес сервиса по проверке наличия мест CheckQuotesService.
Настройки бронирования передаваемые удаленному источнику
<PartnerKey> Ключ партнера, соответствующего локальному источнику, в базе данных удаленного источника. Из таблицы [tbl_Partners]. Используется для установки поля DG_PartnerKey у путевок в базе данных удаленного источника.
<FilialKey> Ключ филиала партнера, соответствующего локальному источнику, в базе данных удаленного источника. Из таблицы [tbl_Partners] с условием ([PR_Filial] = 2). Используется для установки поля DG_FilialKey у путевок в базе данных удаленного источника.
Настройки бронирования в локальном источнике
<InternalPartnerKey> Ключ партнера, соответствующего удаленному источнику, в базе данных локального источника. Берется из таблицы [tbl_Partners]. Используется для установки поля DG_PartnerKey у путевок в базе данных локального источника.
<InternalServiceKey> Класс услуги в базе данных турагента, являющегося владельцем приложения ПК «Мастер-Web», используемый для сохранения услуг из базы стороннего туроператора
Все услуги по путевке, забронированной по туру стороннего туроператора, будут сохранены с этим классом услуги.
<InternalCreator> Ключ пользователя из таблицы [UserList] турагента, являющегося владельцем приложения ПК «Мастер-Web», который указывается создателем для путевок, оформленных по турам стороннего туроператора.
<InternalFilialKey> Ключ филиала партнера, соответствующего удаленному источнику, в базе данных локального источника. Из таблицы [tbl_Partners] с условием ([PR_Filial] = 2). Используется для установки поля DG_PartnerKey у путевок в базе данных локального источника.
<InternalTourKey> Ключ тура из таблицы [tbl_TurList] турагента, являющегося владельцем приложения ПК «Мастер-Web», который прописывается в поле DG_TRKey у путевок, используемый для создания сохранения путевок из базы данных удаленного источника. Все путевки, забронированные в удаленном источнике, будут создаваться в базе данных локального источника с данным ключом тура.
<DefaultCountryKey> Ключ страны, указываемый в путевке и услугах в базе данных турагента, являющегося владельцем приложения ПК «Мастер-Web», если не найдено совпадение по названию страны из удаленного источника.
<DefaultCityKey> Ключ города, указываемый в путевке и услугах в базе данных турагента, являющегося владельцем приложения ПК «Мастер-Web», если не найдено совпадение по названию города из удаленного источника в списке городов указанной страны.
<ReservationWaitStatus> Статус, который проставляется путевке в локальном источнике, в поле DG_SOR_CODE, в том случае, если у путевки в удаленном источнике глобальный статус Wait.
<ReservationOKStatus> Статус, который проставляется путевке в локальном источнике, в поле DG_SOR_CODE, в том случае, если у путевки в удаленном источнике глобальный статус OK.
Дополнительные настройки бронирования
<SendBookingMail> Настройка, позволяющая включить отправку письма о новом бронировании агентству.
Возможные значения:
  • - trueотправлять письмо на e-mail адреса, указанные в настройке <EMail>;
  • - false или отсутствие настройкине отправлять письмо о новом бронировании агентству.

При выключении этой настройки так же не будут отправляться письма по настройке <SendAgencyMail>.

<EMail> E-mail адреса для отправки писем о новых бронированиях, осуществленных через распределенный поиск
Адреса перечисляются через точку с запятой.
<SendAgencyMail> Настройка, позволяющая включить отправку письма о новом бронировании на e-mail адрес пользователя ПК «Мастер-Web», который осуществляет бронирование.
Возможные значения:
  • - trueотправлять письмо на e-mail адрес пользователя;
  • - false или отсутствие настройкине отправлять письмо на e-mail адрес пользователя.

Письма не будут отправляться при выключенной настройке <SendBookingMail>.

<CostForRoom> Устанавливает всем странам из удаленного источника тип цены за номер.
Обрабатывается аналогично настройке costForRoom в экране Подбор туров с наличием мест (QuotedDynamic.aspx).
Если по одной стране выводятся туры из локального и внешнего источника, то при несовпадении настроек преимуществом обладает настройка из web.config ПК «Мастер-Web» — т.е. будут отображены туры только из локальной базы данных.
<CostForRoomCountries> Устанавливает странам с перечисленными ключами тип цены за номер.
Обрабатывается аналогично настройке costForRoomCountries в экране Подбор туров с наличием мест (QuotedDynamic.aspx).
Ключи стран через запятую, например, «3, 40, 90».
Настройка комиссии при отображении цены
<AdditionalComission> Наценка в процентах к общей стоимости тура от стороннего туроператора
Настройка применяется в экране поиска «DSearchPageM» и в корзине «RemoteBasketM».
<AdditionalComissionFixed> Фиксированная наценка к общей стоимости тура от стороннего туроператора
Настройка применяется только в корзине «RemoteBasketM».
<AdditionalServiceComission> Фиксированная наценка к стоимости доп. услуг при бронировании туров от стороннего туроператора
Настройка применяется только в корзине «RemoteBasketM».
Настройка правил подстановки сущностей
<ReplcamentSearchItems> Правила подстановки данных из поискового фильтра данного источника в локальный фильтр.

Правило подстановки данных из поискового фильтра данного источника в локальный фильтр задается при помощи набора элементов <ReplcamentSubItem>, где:

Параметр Описание
Type Тип узла подстановки. Возможные значения совпадают со значениями из файла-схемы фильтра распределенного поиска. В одном правиле может использоваться несколько типов узлов, которые должны идти в том же порядке, как и в схеме фильтра.
Возможные значения:
  • departFrom;
  • country;
  • tourtype;
  • resort;
  • city;
  • hotel;
LocalValue Ключ сущности в локальной базе.
Если в локальном источнике отсутствует такой ключ, то LocalValue указывать не нужно.
RemoteValue Ключ сущности во внешнем источнике.
Name Название сущности.
Настройка используется при отсутствии сущности в локальном источнике.


Предупреждение


При использовании разных, но совместимых версий сервисов и ПК "Мастер-Web", необходимо в конфигурационных файлах сервисов в строке подключения 
указывать логин и пароль пользователя ПК "Мастер-тур". 
А также в файле distributedSearchSettings.xml обязательно заполнять тэг <InternalCreator> </InternalCreator> ( см. выше в "Настройки файла distributedSearchSettings.xml"),
для корректного отображения заявок в экране "Работа менеджеров" в ПК "Мастер-Тур".


Примеры добавления сущностей

  1. Добавление предложения по Хорватии (в локальном источнике отсутствует, ключ 123 во внешнем источнике) при вылете из Москвы (ключ 30 в локальном источнике и 1 во внешнем источнике):
    <ReplcamentSearchItem>
      <SubItems>
        <ReplcamentSubItem
          Type="departFrom"
          LocalValue="30"
          RemoteValue="1" />
        <ReplcamentSubItem
          Type="country"
          RemoteValue="123"
          Name="Хорватия" />
      </SubItems>
    </ReplcamentSearchItem>
    
  2. Добавление предложения по Греции (ключ 520 в локальном источнике и 29 во внешнем источнике) при вылете из Москвы (ключ 30 в локальном источнике и 1 во внешнем источнике):
    <ReplcamentSearchItem>
      <SubItems>
        <ReplcamentSubItem
          Type="departFrom"
          LocalValue="30"
          RemoteValue="1" />
        <ReplcamentSubItem
          Type="country"
          LocalValue="520"
          RemoteValue="29" />
      </SubItems>
    </ReplcamentSearchItem>
    
  3. Включение в предложения по Греции (ключ 520 в локальном источнике и 29 во внешнем источнике) при вылете из Екатеринбурга (ключ 648 в локальном источнике и 266 во внешнем источнике) города Салоники (в локальном источнике отсутствует, ключ 615 во внешнем источнике):
    <ReplcamentSearchItem>
      <SubItems>
        <ReplcamentSubItem
          Type="departFrom"
          LocalValue="648"
          RemoteValue="266" />
        <ReplcamentSubItem
          Type="country"
          LocalValue="520"
          RemoteValue="29" />
        <ReplcamentSubItem
          Type="tourtype"
          RemoteValue="2"
          Name="Стандартный тур" />
        <ReplcamentSubItem
          Type="resort"
          RemoteValue="42"
          Name="Салоники" />
        <ReplcamentSubItem
          Type="city"
          RemoteValue="615"
          Name="Салоники" />
        <ReplcamentSubItem
          Type="hotel"
          RemoteValue="130"
          Name="Test_Hotel" />
      </SubItems>
    </ReplcamentSearchItem>
    

Валидный distributedSearchSettings.xml

Конфигурационный файл распределенного поиска distributedSearchSettings.xml расположен в папке templates каталога ПК «Мастер-Web». Ниже представлен пример валидного файла конфигурации для работы с одним внешним источником. Подключены 2 страны: Англия и Андорра — для Англии поиск цен производится только по турам с городом отправления Москва (departFrom = 1), а для Андорры — как по турам из Москвы, так и по турам без перелета (departFrom = 0).

Данный файл distributedSearchSettings.xml актуален для ПК «Мастер-Web» релиза 2009.2.17, а также для сервис-паков 2009.2.16.

<?xml version="1.0"?>
<DistributedSearchSettings
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <!-- РП включен\выключен -->
  <Enabled>true</Enabled>

  <!-- Список удаленных источников -->
  <SearchSources>
    <!--
    Удаленный источник.

    Id - идентификатор удаленного источника в РП. Любая строка, кроме local.
    WsAuthLogin - логин для авторизации на сервисе.
    WsAuthPassword - пароль для авторизации на сервисе.
    -->

    <DistributedSearchSource
        Id="Внешний источник № 7"
        WsAuthLogin="qaz"
        WsAuthPassword="123">

      <!-- Адрес авторизационного сервиса -->
      <AuthorizationServiceUrl>
        http://server:8080/distributedsearch/mw-ws-authorization/WsAuthorization.asmx
      </AuthorizationServiceUrl>

      <!-- Адрес сервиса получения поискового фильтра -->
      <FilterBindingServiceUrl>
        http://server:8080/distributedsearch/mw-filterbinding/FilterBindingService.asmx
      </FilterBindingServiceUrl>

      <!-- Адрес поискового сервиса -->
      <SearchServiceUrl>
        http://server:8080/distributedsearch/mw-megatecwebservices/Search.asmx
      </SearchServiceUrl>

      <!-- Адрес сервиса бронирования -->
      <ReservationServiceUrl>
        http://server:8080/distributedsearch/mw-ws-reservation/ReservationService.asmx
      </ReservationServiceUrl>

      <!-- Адрес сервиса работы с услугами -->
      <ServiceProviderServiceUrl>
        http://server:8080/distributedsearch/mw-ws-reservation/ServiceProvider.asmx
      </ServiceProviderServiceUrl>

      <!-- Адрес сервиса проверки квот -->
      <CheckQuotesServiceUrl>
        http://server:8080/distributedsearch/mw-ws-checkquotes/CheckQuotesService.asmx
      </CheckQuotesServiceUrl>

      <!--
        Ключ партнера в локальной БД.
        Значение, которое будет установлено записи в таблице tbl_Dogovor,
        поле DG_PARTNERKEY, и записям в таблице tbl_DogovorList, поле DL_PARTNERKEY.
        Берется из таблицы Partners, поле PR_KEY.
      -->
      <InternalPartnerKey>10760</InternalPartnerKey>

      <!--
        Ключ создателя тура в локальной БД.
        Значение, которое будет установлено записи в таблице tbl_Dogovor,
        поле DG_CREATOR, и записям в таблице tbl_DogovorList, поле DL_CREATOR.
        Берется из таблицы UserList, поле US_KEY.
      -->
      <InternalCreator>89</InternalCreator>

      <!--
        Ключ класса услуг для фейковых услуг путевки в локальной БД.
        Значение, которое будет установлено записям в таблице tbl_DogovorList,
        поле DL_SVKEY.
        Берется из таблицы Service, поле SV_KEY.
      -->
      <InternalServiceKey>1040</InternalServiceKey>

      <!-- Устанавливает всем странам из удаленного источника тип цены за номер. -->
      <CostForRoom>false</CostForRoom>

      <!--
        Устанавливает странам с перечисленными ключами тип цены за номер.
        Формат: "1,2,3,..", - ключи стран через запятую.
      -->
      <CostForRoomCountries></CostForRoomCountries>

      <!-- Список элементов, которые будут получаться из удаленного источника -->
      <ReplcamentSearchItems>
        <ReplcamentSearchItem>
          <SubItems>
            <ReplcamentSubItem
              Type="departFrom"
              LocalValue="0"
              RemoteValue="0" />
            <ReplcamentSubItem
              Type="country"
              RemoteValue="376"
              Name="Андорра № 7" />
          </SubItems>
        </ReplcamentSearchItem>
        <ReplcamentSearchItem>
          <SubItems>
            <ReplcamentSubItem
              Type="departFrom"
              LocalValue="1"
              RemoteValue="1" />
            <ReplcamentSubItem
              Type="country"
              RemoteValue="222"
              Name="Англия № 7" />
          </SubItems>
        </ReplcamentSearchItem>
        <ReplcamentSearchItem>
          <SubItems>
            <ReplcamentSubItem
              Type="departFrom"
              LocalValue="1"
              RemoteValue="1" />
            <ReplcamentSubItem
              Type="country"
              RemoteValue="376"
              Name="Андорра № 7" />
          </SubItems>
        </ReplcamentSearchItem>
      </ReplcamentSearchItems>
    </DistributedSearchSource>

  </SearchSources>
</DistributedSearchSettings>

Настройка полей данных о туристах

Настройка отображения полей данных о туристах производится в файле descriptions.xml. Данный файл содержит следующие настройки:

1. Настройка отображения поля «Главный турист»:

<column code="ismain" header="<img src="../images/mw_main_tourist.gif" border="0" alt="Главный турист" />" visible="True" required="True" translit="False" letterCase="0" edit="False" />

2. Настройка отображения поля «Пол туриста»:

<column code="sex" header="Пол<font color="red">*</font>" visible="True" required="False" translit="False" letterCase="0" edit="True" />

3. Настройка отображения поля «Имя рус.»:

<column code="firstnamerus" header="" visible="False" required="False" translit="False" letterCase="0" edit="False" />

4. Настройка отображения поля «Отчество рус.»:

<column code="patronymicrus" header="Отчество" visible="False" required="False" translit="False" letterCase="3" edit="False" />

5. Настройка отображения поля «Фамилия рус.»:

<column code="lastnamerus" header="" visible="False" required="False" translit="False" letterCase="0" edit="False" />

6. Настройка отображения поля «Имя лат.»:

<column code="firstname" header="Имя<font color="red">*</font>" visible="True" required="True" translit="True" letterCase="2" edit="True" validationgroup="TouristsGroup" />

7. Настройка отображения поля «Отчество лат.»:

<column code="patronymic" header="" visible="False" required="False" translit="False" letterCase="2" edit="False" />

8. Настройка отображения поля «Фамилия лат.»:

<column code="lastname" header="Фамилия<font color="red">*</font>" visible="True" required="True" translit="True" letterCase="2" edit="True" validationgroup="TouristsGroup" />

9. Настройка отображения поля «Дата рождения»:

<column code="birthdate" header="Дата рождения<font color="red">*</font><br />(dd.MM.yyyy)" visible="True" required="true" translit="False" letterCase="0" edit="True" validationgroup="TouristsGroup" />

10. Настройка отображения поля «Номер общегражданского паспорта»:

<column code="passportrus" header="" visible="False" required="False" translit="False" letterCase="0" edit="False" />

11. Настройка отображения поля «Дата выдачи общегражданского паспорта»:

<column code="passportdaterus" header="" visible="False" required="False" translit="False" letterCase="0" edit="False" />

12. Настройка отображения поля «Общегражданский паспорт: кем выдан»:

<column code="passportbywhomrus" header="Паспорт: кем выдан" visible="False" required="False" translit="False" letterCase="0" edit="False" />

13. Настройка отображения поля «Номер загранпаспорта»:

<column code="passport" header="Паспорт" visible="True" required="true" translit="False" letterCase="2" edit="True" validationgroup="TouristsGroup" />

14. Настройка отображения поля «Дата выдачи загранпаспорта»:

<column code="passportdate" header="Загран-паспорт: дата выдачи" visible="False" required="False" translit="False" letterCase="0" edit="False" />

15. Настройка отображения поля «Срок действия загранпаспорта»:

<column code="passportdateend" header="Действителен до<br />(dd.MM.yyyy)" visible="true" required="true" translit="False" letterCase="0" edit="True" validationgroup="TouristsGroup"/>

16. Настройка отображения поля «Гражданство»:

<column code="citizenship" header="Гражданство" visible="False" required="False" translit="False" letterCase="0" edit="False" />

17. Настройка отображения поля «Загранпаспорт: кем выдан»:

<column code="passportbywhom" header="" visible="False" required="False" translit="False" letterCase="0" edit="False" />

18. Настройка отображения поля «Удаление записи»:

<column code="delete" header="" visible="true" required="False" edit="True" />

Настройки отображения полей данных о туристах содержат параметры:

  1. Code= - зашитая в коде константа, которую нельзя изменять.
  2. Header= - заголовок поля
  3. Visible= - видимость поля; значения: True – видимый, Flse – невидимый
  4. Required= - обязательность заполнения поля; значения: True – обязательное, False – необязательное
  5. Translit= - транслитерация; значения: True – транслитерировать, False – не транслитерировать
  6. letterCase= - регистр символов в поле; значения: 1 – первая буква заглавная, 2 – все буквы большие, 3 – все буквы маленькие
  7. Edit= - редактирование поля; значения: True – редактируемое, False – нередактируемое

Настройки файла remoteSearchFilterScheme.xml

Файл remoteSearchFilterScheme.xml содержит информацию о зависимостях узлов фильтра друг от друга и вспомогательную информацию по каждому узлу.

Узел — это контейнер, объединяющий данные определенного типа. Например: города вылета, страны, категории отелей. Существуют родительские и дочерние узлы. Родительскими называют те узлы, при изменении которых должны быть перезагружены значения данного узла. Дочерними называют те узлы, которые должны быть перезагружены при изменении данного узла.

<control name="lstCity" type="City" firstItem="All" sort="sd_ctname" assembly="Megatec.MasterWeb.Loading">
	<dependency control="lstDepartFrom" />
</control>

Родительский узел задается тегом <control>, для каждого узла есть дополнительная информация:

Параметр Описание
name Название контрола в форме фильтра, используется для связи узла фильтра в схеме и контрола на форме.
type Тип данных в узле фильтра, варианты как и в distributedSearchSettings: departFrom, country и т.д.
sort Параметры сортировки значений этого типа в БД
assembly Служебная информация. Не изменять! Название сборки, в которой лежат классы для загрузки значений данного типа.
firstItem Представление элемента «Все»

Дочерний узел задается тегом <dependency/>, вложенными в тег <control>. В атрибуте control тега <dependency/> указывается название узла, от которого зависит данный узел. Чтобы задать значение по умолчанию для данного узла, нужно добавить тег defaultSelection. Атрибут control должен быть равен названию узла фильтра, для которого устанавливается значение по умолчанию, атрибут property содержит само значение по умолчанию. Форма задания значения по умолчанию такая же, как и при передаче значений через URL.

Настройки в web.config приложения ПК Мастер-Web

При настройке распределенного поиска в файле web.config приложения ПК Мастер-Web необходимо задать дополнительные условия для отображения и проверки данных.

Описание Значение Настройка
1 Определение колонок тарифов на авиаперелет для отображения в результатах поиска (настройка является обязательной для корректной работы распределенного поиска). Подробнее см. Настройка секции dynamicCharterClasses
  • true – использовать упрощенную корзину;
  • false или отсутствие настройки – использовать обычную корзину
<dynamicCharterClasses mode="complex" />
2 Настройка, определяющая страницу, на которую будет попадать пользователь после бронирования тура от стороннего туроператора.
  • true – переход осуществляется на страницу (ReservationResultPage.aspx);
  • false или отсутствие настройки – переход осуществляется на страницу «Информация о заказе» (OrderInfo.aspx)
<add key="DSRedirectToResultPage" value= "true" />
3 Настройка метода проверки квот
  • true – квоты проверяются исходя из настроек в базе
  • false или отсутствие настройки – квоты сервисами не проверяются
<add key="UseNewSetToQuota" value="true" />
4 Отображение Даты проживания в отеле в экранах:
  • Корзина;
  • Упрощенная корзина;
  • Расширенная корзина;
  • Удаленная корзина;
  • BasketTUI.
  • true — отображать Даты проживания
  • false или отсутствие настройки — не отображать Даты проживания
<add key="showHotelDatesInBasket" value="true"/>


Дополнительная информация


Для корректного отображения наличия мест в турах от удаленных источников, необходимо указывать соответствующие настройки в web.config поискового сервиса.
Настройки экрана «Динамический лист предложений с наличием мест»

Настройки для данного экрана задаются в файле web.config, находящемся в папке MasterWebStandard. Данные настройки регулируют отображение тарифов на авиаперелеты, питания и категорий гостиниц. Для этого в конфигурационном файле добавляется секция <MasterWeb>.
KE 50.png
Данная секция содержит 3 подсекции настроек:

  1. dynamicCharterClasses – список тарифов на авиаперелет (еще не реализовано для Распределенного поиска)
  2. dynamicBoard – список типов питания
  3. dynamicHotelCategories – список категорий гостиниц.

Классы 2.1 и 2.2 на рисунке отвечают за отображение информации по турам от удаленных источников. Настраиваются аналогично классам отвечающим за отображение локальных туров. В классе указывается то название источника, которое указано в конфигурационном файле distributedSearchSettings.xml

Сервис авторизации

Начиная с релиза 2009.2.16 ПК «Мастер-Web» появилась возможность защиты веб-сервисов распределенного поиска от несанкционированного использования посредством сервиса авторизации (WsAuthorization). Установка сервиса описана на странице Дополнительный модуль Сервис для авторизации .

Настройка

При необходимости использования веб-сервисов распределенного поиска без сервиса авторизации на релизах до ПК «Мастер-Web» 2009.2.17.1 нужно выполнить скрипт fn_mwCheckToken.sql — его можно запросить в департаменте по работе с клиентами компании Мегатек.

Настройка агентского ПК «Мастер-Web»
  • В файле настроек распределенного поиска distributedSearchSettings.xml, расположенного в папке templates каталога ПК «Мастер-Web», для использования сервиса авторизации WsAuthorization необходимо указать 3 настройки:
    • WsAuthLogin — логин для обращения к WsAuthorization;
    • WsAuthPassword — пароль для обращения к WsAuthorization;
    • AuthorizationServiceUrl — адрес авторизационного сервиса.
    <DistributedSearchSource
        Id="Внешний источник № 7"
        WsAuthLogin="qaz"
        WsAuthPassword="123">
    
      <!-- Адрес авторизационного сервиса -->
      <AuthorizationServiceUrl>
        http://server:8080/distributedsearch/mw-ws-authorization/WsAuthorization.asmx
      </AuthorizationServiceUrl></DistributedSearchSource>
    
  • При включении хеширования (usePasswordHashing) в настройке WsAuthPassword нужно указывать не пароль, а его хеш:
    <DistributedSearchSource
      Id="Внешний источник № 7"
      WsAuthLogin="qaz"
      WsAuthPassword="xMpCOKC5I4INzFCab3WEmw==">
    

Поддержка репликации

Строки подключения сервисов

При развертывании распределенного поиска у туроператоров, использующих репликацию, поисковые веб-сервисы необходимо настроить на поисковую базу данных ПК «Мастер-Тур», а сервисы бронирования и квотирования — на основную базу данных. Строки подключения приведены ниже.

  • Поисковая база данных
    • Сервис Search
      <add key="connectionString" value="Data Source=Сервер с поисковой БД; Initial Catalog=Поисковая БД; User Id=Пользователь из таблицы [UserList]; Password=Пароль пользователя; Max Pool Size=500; Application Name=DS" />
      
      <add key="pagingType" value="2" />
      
    • Сервис FilterBindingService
      <add key="connectionString" value="Data Source=Сервер с поисковой БД; Initial Catalog=Поисковая БД; User Id=Пользователь из таблицы [UserList]; Password=Пароль пользователя; Application Name=DS" />
      
  • Основная база данных
    • Сервис ReservationService
      <add key="connectionString" value="Data Source=Сервер с основной БД; Initial Catalog=Основная БД; User Id=Пользователь из таблицы [UserList]; Password=Пароль пользователя; Application Name=DS" />
      
      <add key="pagingType" value="2" />
      
    • Сервис CheckQuotesService
      <add key="connectionString" value="Data Source=Сервер с основной БД; Initial Catalog=Основная БД; User Id=Пользователь из таблицы [UserList]; Password=Пароль пользователя; Application Name=DS" />
      
      <add key="CommonType" value="MasterTour"/>
      

Использование сервиса авторизации с репликацией

При использовании репликации возможны 2 варианта настройки сервиса авторизации:

  1. Без защиты — полное отключение сервиса авторизации: и на основной, и на поисковой базе данных.
  2. Частичная защита — включение сервиса авторизации на поисковой базе данных.
    В этом случае обращения к веб-сервисам FilterBindingService и Search, использующим поисковую базу данных, будут проверяться сервисом WsAuthorization, а обращения к сервисам ReservationService, ServiceProvider и CheckQuotesService, использующим основную базу данных, проверяться не будут.

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

Схема распределенного поиска


818.PNG

Поиск цен

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

  1. Типу тура
  2. Курорту
  3. Городу
  4. Названию тура
  5. Названию отеля (по ссылке с названия отеля пользователь может перейти на страницу с описанием отеля)
  6. Типу номера
  7. Стоимости
  8. Продолжительности
  9. Классу гостиницы
  10. Питанию
  11. Наличию мест в отеле и на рейсе

Ds052.png
По нажатию кнопки «Подобрать тур», системой будут отобраны туры, отвечающие заданным условиям. Информация в результатах поиска представлена в виде таблицы, содержащей следующие поля:

  1. Дата заезда – дата заезда по туру
  2. Отель – название отеля (по ссылке с названия отеля пользователь может перейти на страницу с описанием отеля)
  3. Категория - категория отеля
  4. Город – город, к которому привязан отель
  5. Тип номера – тип номера, на который указана цена
  6. Категория номера – категория номера, на который указана цена
  7. Размещение – размещение, на которое указана цена
  8. Питание – тип питания, на которое указана цена
  9. Ночи – продолжительность тура в ночах
  10. Цена
  11. Вал – валюта, в которой указана цена
  12. Источник цены – название тура
  13. Цена за – тип рассчитанной цены: за человека или за номер
  14. Наличие мест – наличие мест в гостинице
  15. Эконом, Бизнес - наличие мест на авиаперелеты. Колонки и их названия формируются динамически. Их отображение регулируется настройкой в конфигурационном файле web.config

По нажатию на цену пользователь попадает в экран бронирования тура. При переходе в экран бронирования по собственным турам пользователь попадает в экран «Корзина» (Basket.aspx), «Упрощенная корзина» (SimpleBasket.aspx) или «Расширенная корзина» (Basket.aspx) в зависимости от настроек в конфигурационном файле web.config и наличия установленных надстроек.

При переходе в экран бронирования по турам стороннего туроператора пользователь попадает в экран «Удаленная корзина» (RemoteBasket.aspx).

Актуальность цен

В экране распределенного поиска отбор данных осуществляется по рассчитанным (записанным в БД) ценам туроператоров. При отборе туров, цена на тур стороннего туроператора конвертируется в соответствии с курсом валют в локальной базе. В экране бронирования расчеты ведутся уже по актуальным на данный момент ценам. Т.е. если после расчета прайс-листа цены были изменены, то в экране бронирования стоимость тура покажется уже с учетом этих изменений.

Актуальность наличия мест

В экране распределенного поиска и в экранах бронирования туров наличие мест отображается в соответствии с наличием мест в квоте на момент проверки.

Для собственных туров наличие мест отображается в соответствии с настройками в конфигурационном файле основного приложения ПК Мастер-Web.

Для туров сторонних операторов наличие мест отображается в соответствии с настройками в конфигурационном файле web-сервиса «Сервис проверки наличия мест» (ws-checkquotes).

Дополнительная информация


Даты заездов подсвечиваются в соответствии с установленным значением в настройке ExceptTourDatesWithNoAQ в таблице SystemSettings. Если настройка установлена в значение "1", 
то будут исключаться даты туров, на которые нет мест в квоте на перелет. Если настройка установлена в значение "0" или "не установлена", то не будут исключаться даты туров,
на которые нет мест в квоте на перелет.
Корректировка цен от стороннего туроператора

Существует возможность корректировки цен при отображении данных от стороннего туроператора. Есть несколько вариантов корректировки цен:

  1. Добавление фиксированной наценки к общей стоимости тура от стороннего туроператора
  2. Добавление процентной наценки к общей стоимости тура от стороннего туроператора
  3. Добавление фиксированной наценки к стоимости услуг определенных классов
  4. Добавление процентной наценки с стоимости услуг определенных классов

Соответственно корректировка с добавлением наценки к общей стоимости тура применяется и в экране и поиска, и в экране бронирования туров от стороннего туроператора.

А корректировка с добавлением наценки к стоимости доп.услуг применяется только в экране бронирования туров от стороннего туроператора.

Бронирование заявки

Бронирование тура из стороннего источника происходит в экране Удаленная корзина (RemoteBasketM.aspx).
Бронирование доступно только для зарегистрированных и авторизованных в системе пользователей.

Экран «Удаленная корзина» («RemoteBasketM.aspx»)

Экран «Удаленная корзина» разделен на несколько блоков. В верхней части экрана отображаются параметры тура:

  1. Страна
  2. Название тура
  3. Даты заезда
  4. Продолжительность
  5. Состав заказа
  6. Наличие мест для отеля и авиаперелета
  7. Если в туре несколько рейсов, таблица для выбора перелетов.

Подбор перелетов осуществляется по рейсам с актуальным расписанием и ценам. Ниже располагается блок с подробной информацией по выбранному проживанию:

  1. Название отеля
  2. Размещение
  3. Питание

Ниже отображается информация о количестве человек, сумме заказа, с учетом внесенных изменений, а также сумме к оплате, с учетом агентской комиссии.

Далее отображается форма для ввода туристов. Поля, обязательные для ввода определяются настройками ( см. Настройка полей данных о туристах)
Ds054.png
Если в туре присутствует несколько рейсов, то экран «Удаленная корзина» позволяет внести необходимые изменения – выбрать другой рейс. Для расчета стоимости тура с учетом изменения рейса, нужно нажать на кнопку «Пересчитать». Если в туре присутствуют услуги, исключенные при обсчете прайс-листа, то существует возможность добавления этих услуг для конкретных туристов. Для этого необходимо проставить отметки в чек-боксах для нужных услуг. Для расчета стоимости тура с учетом добавленных услуг, нужно нажать на кнопку «Пересчитать».

Для бронирования заявки необходимо нажать кнопку «Забронировать».

По нажатию кнопки «Забронировать», заявка запишется в базу данных стороннего туроператора и туроператора, являющегося владельцем приложения ПК Мастер-Web, и пользователю откроется экран с информацией о сделанном заказе, как показано на изображении ниже.
Ds055.png
Здесь пользователю представлена информация о сделанном заказе:

  1. Номер заявки в базе стороннего туроператора
  2. Даты заезда
  3. Продолжительность
  4. Название отеля
  5. Размещение в отеле
  6. Количество человек по путевке
  7. Список туристов по услуге отель
  8. Экскурсионная программа тура
  9. Дополнительные услуги
  10. Сумма к оплате
  11. Полная стоимость заказа
  12. Номер путевки в базе туроператора, являющегося владельцем приложения ПК Мастер-Web
  13. Дата оформления заказа

При выключенной настройке DSRedirectToResultPage переход осуществляется на стандартную страницу «Информация о заказе» (OrderInfo.aspx).

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

  1. Бронирующему агентству (адрес представителя, авторизованного в системе)
  2. Адреса, указанные в настройке <Email /> в файле templates/distributedSearchSettings.xml
После бронирования путевки, если она изменилась в БД удаленного туроператора, то субагент должен вручную поменять соответствующую
путевку в своей БД.

Поиск цен в нескольких источниках

Загрузка фильтров

Существует два варианта загрузки поисковых фильтров:

  1. Фильтры по своим турам грузятся через прямые запросы к БД, а фильтры по данным сторонних туроператоров грузятся через web-сервис FilterBinding
  2. Фильтры по всем данным грузятся через web-сервис FilterBinding

В первом случае web-сервис устанавливается только у стороннего туроператора, чьи цены необходимо встроить в приложение туроператора – владельца приложения ПК Мастер-Web.

Во втором случае web-сервис FilterBinding устанавливается и у стороннего туроператора и у туроператора-владельца приложения ПК Мастер-Web.

Экран распределенного поиска

Экран распределенного поиска состоит из блока поисковых фильтров и таблицы с результатами поиска. Блок поисковых фильтров содержит поля:

  1. Город вылета - названия городов с признаком CT_IsDeparture=1 из таблицы CityDictionary, перегружает все последующие фильтры (для туров от стороннего источника сопоставление городов вылета делается в файле templates/distributedSearchSettings.xml. При этом название города вылета может отображаться либо из базы туроператора, являющегося владельцем приложения ПК Мастер-Web, либо берется значение параметра Name для Type=departFrom из файла templates/distributedSearchSettings.xml)
  2. Страна - названия стран из таблицы tbl_Country, перегружает все последующие фильтры (для туров от стороннего источника сопоставление стран делается в файле templates/distributedSearchSettings.xml. При этом название страны может отображаться либо из базы туроператора, являющегося владельцем приложения ПК Мастер-Web, либо берется значение параметра Name для Type=country из файла templates/distributedSearchSettings.xml)
  3. Тип тура - названия типов туров из таблицы TipTur, перегружает все последующие фильтры
  4. Курорт - названия курортов из таблицы Resorts, перегружает все последующие фильтры
  5. Город - названия городов из таблицы CityDictionary, перегружает все последующие фильтры
  6. Тур - названия типов туров из таблицы tbl_TurList, перегружает все последующие фильтры
  7. Отель - названия отелей из таблицы HotelDictionary, перегружает все последующие фильтры (если поле HD_HTTP заполнено, то в названии отеля формируется ссылка на адрес, указанный в данном поле)
  8. Даты заезда - даты заезда по турам подсвечиваются в календарях. На подсветку также влияет наличие мест по перелету на дату вылета. В случае отсутствия мест – дата заезда не отображается (не подсвечивается). В случае наличия мест или запроса – дата заезда отображается (подсвечивается).
  9. Тип номера, либо количество основных и доп.мест - названия типов номеров из таблицы Rooms.
    При наличии рассчитанных детских мест в туре, в экране "Распределенного поиска" не отображаются поля для указания возраста детей на дополнительных местах, как в экране "Подбор туров с наличием мест".
  10. Цена не более указанной величины
  11. Ночи - рассчитанные продолжительности по выбранным в предыдущих фильтрах параметрам
  12. Категория - рассчитанные категории отелей по выбранным в предыдущих фильтрах параметрам
  13. Питание - рассчитанные типы питания по выбранным в предыдущих фильтрах параметрам
  14. Наличие мест в отеле и на рейсе - наличие мест "Есть", "Запрос" и "Нет"

Таблица с результатами поиска содержит поля:

  1. Дата заезда
  2. Отель
  3. Категория - категория отеля
  4. Город – город, к которому привязан отель
  5. Тип номера – тип номера, на который указана цена
  6. Категория номера – категория номера, на который указана цена
  7. Размещение – размещение, на которое указана цена
  8. Питание – тип питания, на которое указана цена
  9. Ночи – продолжительность тура в ночах
  10. Цена
  11. Вал – валюта, в которой указана цена
  12. Источник цены – название тура
  13. Цена за – тип рассчитанной цены: за человека или за номер
  14. Наличие мест – наличие мест в гостинице
  15. Эконом, Бизнес

Все поля являются текстовыми и нередактируемыми.

*Если поле HD_HTTP в таблице HotelDictionary заполнено, то в названии отеля в поле «Отель» формируется ссылка на адрес, указанный в данном поле.
*Если поле TL_WEBHTTP в таблице tbl_TurList заполнено, то в названии тура в поле «Источник цены» формируется ссылка на адрес, указанный в данном поле.

По умолчанию данные в результатах поиска отсортированы по полю «Цена» по возрастанию.

Корректировка цен стороннего туроператора

Данные о цене закупки (нетто) и продажной цены для клиента (брутто) поступают от удаленного источника. Для корректировки цен стороннего туроператора необходимо добавить следующие настройки:

  1. Настройка для добавления фиксированной наценки к общей стоимости тура от стороннего туроператора
  2. Настройка для добавления процентной наценки к общей стоимости тура от стороннего туроператора
  3. Настройка для добавления фиксированной наценки к стоимости доп. услуг определенных классов
  4. Настройка для добавления процентной наценки с стоимости доп. услуг определенных классов

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

Список параметров, которые можно передать в «Распределенный поиск»

Данная настройка предусматривает возможность передачи различных параметров через URL страницы. Если существуют рассчитанные прайсы по данной стране, то при загрузке страницы в фильтре данная страна автоматически будет выбрана в списке стран, и будут загружены значения в других поисковых полях. После указания параметров URL необходимо нажать на кнопку KE 18821.png.

  • departfrom
  • country
  • city
  • hotel
  • resort
  • tourtype
  • tour
  • nights
  • dateFrom
  • dateTo

Значения параметров для стран берутся из таблицы tbl_Country, для городов – CityDictionary, для курортов – Resorts, для отелей - HotelDictionary, для дат заезда и количество ночей - TP_Tours, типы туров - TipTur.


Печать отчетов

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

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