Мастер-Тур(15):Программа туров. Внешние системы. Samo Inc

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

Версия статьи от 4-07-2025.

Поддерживаемые версии ПК «Мастер-Тур»:
Начиная с 15 версии
Доступна с релиза 15.9


Введение

Адаптер (шлюз) Мастер-Тур – Samo Incoming предназначен для обеспечения поиска и бронирования отелей от сервиса Samo Incoming в интерфейсе онлайн бронирования Мастер-Тур в реальном режиме времени. Т.е., в момент поиска и подбора туров Мастер-Тур будет запрашивать цены на отели у Samo Incoming и рассчитывать конечную стоимость тура с учетом полученных от Samo Incoming цен и общих правил туроператора по формированию стоимости туров (наценки, доплаты). Доступно сквозное бронирование отеля в Samo Incoming при бронировании тура в Мастер-Тур.
Также бронь может передаваться позже на этапе обработки путевки менеджером туроператора, через модуль отправки броней МИС.

Работа в экране «Внешние системы»

Страница Внешние системы (http://ip-адрес сервера/TourPrograms/ExternalSystems) представлена двумя вкладками:

  • Внешние поставщики – раздел, где происходит создание и редактирование пользователей системы;
  • Синхронизация – раздел, где осуществляется работа по сопоставлению данных из внешней системы.

Внешние поставщики

На вкладке Внешние поставщики представлен список поставщиков. Для каждого поставщика указан:

  • Название (Задаётся при создании)
  • Адаптер
  • Адрес API
  • Срок действия лицензии
Внешние поставщики

Создание и редактирование адаптера

Любого поставщика можно отредактировать, выбрав по названию. Также можно добавить нового, нажав кнопку Добавить.

Pb 164 .png

Список полей для заполнения ( * – обязательное):

  • Адаптер * – значение SamoInc (отели) выбирается из списка;
  • Название * – название поставщика;
  • API адрес * – предоставляемый Samo Incoming адрес службы поиска внешней системы;
  • Логин * – логин для подключения;
  • Пароль * – пароль для подключения;
  • Адрес SQL сервера * – адрес сервера, на котором располагается или будет располагаться база данных для загрузки справочников;
  • Логин SQL сервера * – логин к серверу, на котором располагается или будет располагаться база данных для загрузки справочников;
  • Пароль SQL сервера * – пароль к серверу, на котором располагается или будет располагаться база данных для загрузки справочников;
  • База данных для загрузки справочников * – промежуточная база данных для загрузки справочников из внешней системы, отличная от основной. Если у клиента не заведена отдельная база данных для загрузки справочников, то достаточно указать в данном поле подходящее название, система сама создаст новую промежуточную базу данных. Из внешней системы в промежуточную базу загружаются следующие справочники: страны, города, курорты, отели. Остальные справочники берутся напрямую из внешней системы.
  • Путь к файлам базы данных на жестком диске – указывается (сетевой) путь к папке, в которой будет создана промежуточная база данных. Данная папка должна быть доступна по этому пути пользователям, от которых работают программы: TourPrograms. Также должны быть права на запись в нее
  • Время кэширования результатов поиска отелей в минутах * – если не заполнено, то по умолчанию будет обрабатываться системой как 30-ти минутное кеширование результатов
  • Максимальное количество запросов поставщику – настройка, регулирующая количество запросов отправляемых к внешнему поставщику службой поиска. То есть если выбрано 5 городов тура, 5 дат, 5 продолжительностей, а настройка указана в значении 10, то при запросе из службы поиска к внешнему поставщику будут отправлены не 125, а только 10 запросов.
Полезная информация


Настройки применяются без перезагрузки службы поиска 

  • Разрешить сквозное бронирование для туристов – при включенной настройке при бронировании путевки частным лицом сразу осуществляется бронирование во внешней системе. При выключенной настройке при бронировании путевки частным лицом будет создана путевка только в ПК Мастер-Тур, при входе в путевку будет выведено предупреждение, что заявка создана без брони в системе внешнего поставщика. По умолчанию настройка включена.
    • Разрешить, если отмена без штрафов возможна в течение N дней с момента бронирования – количество дней можно задавать только при включенной настройке Разрешить сквозное бронирование для туристов. При выполнении условия при бронировании путевки частным лицом сразу осуществляется бронирование во внешней системе. При невыполнении условия при бронировании путевки частным лицом будет создана путевка только в ПК Мастер-Тур, при входе в путевку будет выведено предупреждение, что заявка создана без брони в системе внешнего поставщика.
  • Разрешить сквозное бронирование для агентов – при включенной настройке при бронировании путевки агентом сразу осуществляется бронирование во внешней системе. При выключенной настройке при бронировании путевки агентом будет создана путевка только в ПК Мастер-Тур, при входе в путевку будет выведено предупреждение, что заявка создана без брони в системе внешнего поставщика. По умолчанию настройка включена.
    • Разрешить, если отмена без штрафов возможна в течение N дней с момента бронирования – количество дней можно задавать только при включенной настройке Разрешить сквозное бронирование для агентов. При выполнении условия при бронировании путевки агентом сразу осуществляется бронирование во внешней системе. При невыполнении условия при бронировании путевки агентом будет создана путевка только в ПК Мастер-Тур, при входе в путевку будет выведено предупреждение, что заявка создана без брони в системе внешнего поставщика.
  • Дополнительные условия: при невыполнении условия отмены без штрафов, для бронирования достаточно выполнение одного из дополнительных условий ниже. При выполнении условия отмены без штрафов, дополнительные условия игнорируются.
    • Разрешить, если у агента установлен признак – признак задается в справочнике партнера. При наличии данного признака у агента при бронировании путевки сразу осуществляется бронирование во внешней системе. При отсутствии данного признака у агента при бронировании путевки будет создана путевка только в ПК Мастер-Тур, при входе в путевку будет выведено предупреждение, что заявка создана без брони в системе внешнего поставщика.
    • Разрешить при наличии остатка депозита у агента не менее N% от стоимости услуги, бронируемой во внешней системе – если используется данная настройка, то у агента должен быть заведен депозит. При выполнении условия при бронировании путевки агентом сразу осуществляется бронирование во внешней системе. При невыполнении условия при бронировании путевки агентом будет создана путевка только в ПК Мастер-Тур, при входе в путевку будет выведено предупреждение, что заявка создана без брони в системе внешнего поставщика.

Подключение к API адресу Samo Incoming можно проверить по нажатию на кнопку Проверить подключение. Система производит пробное подключение к API и проверяет его доступность.

При сохранении внешнего поставщика Samo Incoming в БД автоматически создается ценовой пакет и поставщик с названием, 
которое было введено при создании поставщика, в скобках указывается "внешняя система". Это необходимо для того, 
чтобы  была возможность внести стоимость услуги, по которой будет работать поиск (при условии, что разрешается
только бронирование услуги из внешней системы).

Получение и внесение данных от внешней системы

Внешняя система Samo Incoming предоставляет данные в следующем виде:

Синхронизация

Синхронизация служит для сопоставления справочных данных из Samo Incoming со справочными данными, указанными в ПК Мастер-Тур. Для того, чтобы начать работу, нужно выбрать необходимые данные:

  • В списке Поставщик выбираем интересующего поставщика (в списке отображаются названия поставщиков, созданные на вкладке Внешние поставщики);
  • В списке Справочник выбираем необходимый справочник.

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

Синхронизация

Слева отображаются справочные данные Samo Incoming. Справа отображаются справочные данные из ПК Мастер-Тур.
Данные, которые сопоставлены - подсвечены черным цветом. Не сопоставленные данные подсвечены красным цветом. Существует возможность фильтрации справочных данных по статусу ("Сопоставлен" или "Не сопоставлен") и поиска по названию.
В блоке Сопоставленные данные отображаются сопоставленные данные по выбранным элементам в левой или/и правой частях. Отображаемые данные сортируются по алфавиту. Данные можно сопоставлять и удалять сопоставление:

  • Если нужно удалить сопоставление, можно воспользоваться кнопкой Удалить после нажатия данные станут не сопоставленными и подсвечены красным цветом. Если есть связанные сопоставления с удаляемой записью (к примеру, Страна->Город), то связанные сопоставления также будут удалены;
  • Если нужно данные сопоставить, то есть два варианта:
    • Точечное сопоставление – т.е. нужно выбрать не сопоставленное значение (подсвеченное красным цветом) в левой части и аналогичное ему значение в правой части (или то значение, которое должно быть сопоставлено). После того как значения выбраны, станет активной кнопка Сопоставить. Нажимаем кнопку, данные станут сопоставленными и подсвечены черным цветом;
    • Автоматическое сопоставление (* – обязательное) - при нажатии кнопки Автоматическое сопоставление запускается процесс автоматического сопоставления справочников. Для Samo Incoming сопоставляются только следующие справочники:
      • Страны (по названию) * – обязательное сопоставление;
      • Города (по названию и стране) * – обязательное сопоставление. Данные из ВС загружаются только при условии предварительного сопоставления страны и выбора ее в дополнительном фильтре (фильтр появляется и заполняется ранее сопоставленными странами после выбора справочника Города);
      • Отели (по названию и городу) * – обязательное сопоставление;
      • Типы номеров (по коду) – обязательное сопоставление;
      • Категории номеров (по коду) – необязательное сопоставление;
      • Типы питания (по коду) – необязательное сопоставление;
      • Валюты (по коду) * – обязательное сопоставление;
      • Статусы услуг (по коду) * – обязательное сопоставление.

Если ранее данные от поставщика получали через MIS Samo Incoming, то существует возможность перенести маппинги из MIS в ДП адаптер Samo Incoming, для этого необходимо выполнить отдельный скрипт.

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


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

Сначала прогоняем первый технический скрипт целиком, не изменяя в нем данные.

1_ConvertTableIdToGDSDictionaryId.sql
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ConvertTableIdToGDSDictionaryId]') AND type IN ( N'FN', N'IF', N'TF', N'FS', N'FT' ))
  DROP FUNCTION [dbo].[ConvertTableIdToGDSDictionaryId]
GO

CREATE FUNCTION [dbo].[ConvertTableIdToGDSDictionaryId](@dictionaryId int)
RETURNS INT
AS
BEGIN
    RETURN CASE @dictionaryId  
         WHEN 9  THEN 1  -- countries
         WHEN 7  THEN 2  -- cities
         WHEN 4  THEN 4  -- airlines
         WHEN 5  THEN 5  -- airports
         WHEN 3  THEN 6  -- aircrafts
         WHEN 22 THEN 7  -- airServices
         WHEN 19 THEN 8  -- rates
         WHEN 25 THEN 10 -- resorts
         WHEN 67 THEN 11 -- categories of hotels
         WHEN 18 THEN 12 -- pansions
         WHEN 15 THEN 13 -- room categories
         WHEN 16 THEN 14 -- rooms
         WHEN 12 THEN 15 -- hotels
         WHEN 14 THEN 18 -- accomodations
         WHEN 13 THEN 19 -- hotel rooms
         ELSE 0
    END
END
GO

GRANT EXEC ON [dbo].[ConvertTableIdToGDSDictionaryId] TO PUBLIC
GO


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

2_Перенос маппингов из МИС в МТ15.sqls1
-- скрипт для переноса маппингов из миса в мт15

declare @importIdentificator varchar(100)
declare @remoteProviderKey int
declare @dictionaries as table (did int)


-- нужно заполнить след параметры:
-- GUID направления из миса (колонка ExportIdentity из табл Settings базы адаптера миса)
set @importIdentificator = '4e849323-4bc7-4762-8c36-b6223ecbeb83'
-- Id внешнего поставщика МТ15 (колонка RP_ID из табл RemoteProviders МТ15)
set @remoteProviderKey = 2696


-- раскомментируйте нужный справочник для переноса
insert into @dictionaries values (9)        -- Countries
insert into @dictionaries values (7)        -- Cities
insert into @dictionaries values (12)       -- Hotels
--insert into @dictionaries values (15)       -- RoomCategories
--insert into @dictionaries values (16)       -- RoomTypes
--insert into @dictionaries values (14)       -- Accomodations
--insert into @dictionaries values (18)       -- Pansions
--insert into @dictionaries values (19)       -- Rates
--insert into @dictionaries values (8)        -- Flights
--insert into @dictionaries values (22)       -- AirServices
--insert into @dictionaries values (24)       -- Transports
--insert into @dictionaries values (104)      -- BusTransfers
--insert into @dictionaries values (111)      -- RailwayTransfers




-- основной запрос

MERGE [GDSMappings] AS TARGET
USING (SELECT dbo.ConvertTableIdToGDSDictionaryId([MP_TableId]), [MP_StrValue], [MP_IntKey]
	   FROM [Mappings]
	   WHERE [MP_ImportIdentificator] = @importIdentificator AND [MP_TableId] IN (SELECT did FROM @dictionaries))
AS SOURCE ([MP_TableId], [MP_StrValue], [MP_IntKey])
ON (SOURCE.[MP_TableId]             = TARGET.[GM_DictionaryId] AND
    SOURCE.[MP_StrValue]            = TARGET.[GM_ProviderDictionaryItemId] AND
    SOURCE.[MP_IntKey]              = TARGET.[GM_MTDictionaryItemId] AND
	TARGET.[GM_RPID]                = @remoteProviderKey)
WHEN NOT MATCHED BY TARGET
    THEN INSERT (  [GM_DictionaryId], [GM_MTDictionaryItemId], [GM_ProviderDictionaryItemId],          [GM_RPID], [GM_CreateDate])
         VALUES (SOURCE.[MP_TableId],      SOURCE.[MP_IntKey],          SOURCE.[MP_StrValue], @remoteProviderKey,       GETDATE())
;


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

После того, как создан внешний поставщик и данные из Samo Incoming синхронизированы с данными ПК "Мастер-Тур", нужно создать тур, в который будут добавлены услуги от внешнего поставщика. Рассмотрим на примере создания тура, в котором содержится услуга - Отель/круиз.

Создание услуги проживания и нового тура

Создаем услугу Отель/Круиз от внешнего поставщика:

  • Во вкладке Внешние поставщики создаем внешнего поставщика, например SamoInc и у нас автоматически создается ценовой пакет, который называется SamoInc(внешняя система), поэтому в экране Выбор ценового пакета нужно выбрать именно этот ценовой пакет (т.е. услугу, подбираемую у внешнего поставщика, обязательно нужно заводить в ценовом пакете, созданном при создании внешнего поставщика).
  • Выбираем поставщика – выбираем именного внешнего поставщика с названием, которое указали при создании. Он так же появляется в справочнике База данных партнеры автоматически, при создании внешнего поставщика во вкладке Внешние поставщики. В нашем случае это поставщик SamoInc(внешняя система).
  • Затем выбираем тип услуги Отель/Круиз. Страну и город проживания выбираем те, которые нас интересуют для подбора отеля. Для нашего примера выберем страну Израиль.
  • При необходимости у пользователя есть возможности занести собственные цены на отели из внешней системы в экране Цены на отели ПК "Мастер-Тур".

Добавление услуги проживания от внешнего поставщика


Тур с отелем от внешнего поставщика


Поиск тура с отелями из внешней системы



  • В поиске подбирается тур, в котором услуга Отель\Круиз будет подбираться от внешнего поставщика (т.е. в подобранном проживании страна и город будут соответствовать стране и городу проживания, заведенным в услуге Отель/Круиз от внешнего поставщика. Все остальные параметры услуги могут отличаться). При поиске отелей по филиалам, следует искать по городу филиала (которые предварительно был сопоставлен).
Пример тура в поиске


  • При нажатии на цену, пользователь переходит в экран "Корзина", где может оформить бронирование тура с отелем из внешней системы Samo Incoming.
Бронирование путевки


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

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

  • После бронирования пользователь переходит в экран Информация о заказе, где может увидеть всю информацию по своей путевке.
  • В историю по путевке, примечания и в сообщения по путевке записывается информация о выбранном в путевке тарифе
Для отправки изменений и возможности аннулировать путевку рекомендуется установить Megatec Integration Service

Настройка логирования

Для получения данных о работе адаптера внешнего поставщика используется логирование, настройки которого осуществляются в файле Megatec.TourSearchOwin.exe.config папки TourSearchOwin. Путь к папке лог-файлов прописывается в секции Loggers path. Включение логирования осуществляется в секции Logger level. Возможные значения: ALL или OFF.

Название Описание Настройка
1 Логирование Разные настройки логирования отвечают за получение разной информации:
  • HotelFromRemoteProviderMappingsLogger - включает получение информации о результатах и ошибках синхронизации
  • HotelFromRemoteProviderMappingsAddLogger – включает получение информации о создании справочных данных и их синхронизации при бронировании
  • HotelFromRemoteProviderErrorLogger - включает получение информации об ошибках, возникающих при работе с внешним поставщиком
  • HotelsRemoteProviderRequestResponseLogger - включает получение информации об актуализации данных и бронировании туров
  • SearchHotelsRemoteProviderRequestResponseLogger - включает получение информации о поисковых запросах туров
  <Loggers path="Logs\">
    <Logger level="ALL" name="HotelFromRemoteProviderMappingsLogger"/>
    <Logger level="ALL" name="HotelFromRemoteProviderMappingsAddLogger"/>
    <Logger level="ALL" name="HotelFromRemoteProviderErrorLogger"/>
    <Logger level="ALL" name="HotelsRemoteProviderRequestResponseLogger"/>
    <Logger level="ALL" name="SearchHotelsRemoteProviderRequestResponseLogger"/>
  </Loggers>

Так же настройки логирования можно задать в файле Web.config папки TourPrograms. Путь к папке лог-файлов прописывается в секции Loggers path. Включение логирования осуществляется в секции Logger level. Возможные значения: ALL или OFF.

Название Описание Настройка
2 Логирование Разные настройки логирования отвечают за получение разной информации:
  • HotelFromRemoteProviderMappingsLogger - включает получение информации о результатах и ошибках синхронизации, получение информации по закачке тарифов
  • HotelFromRemoteProviderMappingsAddLogger – включает получение информации о создании справочных данных и их синхронизации при бронировании
  • HotelFromRemoteProviderErrorLogger - включает получение информации об ошибках, возникающих при работе с внешним поставщиком
  • HotelsRemoteProviderRequestResponseLogger - включает получение информации об актуализации данных и бронировании туров
  <Loggers path="Logs\">
    <Logger level="ALL" name="HotelFromRemoteProviderMappingsLogger"/>
    <Logger level="ALL" name="HotelFromRemoteProviderMappingsAddLogger"/>
    <Logger level="ALL" name="HotelFromRemoteProviderErrorLogger"/>
    <Logger level="ALL" name="HotelsRemoteProviderRequestResponseLogger"/>
     </Loggers>