Мастер-Web:Дополнительный модуль Распределенный поиск — различия между версиями
[досмотренная версия] | [непроверенная версия] |
Schukin (обсуждение | вклад) |
Schukin (обсуждение | вклад) |
||
Строка 2: | Строка 2: | ||
==Введение== | ==Введение== | ||
− | Модуль «Распределенный поиск» предназначен для отображения в едином поисковом модуле как своих, так и сторонних предложений. Модуль позволяет осуществлять поиск и бронирование туров от различных туроператоров в одном приложении ПК Мастер-Web. | + | Модуль «Распределенный поиск» предназначен для отображения в едином поисковом модуле как своих, так и сторонних предложений. Модуль позволяет осуществлять поиск и бронирование туров от различных туроператоров в одном приложении ''ПК Мастер-Web''. |
==Установка== | ==Установка== | ||
− | Для установки «Распределенного поиска» нужно распаковать архив надстройки mw-distributedsearch-2007.2.XX.XXXX.zip в корень каталога, где установлено приложение ПК Мастер-Web. | + | Для установки «Распределенного поиска» нужно распаковать архив надстройки <tt>mw-distributedsearch-2007.2.XX.XXXX.zip</tt> в корень каталога, где установлено приложение ''ПК Мастер-Web''. |
− | Для развертывания распределенного поиска необходимо на web-сервере каждого туроператора, цены которого необходимо отображать в собственном приложении, установить Сервис по загрузке поисковых фильтров (FilterBinding), Поисковый сервис (SearchService), Сервис проверки наличия мест (CheckQuotes) и Сервис бронирования (Reservation). Описание процесса установки сервисов приведено в руководстве пользователя соответствующего сервиса. | + | Для развертывания распределенного поиска необходимо на web-сервере каждого туроператора, цены которого необходимо отображать в собственном приложении, установить '''Сервис по загрузке поисковых фильтров''' (FilterBinding), '''Поисковый сервис''' (SearchService), '''Сервис проверки наличия мест''' (CheckQuotes) и '''Сервис бронирования''' (Reservation). Описание процесса установки сервисов приведено в руководстве пользователя соответствующего сервиса. |
Если собственные предложения также должны загружаться через web-сервис, то такие же web-сервисы необходимо установить и на своем web-сервере. | Если собственные предложения также должны загружаться через web-сервис, то такие же web-сервисы необходимо установить и на своем web-сервере. | ||
==Настройка== | ==Настройка== | ||
===Добавление секций=== | ===Добавление секций=== | ||
− | Добавление секций в конфигурационный файл web.config производится только в случае, если локальные предложения туроператора подключаются через сервис. | + | Добавление секций в конфигурационный файл <tt>web.config</tt> производится только в случае, если локальные предложения туроператора подключаются через сервис. |
− | *1. В секции <ConfigSections> добавить подсекцию: | + | *1. В секции ''<ConfigSections>'' добавить подсекцию: |
<sectionGroup name="Megatec.Web.Services"> | <sectionGroup name="Megatec.Web.Services"> | ||
<section name="servicesAccessibility" | <section name="servicesAccessibility" | ||
type="Megatec.Configuration.WebServicesSection, Megatec.Configuration"/> | type="Megatec.Configuration.WebServicesSection, Megatec.Configuration"/> | ||
</sectionGroup> | </sectionGroup> | ||
− | *2. На одном уровне с секцией <ConfigSections> добавить секцию: | + | *2. На одном уровне с секцией ''<ConfigSections>'' добавить секцию: |
<Megatec.Web.Services> | <Megatec.Web.Services> | ||
<servicesAccessibility Enabled="true"> | <servicesAccessibility Enabled="true"> | ||
Строка 33: | Строка 33: | ||
===Настройки файла distributedSearchSettings.xml=== | ===Настройки файла distributedSearchSettings.xml=== | ||
− | Файл distributedSearchSettings.xml содержит информацию о внешних источниках данных. | + | Файл <tt>distributedSearchSettings.xml</tt> содержит информацию о внешних источниках данных. |
− | Элемент <Enabled>true</Enabled> элемента <DistributedSearchSettings> указывает на необходимость проведения поиска во внешних источниках данных. | + | Элемент ''<Enabled>true</Enabled>'' элемента ''<DistributedSearchSettings>'' указывает на необходимость проведения поиска во внешних источниках данных. |
− | Каждый из элементов <DistributedSearchSource Id="src"> элемента <SearchSources> представляет собой описание источника данных. Атрибут id может быть произвольным, но должен быть уникальным в рамках документа. | + | Каждый из элементов ''<DistributedSearchSource Id="src">'' элемента ''<SearchSources>'' представляет собой описание источника данных. Атрибут ''id'' может быть произвольным, но должен быть уникальным в рамках документа. |
− | * <FilterBindingServiceUrl> - адрес сервиса загрузки поискового фильтра для данного источника | + | * '''<FilterBindingServiceUrl>''' - адрес сервиса загрузки поискового фильтра для данного источника |
− | * <SearchServiceUrl> - адрес поискового сервиса для данного источника | + | * '''<SearchServiceUrl>''' - адрес поискового сервиса для данного источника |
− | * <ReservationServiceUrl> - адрес сервиса бронирования для данного источника | + | * '''<ReservationServiceUrl>''' - адрес сервиса бронирования для данного источника |
− | * <ServiceProviderServiceUrl> | + | * '''<ServiceProviderServiceUrl>''' |
− | * <CheckQuotesServiceUrl> - адрес сервиса проверки наличия мест | + | * '''<CheckQuotesServiceUrl>''' - адрес сервиса проверки наличия мест |
− | * <ReplcamentSearchItems> - правила подстановки данных из поискового фильтра данного источника в локальный фильтр | + | * '''<ReplcamentSearchItems>''' - правила подстановки данных из поискового фильтра данного источника в локальный фильтр |
− | * <FlightGroups> - группы тарифов на авиаперелеты | + | * '''<FlightGroups>''' - группы тарифов на авиаперелеты |
− | * <PartnerKey> - ключ партнера, являющегося владельцем приложения ПК Мастер-Web, в удаленном источнике | + | * '''<PartnerKey>''' - ключ партнера, являющегося владельцем приложения ''ПК Мастер-Web'', в удаленном источнике |
− | * <InternalPartnerKey> - ключ партнера, являющегося поставщиком цен, в локальном источнике | + | * '''<InternalPartnerKey>''' - ключ партнера, являющегося поставщиком цен, в локальном источнике |
− | * <InternalServiceKey> - класс услуги в базе туроператора, являющегося владельцем приложения ПК Мастер-Web, который будет использоваться для сохранения услуг из базы стороннего туроператора (все услуги по путевке, которая забронирована по туру стороннего туроператора, будут сохранены под этим классом услуги) | + | * '''<InternalServiceKey>''' - класс услуги в базе туроператора, являющегося владельцем приложения ''ПК Мастер-Web'', который будет использоваться для сохранения услуг из базы стороннего туроператора (все услуги по путевке, которая забронирована по туру стороннего туроператора, будут сохранены под этим классом услуги) |
− | * <InternalCreator> - ключ пользователя из таблицы UserList туроператора, являющегося владельцем приложения ПК Мастер-Web, который будет прописываться создателем путевок, оформленных по турам стороннего туроператора | + | * '''<InternalCreator>''' - ключ пользователя из таблицы ''UserList'' туроператора, являющегося владельцем приложения ''ПК Мастер-Web'', который будет прописываться создателем путевок, оформленных по турам стороннего туроператора |
− | * <InternalFilialKey> - ключ филиала (PR_Filial=2) из таблицы tbl_Partners туроператора, являющегося владельцем приложения ПК Мастер-Web, который будет прописываться филиалом для путевок, оформленных по турам стороннего туроператора | + | * '''<InternalFilialKey>''' - ключ филиала (PR_Filial=2) из таблицы ''tbl_Partners'' туроператора, являющегося владельцем приложения ''ПК Мастер-Web'', который будет прописываться филиалом для путевок, оформленных по турам стороннего туроператора |
− | * <InternalTourKey> - ключ тура из таблицы tbl_TurList туроператора, являющегося владельцем приложения ПК Мастер-Web, который будет прописываться в поле DG_TRKey у путевок, оформленных по турам стороннего туроператора | + | * '''<InternalTourKey>''' - ключ тура из таблицы ''tbl_TurList'' туроператора, являющегося владельцем приложения ''ПК Мастер-Web'', который будет прописываться в поле ''DG_TRKey'' у путевок, оформленных по турам стороннего туроператора |
− | * <DefaultCountryKey> | + | * '''<DefaultCountryKey>''' |
− | * <DefaultCityKey> | + | * '''<DefaultCityKey>''' |
− | * <ReservationWaitStatus> | + | * '''<ReservationWaitStatus>''' |
− | * <ReservationOKStatus> | + | * '''<ReservationOKStatus>''' |
− | * <AdditionalComissionFixed> - фиксированная наценка к общей стоимости тура от стороннего туроператора | + | * '''<AdditionalComissionFixed>''' - фиксированная наценка к общей стоимости тура от стороннего туроператора |
− | * <AdditionalServiceComission> - фиксированная наценка к стоимости доп.услуг при бронировании туров от стороннего туроператора | + | * '''<AdditionalServiceComission>''' - фиксированная наценка к стоимости доп.услуг при бронировании туров от стороннего туроператора |
− | * <FilialKey> | + | * '''<FilialKey>''' |
− | * <EMail> - дополнительные e-mail адреса, на которые нужно отправлять письмо о новом бронировании через распределенный поиск; перечисляются через точку с запятой | + | * '''<EMail>''' - дополнительные e-mail адреса, на которые нужно отправлять письмо о новом бронировании через распределенный поиск; перечисляются через точку с запятой |
− | * <DontSendBookingMail> - настройка, управляющая отправкой письма о новом бронировании агентству. Значения: true – не отправлять письмо агентству; false – отправлять письмо о новом бронировании агентству | + | * '''<DontSendBookingMail>''' - настройка, управляющая отправкой письма о новом бронировании агентству. Значения: true – не отправлять письмо агентству; false – отправлять письмо о новом бронировании агентству |
− | Правило подстановки данных из поискового фильтра данного источника в локальный фильтр задается при помощи набора элементов <ReplcamentSubItem>, где | + | Правило подстановки данных из поискового фильтра данного источника в локальный фильтр задается при помощи набора элементов ''<ReplcamentSubItem>'', где |
− | * Type - тип условия подстановки; возможные значения: departFrom, country, city | + | * '''Type''' - тип условия подстановки; возможные значения: departFrom, country, city |
− | * LocalValue - ключ сущности в локальной базе (если в локальном источнике отсутствует такой ключ, то LocalValue указывать не нужно) | + | * '''LocalValue''' - ключ сущности в локальной базе (если в локальном источнике отсутствует такой ключ, то LocalValue указывать не нужно) |
− | * RemoteValue - ключ сущности во внешнем источнике | + | * '''RemoteValue''' - ключ сущности во внешнем источнике |
− | * Name - название сущности (настройка используется при отсутствии сущности в локальном источнике) | + | * '''Name''' - название сущности (настройка используется при отсутствии сущности в локальном источнике) |
Примеры:<br /> | Примеры:<br /> | ||
Строка 92: | Строка 92: | ||
</ReplcamentSearchItem> | </ReplcamentSearchItem> | ||
===Настройка полей данных о туристах=== | ===Настройка полей данных о туристах=== | ||
− | Настройка отображения полей данных о туристах производится в файле descriptions.xml. Данный файл содержит следующие настройки: | + | Настройка отображения полей данных о туристах производится в файле <tt>descriptions.xml</tt>. Данный файл содержит следующие настройки: |
1. Настройка отображения поля «Главный турист»: | 1. Настройка отображения поля «Главный турист»: | ||
Строка 132: | Строка 132: | ||
Настройки отображения полей данных о туристах содержат параметры: | Настройки отображения полей данных о туристах содержат параметры: | ||
− | #Code= - зашитая в коде константа, которую нельзя изменять. | + | #'''Code=''' - зашитая в коде константа, которую нельзя изменять. |
− | #Header= - заголовок поля | + | #'''Header=''' - заголовок поля |
− | #Visible= - видимость поля; значения: True – видимый, Flse – невидимый | + | #'''Visible=''' - видимость поля; значения: True – видимый, Flse – невидимый |
− | #Required= - обязательность заполнения поля; значения: True – обязательное, False – необязательное | + | #'''Required=''' - обязательность заполнения поля; значения: True – обязательное, False – необязательное |
− | #Translit= - транслитерация; значения: True – транслитерировать, False – не транслитерировать | + | #'''Translit=''' - транслитерация; значения: True – транслитерировать, False – не транслитерировать |
− | #letterCase= - регистр символов в поле; значения: 1 – первая буква заглавная, 2 – все буквы большие, 3 – все буквы маленькие | + | #'''letterCase=''' - регистр символов в поле; значения: 1 – первая буква заглавная, 2 – все буквы большие, 3 – все буквы маленькие |
− | #Edit= - редактирование поля; значения: True – редактируемое, False – нередактируемое | + | #'''Edit=''' - редактирование поля; значения: True – редактируемое, False – нередактируемое |
===Настройки в web.config приложения ПК Мастер-Web=== | ===Настройки в web.config приложения ПК Мастер-Web=== | ||
Дополнительные настройки, задаваемые в секции <appSettings/> файла web.config, находящемся в папке с приложением ПК Мастер-Web. | Дополнительные настройки, задаваемые в секции <appSettings/> файла web.config, находящемся в папке с приложением ПК Мастер-Web. | ||
Строка 148: | Строка 148: | ||
==Работа в системе== | ==Работа в системе== | ||
− | ===Схема распределенного поиска=== | + | ====Схема распределенного поиска==== |
<br /> | <br /> | ||
[[Файл:818.PNG]]<br /> | [[Файл:818.PNG]]<br /> | ||
− | ===Поиск цен=== | + | ====Поиск цен==== |
Для поиска цен через распределенный поиск необходимо выбрать город вылета, страну и период дат заездов. Можно наложить дополнительные фильтры на отбор туров по следующим параметрам: | Для поиска цен через распределенный поиск необходимо выбрать город вылета, страну и период дат заездов. Можно наложить дополнительные фильтры на отбор туров по следующим параметрам: | ||
#Типу тура | #Типу тура | ||
Строка 187: | Строка 187: | ||
При переходе в экран бронирования по турам стороннего туроператора пользователь попадает в экран «Удаленная корзина» (RemoteBasket.aspx). | При переходе в экран бронирования по турам стороннего туроператора пользователь попадает в экран «Удаленная корзина» (RemoteBasket.aspx). | ||
− | ===Актуальность цен=== | + | =====Актуальность цен===== |
В экране распределенного поиска отбор данных осуществляется по рассчитанным (записанным в БД) ценам туроператоров. | В экране распределенного поиска отбор данных осуществляется по рассчитанным (записанным в БД) ценам туроператоров. | ||
В экране бронирования расчеты ведутся уже по актуальным на данный момент ценам. Т.е. если после расчета прайс-листа цены были изменены, то в экране бронирования стоимость тура покажется уже с учетом этих изменений. | В экране бронирования расчеты ведутся уже по актуальным на данный момент ценам. Т.е. если после расчета прайс-листа цены были изменены, то в экране бронирования стоимость тура покажется уже с учетом этих изменений. | ||
− | ===Актуальность наличия мест=== | + | =====Актуальность наличия мест===== |
В экране распределенного поиска и в экранах бронирования туров наличие мест отображается в соответствии с наличием мест в квоте на момент проверки. | В экране распределенного поиска и в экранах бронирования туров наличие мест отображается в соответствии с наличием мест в квоте на момент проверки. | ||
Строка 196: | Строка 196: | ||
Для туров сторонних операторов наличие мест отображается в соответствии с настройками в конфигурационном файле web-сервиса «Сервис проверки наличия мест» (ws-checkquotes). | Для туров сторонних операторов наличие мест отображается в соответствии с настройками в конфигурационном файле web-сервиса «Сервис проверки наличия мест» (ws-checkquotes). | ||
− | ===Корректировка цен стороннего туроператора=== | + | =====Корректировка цен стороннего туроператора===== |
Существует возможность корректировки цен при отображении данных от стороннего туроператора. | Существует возможность корректировки цен при отображении данных от стороннего туроператора. | ||
Есть несколько вариантов корректировки цен: | Есть несколько вариантов корректировки цен: | ||
Строка 207: | Строка 207: | ||
А корректировка с добавлением наценки к стоимости доп.услуг применяется только в экране бронирования туров от стороннего туроператора. | А корректировка с добавлением наценки к стоимости доп.услуг применяется только в экране бронирования туров от стороннего туроператора. | ||
− | ==Бронирование заявки== | + | ===Бронирование заявки=== |
+ | Бронирование тура из стороннего источника происходит в экране «Удаленная корзина». | ||
+ | Бронирование доступно только для зарегистрированных и авторизованных в системе пользователей. | ||
+ | [[Файл:Ds053.png|x500px]]<br /> | ||
+ | Экран «Удаленная корзина» разделен на несколько блоков. | ||
+ | В верхней части экрана отображаются параметры тура: | ||
+ | #Страна | ||
+ | #Название тура | ||
+ | #Даты заезда | ||
+ | #Продолжительность | ||
+ | #Состав заказа | ||
+ | #Наличие мест для отеля и авиаперелета | ||
+ | #Если в туре несколько рейсов, таблица для выбора перелетов. | ||
+ | |||
+ | Подбор перелетов осуществляется по рейсам с актуальным расписанием и ценам. | ||
+ | Ниже располагается блок с подробной информацией по выбранному проживанию: | ||
+ | #Название отеля | ||
+ | #Размещение | ||
+ | #Питание | ||
+ | |||
+ | Ниже отображается информация о количестве человек, сумме заказа, с учетом внесенных изменений, а также сумме к оплате, с учетом агентской комиссии. | ||
+ | |||
+ | Далее отображается форма для ввода туристов. Поля, обязательные для ввода определяются настройками ( см. [[#Настройка полей данных о туристах|Настройка полей данных о туристах]])<br /> | ||
+ | [[Файл:Ds054.png|x500px]]<br /> | ||
+ | Если в туре присутствует несколько рейсов, то экран «Удаленная корзина» позволяет внести необходимые изменения – выбрать другой рейс. Для расчета стоимости тура с учетом изменения рейса, нужно нажать на кнопку «Пересчитать». | ||
+ | Если в туре присутствуют услуги, исключенные при обсчете прайс-листа, то существует возможность добавления этих услуг для конкретных туристов. Для этого необходимо проставить отметки в чек-боксах для нужных услуг. Для расчета стоимости тура с учетом добавленных услуг, нужно нажать на кнопку «Пересчитать». | ||
+ | |||
+ | Для бронирования заявки необходимо нажать кнопку «Забронировать». | ||
+ | |||
+ | По нажатию кнопки «Забронировать», заявка запишется в базу данных стороннего туроператора и туроператора, являющегося владельцем приложения ПК Мастер-Web, и пользователю откроется экран с информацией о сделанном заказе.<br /> | ||
+ | [[Файл:Ds055.png|x500px]]<br /> | ||
+ | Здесь пользователю представлена информация о сделанном заказе: | ||
+ | #Номер заявки в базе стороннего туроператора | ||
+ | #Даты заезда | ||
+ | #Продолжительность | ||
+ | #Название отеля | ||
+ | #Размещение в отеле | ||
+ | #Количество человек по путевке | ||
+ | #Список туристов по услуге отель | ||
+ | #Экскурсионная программа тура | ||
+ | #Дополнительные услуги | ||
+ | #Сумма к оплате | ||
+ | #Полная стоимость заказа | ||
+ | #Номер путевки в базе туроператора, являющегося владельцем приложения ПК Мастер-Web | ||
+ | #Дата оформления заказа | ||
+ | |||
+ | При включенной настройке DSRedirectToResultPage переход осуществляется на стандартную страницу «Информация о заказе» (OrderInfo.aspx). | ||
+ | |||
+ | При бронировании заявки отправляется письмо о новом заказе на адреса: | ||
+ | #Бронирующему агентству (адрес представителя, авторизованного в системе) | ||
+ | #Адреса, указанные в настройке <Email /> в файле templates/distributedSearchSettings.xml | ||
+ | |||
+ | ===Поиск цен в нескольких источниках=== | ||
+ | =====Загрузка фильтров===== | ||
+ | Существует два варианта загрузки поисковых фильтров: | ||
+ | #Фильтры по своим турам грузятся через прямые запросы к БД, а фильтры по данным сторонних туроператоров грузятся через web-сервис FilterBinding | ||
+ | #Фильтры по всем данным грузятся через web-сервис FilterBinding | ||
+ | |||
+ | В первом случае web-сервис устанавливается только у стороннего туроператора, чьи цены необходимо встроить в приложение туроператора – владельца приложения ПК Мастер-Web. | ||
+ | |||
+ | Во втором случае web-сервис FilterBinding устанавливается и у стороннего туроператора и у туроператора-владельца приложения ПК Мастер-Web. | ||
+ | =====Экран распределенного поиска===== | ||
+ | Экран распределенного поиска состоит из блока поисковых фильтров и таблицы с результатами поиска. | ||
+ | Блок поисковых фильтров содержит поля: | ||
+ | #Город вылета - названия городов с признаком CT_IsDeparture=1 из таблицы CityDictionary, перегружает все последующие фильтры (для туров от стороннего источника сопоставление городов вылета делается в файле templates/distributedSearchSettings.xml. При этом название города вылета может отображаться либо из базы туроператора, являющегося владельцем приложения ПК Мастер-Web, либо берется значение параметра Name для Type=departFrom из файла templates/distributedSearchSettings.xml) | ||
+ | #Страна - названия стран из таблицы tbl_Country, перегружает все последующие фильтры (для туров от стороннего источника сопоставление стран делается в файле templates/distributedSearchSettings.xml. При этом название страны может отображаться либо из базы туроператора, являющегося владельцем приложения ПК Мастер-Web, либо берется значение параметра Name для Type=country из файла templates/distributedSearchSettings.xml) | ||
+ | #Тип тура - названия типов туров из таблицы TipTur, перегружает все последующие фильтры | ||
+ | #Курорт - названия курортов из таблицы Resorts, перегружает все последующие фильтры | ||
+ | #Город - названия городов из таблицы CityDictionary, перегружает все последующие фильтры | ||
+ | #Тур - названия типов туров из таблицы tbl_TurList, перегружает все последующие фильтры | ||
+ | #Отель - названия отелей из таблицы HotelDictionary, перегружает все последующие фильтры (если поле HD_HTTP заполнено, то в названии отеля формируется ссылка на адрес, указанный в данном поле) | ||
+ | #Даты заезда - даты заезда по турам подсвечиваются в календарях | ||
+ | #Тип номера, либо количество основных и доп.мест - названия типов номеров из таблицы Rooms | ||
+ | #Цена не более указанной величины - | ||
+ | #Ночи - рассчитанные продолжительности по выбранным в предыдущих фильтрах параметрам | ||
+ | #Категория - рассчитанные категории отелей по выбранным в предыдущих фильтрах параметрам | ||
+ | #Питание - рассчитанные типы питания по выбранным в предыдущих фильтрах параметрам | ||
+ | #Наличие мест в отеле и на рейсе - наличие мест "Есть", "Запрос" и "Нет" | ||
+ | Таблица с результатами поиска содержит поля: | ||
+ | #Дата заезда | ||
+ | #Отель | ||
+ | #Категория - категория отеля | ||
+ | #Город – город, к которому привязан отель | ||
+ | #Тип номера – тип номера, на который указана цена | ||
+ | #Категория номера – категория номера, на который указана цена | ||
+ | #Размещение – размещение, на которое указана цена | ||
+ | #Питание – тип питания, на которое указана цена | ||
+ | #Ночи – продолжительность тура в ночах | ||
+ | #Цена | ||
+ | #Вал – валюта, в которой указана цена | ||
+ | #Источник цены – название тура | ||
+ | #Цена за – тип рассчитанной цены: за человека или за номер | ||
+ | #Наличие мест – наличие мест в гостинице | ||
+ | #Эконом, Бизнес | ||
+ | Все поля являются текстовыми и нередактируемыми. | ||
+ | *Если поле HD_HTTP в таблице HotelDictionary заполнено, то в названии отеля в поле «Отель» формируется ссылка на адрес, указанный в данном поле. | ||
+ | *Если поле TL_WEBHTTP в таблице tbl_TurList заполнено, то в названии тура в поле «Источник цены» формируется ссылка на адрес, указанный в данном поле. | ||
+ | По умолчанию данные в результатах поиска отсортированы по полю «Цена» по возрастанию. | ||
+ | =====Корректировка цен стороннего туроператора===== | ||
+ | Необходимо добавить настройки для корректировки цен стороннего туроператора: | ||
+ | #Настройка для добавления фиксированной наценки к общей стоимости тура от стороннего туроператора | ||
+ | #Настройка для добавления процентной наценки к общей стоимости тура от стороннего туроператора | ||
+ | #Настройка для добавления фиксированной наценки к стоимости доп. услуг определенных классов | ||
+ | #Настройка для добавления процентной наценки с стоимости доп. услуг определенных классов | ||
+ | |||
[[Category:Мастер-Web_Дополнительные_модули]] | [[Category:Мастер-Web_Дополнительные_модули]] |
Версия 18:54, 11 декабря 2012
Статья находится на стадии разработки.
Содержание
Введение
Модуль «Распределенный поиск» предназначен для отображения в едином поисковом модуле как своих, так и сторонних предложений. Модуль позволяет осуществлять поиск и бронирование туров от различных туроператоров в одном приложении ПК Мастер-Web.
Установка
Для установки «Распределенного поиска» нужно распаковать архив надстройки mw-distributedsearch-2007.2.XX.XXXX.zip в корень каталога, где установлено приложение ПК Мастер-Web.
Для развертывания распределенного поиска необходимо на web-сервере каждого туроператора, цены которого необходимо отображать в собственном приложении, установить Сервис по загрузке поисковых фильтров (FilterBinding), Поисковый сервис (SearchService), Сервис проверки наличия мест (CheckQuotes) и Сервис бронирования (Reservation). Описание процесса установки сервисов приведено в руководстве пользователя соответствующего сервиса.
Если собственные предложения также должны загружаться через web-сервис, то такие же web-сервисы необходимо установить и на своем web-сервере.
Настройка
Добавление секций
Добавление секций в конфигурационный файл web.config производится только в случае, если локальные предложения туроператора подключаются через сервис.
- 1. В секции <ConfigSections> добавить подсекцию:
<sectionGroup name="Megatec.Web.Services"> <section name="servicesAccessibility" type="Megatec.Configuration.WebServicesSection, Megatec.Configuration"/> </sectionGroup>
- 2. На одном уровне с секцией <ConfigSections> добавить секцию:
<Megatec.Web.Services> <servicesAccessibility Enabled="true"> <Services> <add name="FilterBinding" enabled="true" url="http://somesite/ws-filter-binding/FilterBindingService.asmx"/> <add name="DoSearch" enabled="true" url="http://somesite/ws-search/Search.asmx"/> <add name="Reservation" enabled="true" url="http://somesite/ws-reservation/ReservationService.asmx"/> <add name="ServiceProvider" enabled="true" url="http://somesite/ws-reservation/ServiceProvider.asmx"/> <add name="CheckQuotes" enabled="true" url="http://somesite/ws-checkquotes/CheckQuotesService.asmx"/> </Services> </servicesAccessibility> </Megatec.Web.Services>
В данной секции необходимо указать адреса собственных сервисов загрузки фильтра, поискового сервиса, сервиса проверки наличия мест, сервиса бронирования.
Настройки файла distributedSearchSettings.xml
Файл distributedSearchSettings.xml содержит информацию о внешних источниках данных.
Элемент <Enabled>true</Enabled> элемента <DistributedSearchSettings> указывает на необходимость проведения поиска во внешних источниках данных.
Каждый из элементов <DistributedSearchSource Id="src"> элемента <SearchSources> представляет собой описание источника данных. Атрибут id может быть произвольным, но должен быть уникальным в рамках документа.
- <FilterBindingServiceUrl> - адрес сервиса загрузки поискового фильтра для данного источника
- <SearchServiceUrl> - адрес поискового сервиса для данного источника
- <ReservationServiceUrl> - адрес сервиса бронирования для данного источника
- <ServiceProviderServiceUrl>
- <CheckQuotesServiceUrl> - адрес сервиса проверки наличия мест
- <ReplcamentSearchItems> - правила подстановки данных из поискового фильтра данного источника в локальный фильтр
- <FlightGroups> - группы тарифов на авиаперелеты
- <PartnerKey> - ключ партнера, являющегося владельцем приложения ПК Мастер-Web, в удаленном источнике
- <InternalPartnerKey> - ключ партнера, являющегося поставщиком цен, в локальном источнике
- <InternalServiceKey> - класс услуги в базе туроператора, являющегося владельцем приложения ПК Мастер-Web, который будет использоваться для сохранения услуг из базы стороннего туроператора (все услуги по путевке, которая забронирована по туру стороннего туроператора, будут сохранены под этим классом услуги)
- <InternalCreator> - ключ пользователя из таблицы UserList туроператора, являющегося владельцем приложения ПК Мастер-Web, который будет прописываться создателем путевок, оформленных по турам стороннего туроператора
- <InternalFilialKey> - ключ филиала (PR_Filial=2) из таблицы tbl_Partners туроператора, являющегося владельцем приложения ПК Мастер-Web, который будет прописываться филиалом для путевок, оформленных по турам стороннего туроператора
- <InternalTourKey> - ключ тура из таблицы tbl_TurList туроператора, являющегося владельцем приложения ПК Мастер-Web, который будет прописываться в поле DG_TRKey у путевок, оформленных по турам стороннего туроператора
- <DefaultCountryKey>
- <DefaultCityKey>
- <ReservationWaitStatus>
- <ReservationOKStatus>
- <AdditionalComissionFixed> - фиксированная наценка к общей стоимости тура от стороннего туроператора
- <AdditionalServiceComission> - фиксированная наценка к стоимости доп.услуг при бронировании туров от стороннего туроператора
- <FilialKey>
- <EMail> - дополнительные e-mail адреса, на которые нужно отправлять письмо о новом бронировании через распределенный поиск; перечисляются через точку с запятой
- <DontSendBookingMail> - настройка, управляющая отправкой письма о новом бронировании агентству. Значения: true – не отправлять письмо агентству; false – отправлять письмо о новом бронировании агентству
Правило подстановки данных из поискового фильтра данного источника в локальный фильтр задается при помощи набора элементов <ReplcamentSubItem>, где
- Type - тип условия подстановки; возможные значения: departFrom, country, city
- LocalValue - ключ сущности в локальной базе (если в локальном источнике отсутствует такой ключ, то LocalValue указывать не нужно)
- RemoteValue - ключ сущности во внешнем источнике
- Name - название сущности (настройка используется при отсутствии сущности в локальном источнике)
Примеры:
- Пример 1. Добавить предложения по Хорватии (в локальном источнике отсутствует, ключ во внешнем источнике - 123) при вылете из Москвы (ключ 30 в локальном источнике и 1 во внешнем источнике)
<ReplcamentSearchItem> <SubItems> <ReplcamentSubItem Type="departFrom" LocalValue="30" RemoteValue="1" /> <ReplcamentSubItem Type="country" LocalValue="0" 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" Name="Греция" /> </SubItems> </ReplcamentSearchItem>
- Пример 3. Включить в предложения по Греции (ключ 520 в локальном источнике и 29 во внешнем источнике) при вылете из Екатеринбурга (ключ 648 в локальном источнике и 266 во внешнем источнике) город Салоники (в локальном источнике отсутствует ; ключ во внешнем источнике - 615)
<ReplcamentSearchItem> <SubItems> <ReplcamentSubItem Type="departFrom" LocalValue="648" RemoteValue="266" /> <ReplcamentSubItem Type="country" LocalValue="520" RemoteValue="29" Name="Греция" /> <ReplcamentSubItem Type="city" RemoteValue="615" Name="Салоники" /> </SubItems> </ReplcamentSearchItem>
Настройка полей данных о туристах
Настройка отображения полей данных о туристах производится в файле 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" />
Настройки отображения полей данных о туристах содержат параметры:
- Code= - зашитая в коде константа, которую нельзя изменять.
- Header= - заголовок поля
- Visible= - видимость поля; значения: True – видимый, Flse – невидимый
- Required= - обязательность заполнения поля; значения: True – обязательное, False – необязательное
- Translit= - транслитерация; значения: True – транслитерировать, False – не транслитерировать
- letterCase= - регистр символов в поле; значения: 1 – первая буква заглавная, 2 – все буквы большие, 3 – все буквы маленькие
- Edit= - редактирование поля; значения: True – редактируемое, False – нередактируемое
Настройки в web.config приложения ПК Мастер-Web
Дополнительные настройки, задаваемые в секции <appSettings/> файла web.config, находящемся в папке с приложением ПК Мастер-Web.
1. Настройка, определяющая страницу, на которую будет попадать пользователь после бронирования тура от стороннего туроператора.
- true – переход осуществляется на страницу «Информация о заказе» (OrderInfo.aspx);
- false или отсутствие настройки – переход осуществляется на страницу ReservationResultPage.aspx
<add name="DSRedirectToResultPage" enabled="true" url="true"/>
Работа в системе
Схема распределенного поиска
Поиск цен
Для поиска цен через распределенный поиск необходимо выбрать город вылета, страну и период дат заездов. Можно наложить дополнительные фильтры на отбор туров по следующим параметрам:
- Типу тура
- Курорту
- Городу
- Названию тура
- Названию отеля (по ссылке с названия отеля пользователь может перейти на страницу с описанием отеля)
- Типу номера
- Стоимости
- Продолжительности
- Классу гостиницы
- Питанию
- Наличию мест в отеле и на рейсе
По нажатию кнопки «Подобрать тур», системой будут отобраны туры, отвечающие заданным условиям.
Информация в результатах поиска представлена в виде таблицы, содержащей следующие поля:
- Дата заезда – дата заезда по туру
- Отель – название отеля (по ссылке с названия отеля пользователь может перейти на страницу с описанием отеля)
- Категория - категория отеля
- Город – город, к которому привязан отель
- Тип номера – тип номера, на который указана цена
- Категория номера – категория номера, на который указана цена
- Размещение – размещение, на которое указана цена
- Питание – тип питания, на которое указана цена
- Ночи – продолжительность тура в ночах
- Цена
- Вал – валюта, в которой указана цена
- Источник цены – название тура
- Цена за – тип рассчитанной цены: за человека или за номер
- Наличие мест – наличие мест в гостинице
- Эконом, Бизнес - наличие мест на авиаперелеты. Колонки и их названия формируются динамически. Их отображение регулируется настройкой в конфигурационном файле web.config
По нажатию на цену пользователь попадает в экран бронирования тура. При переходе в экран бронирования по собственным турам пользователь попадает в экран «Корзина» (Basket.aspx), «Упрощенная корзина» (SimpleBasket.aspx), «Упрощенная корзина 2» (SimpleBasket.aspx) или «Расширенная корзина» (Basket.aspx) в зависимости от настроек в конфигурационном файле web.config и наличия установленных надстроек.
При переходе в экран бронирования по турам стороннего туроператора пользователь попадает в экран «Удаленная корзина» (RemoteBasket.aspx).
Актуальность цен
В экране распределенного поиска отбор данных осуществляется по рассчитанным (записанным в БД) ценам туроператоров. В экране бронирования расчеты ведутся уже по актуальным на данный момент ценам. Т.е. если после расчета прайс-листа цены были изменены, то в экране бронирования стоимость тура покажется уже с учетом этих изменений.
Актуальность наличия мест
В экране распределенного поиска и в экранах бронирования туров наличие мест отображается в соответствии с наличием мест в квоте на момент проверки.
Для собственных туров наличие мест отображается в соответствии с настройками в конфигурационном файле основного приложения ПК Мастер-Web.
Для туров сторонних операторов наличие мест отображается в соответствии с настройками в конфигурационном файле web-сервиса «Сервис проверки наличия мест» (ws-checkquotes).
Корректировка цен стороннего туроператора
Существует возможность корректировки цен при отображении данных от стороннего туроператора. Есть несколько вариантов корректировки цен:
- Добавление фиксированной наценки к общей стоимости тура от стороннего туроператора
- Добавление процентной наценки к общей стоимости тура от стороннего туроператора
- Добавление фиксированной наценки к стоимости услуг определенных классов
- Добавление процентной наценки с стоимости услуг определенных классов
Соответственно корректировка с добавлением наценки к общей стоимости тура применяется и в экране и поиска, и в экране бронирования туров от стороннего туроператора.
А корректировка с добавлением наценки к стоимости доп.услуг применяется только в экране бронирования туров от стороннего туроператора.
Бронирование заявки
Бронирование тура из стороннего источника происходит в экране «Удаленная корзина».
Бронирование доступно только для зарегистрированных и авторизованных в системе пользователей.
Экран «Удаленная корзина» разделен на несколько блоков.
В верхней части экрана отображаются параметры тура:
- Страна
- Название тура
- Даты заезда
- Продолжительность
- Состав заказа
- Наличие мест для отеля и авиаперелета
- Если в туре несколько рейсов, таблица для выбора перелетов.
Подбор перелетов осуществляется по рейсам с актуальным расписанием и ценам. Ниже располагается блок с подробной информацией по выбранному проживанию:
- Название отеля
- Размещение
- Питание
Ниже отображается информация о количестве человек, сумме заказа, с учетом внесенных изменений, а также сумме к оплате, с учетом агентской комиссии.
Далее отображается форма для ввода туристов. Поля, обязательные для ввода определяются настройками ( см. Настройка полей данных о туристах)
Если в туре присутствует несколько рейсов, то экран «Удаленная корзина» позволяет внести необходимые изменения – выбрать другой рейс. Для расчета стоимости тура с учетом изменения рейса, нужно нажать на кнопку «Пересчитать».
Если в туре присутствуют услуги, исключенные при обсчете прайс-листа, то существует возможность добавления этих услуг для конкретных туристов. Для этого необходимо проставить отметки в чек-боксах для нужных услуг. Для расчета стоимости тура с учетом добавленных услуг, нужно нажать на кнопку «Пересчитать».
Для бронирования заявки необходимо нажать кнопку «Забронировать».
По нажатию кнопки «Забронировать», заявка запишется в базу данных стороннего туроператора и туроператора, являющегося владельцем приложения ПК Мастер-Web, и пользователю откроется экран с информацией о сделанном заказе.
Здесь пользователю представлена информация о сделанном заказе:
- Номер заявки в базе стороннего туроператора
- Даты заезда
- Продолжительность
- Название отеля
- Размещение в отеле
- Количество человек по путевке
- Список туристов по услуге отель
- Экскурсионная программа тура
- Дополнительные услуги
- Сумма к оплате
- Полная стоимость заказа
- Номер путевки в базе туроператора, являющегося владельцем приложения ПК Мастер-Web
- Дата оформления заказа
При включенной настройке DSRedirectToResultPage переход осуществляется на стандартную страницу «Информация о заказе» (OrderInfo.aspx).
При бронировании заявки отправляется письмо о новом заказе на адреса:
- Бронирующему агентству (адрес представителя, авторизованного в системе)
- Адреса, указанные в настройке <Email /> в файле templates/distributedSearchSettings.xml
Поиск цен в нескольких источниках
Загрузка фильтров
Существует два варианта загрузки поисковых фильтров:
- Фильтры по своим турам грузятся через прямые запросы к БД, а фильтры по данным сторонних туроператоров грузятся через web-сервис FilterBinding
- Фильтры по всем данным грузятся через web-сервис FilterBinding
В первом случае web-сервис устанавливается только у стороннего туроператора, чьи цены необходимо встроить в приложение туроператора – владельца приложения ПК Мастер-Web.
Во втором случае web-сервис FilterBinding устанавливается и у стороннего туроператора и у туроператора-владельца приложения ПК Мастер-Web.
Экран распределенного поиска
Экран распределенного поиска состоит из блока поисковых фильтров и таблицы с результатами поиска. Блок поисковых фильтров содержит поля:
- Город вылета - названия городов с признаком CT_IsDeparture=1 из таблицы CityDictionary, перегружает все последующие фильтры (для туров от стороннего источника сопоставление городов вылета делается в файле templates/distributedSearchSettings.xml. При этом название города вылета может отображаться либо из базы туроператора, являющегося владельцем приложения ПК Мастер-Web, либо берется значение параметра Name для Type=departFrom из файла templates/distributedSearchSettings.xml)
- Страна - названия стран из таблицы tbl_Country, перегружает все последующие фильтры (для туров от стороннего источника сопоставление стран делается в файле templates/distributedSearchSettings.xml. При этом название страны может отображаться либо из базы туроператора, являющегося владельцем приложения ПК Мастер-Web, либо берется значение параметра Name для Type=country из файла templates/distributedSearchSettings.xml)
- Тип тура - названия типов туров из таблицы TipTur, перегружает все последующие фильтры
- Курорт - названия курортов из таблицы Resorts, перегружает все последующие фильтры
- Город - названия городов из таблицы CityDictionary, перегружает все последующие фильтры
- Тур - названия типов туров из таблицы tbl_TurList, перегружает все последующие фильтры
- Отель - названия отелей из таблицы HotelDictionary, перегружает все последующие фильтры (если поле HD_HTTP заполнено, то в названии отеля формируется ссылка на адрес, указанный в данном поле)
- Даты заезда - даты заезда по турам подсвечиваются в календарях
- Тип номера, либо количество основных и доп.мест - названия типов номеров из таблицы Rooms
- Цена не более указанной величины -
- Ночи - рассчитанные продолжительности по выбранным в предыдущих фильтрах параметрам
- Категория - рассчитанные категории отелей по выбранным в предыдущих фильтрах параметрам
- Питание - рассчитанные типы питания по выбранным в предыдущих фильтрах параметрам
- Наличие мест в отеле и на рейсе - наличие мест "Есть", "Запрос" и "Нет"
Таблица с результатами поиска содержит поля:
- Дата заезда
- Отель
- Категория - категория отеля
- Город – город, к которому привязан отель
- Тип номера – тип номера, на который указана цена
- Категория номера – категория номера, на который указана цена
- Размещение – размещение, на которое указана цена
- Питание – тип питания, на которое указана цена
- Ночи – продолжительность тура в ночах
- Цена
- Вал – валюта, в которой указана цена
- Источник цены – название тура
- Цена за – тип рассчитанной цены: за человека или за номер
- Наличие мест – наличие мест в гостинице
- Эконом, Бизнес
Все поля являются текстовыми и нередактируемыми.
*Если поле HD_HTTP в таблице HotelDictionary заполнено, то в названии отеля в поле «Отель» формируется ссылка на адрес, указанный в данном поле. *Если поле TL_WEBHTTP в таблице tbl_TurList заполнено, то в названии тура в поле «Источник цены» формируется ссылка на адрес, указанный в данном поле.
По умолчанию данные в результатах поиска отсортированы по полю «Цена» по возрастанию.
Корректировка цен стороннего туроператора
Необходимо добавить настройки для корректировки цен стороннего туроператора:
- Настройка для добавления фиксированной наценки к общей стоимости тура от стороннего туроператора
- Настройка для добавления процентной наценки к общей стоимости тура от стороннего туроператора
- Настройка для добавления фиксированной наценки к стоимости доп. услуг определенных классов
- Настройка для добавления процентной наценки с стоимости доп. услуг определенных классов