Техническая документация Shelter

 

Channel Manager (GDS)

Настройка интерфейса связи с Wubook

 

 

 

 

 

 

 

 

ShelterWubookServer

 

 

ВНИМАНИЕ!!! Примерно с 01.09.19 произошли изменения протокола со стороны WuBook. Максимальное количество методов отправленных в Wubook может быть 464 за 60 мин. Поэтому если столькнулись с ошибкой "More than 464 (547+) calls in the last 3600 seconds for property...." в shelter.ini, откуда стартуют службы, добавляете в секцию Wubook:

 

[Wubook]

Action_Days=50

_MaxCalls=450
update_rooms_values_MaxCalls=200
update_rooms_values_TimeWindow=3600
update_rooms_values_TimeSleep=18
update_plan_periods_MaxCalls=200
update_plan_periods_TimeWindow=3600
update_plan_periods_TimeSleep=18
fetch_new_bookings_MaxCalls=200
fetch_new_bookings_TimeWindow=3600
fetch_new_bookings_TimeSleep=18

 

 

 

ВНИМАНИЕ!!! С 15.05.2018 произошли изменения протокола со стороны WuBook.

Необходимо изменить Service URL в "Сервисы и оборудования"

с https://wubook.net/xrws на https://wired.wubook.net/xrws/ 

 

ВНИМАНИЕ!!! С 04.06.2018 произошли изменения протокола со стороны WuBook.

Необходимо изменить SSL Method в "Сервисы и оборудования" на sslvTLSv1_2, скопировать в папку, откуда стартует служба ShelterWubookServer 2 библиотеки из этой задачи  http://tracker.ucs.ru/issues/142326 и перезапустить службы.
ВНИМАНИЕ!!! В версии 2.12.126.2650 Реализована поддержка работы с Channel Manager для 2х отелей с разными договорами в одной базе данных. Для настройки данной схемы работы, необходимо в договорной работе выбрать соответствующую гостиницу для каждого договора :

 

ВНИМАНИЕ!!! На актуальных версиях Shelter наблюдается проблема с ростом занимаемой памяти shelter.exe для службы ShelterOnlineServer. В логах можно увидеть ошибку "AccessViolation". Служба продолжает работу, однако запросы и команды от ShelterTravellineServer/ShelterWuBookServer не принимает и не обрабатывает. Необходимо воспользоваться автоматическим перезапуском служб с помощью *.bat - файла. Пример *.bat-файл для перезапуска ShelterOnlineServer :
 

@Echo Off
Set ServiceName=ShelterOnlineServer
Net stop %ServiceName%>nul
Ping -n 4 127.0.0.1>nul
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
exit

Пример *.bat-файл для перезапуска ShelterWuBookServer :
 

@Echo Off
Set ServiceName=ShelterWuBookServer
Net stop %ServiceName%>nul
Ping -n 4 127.0.0.1>nul
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
exit

Необходимо добавить эти 2 *.bat файла в планировщик заданий и создать задание для поочередного перезапуска служб 1/2/3 раза в сутки :
1. ShelterOnlineServer
2. ShelterTravellineServer/ShelterWuBookServer

ВНИМАНИЕ!!! Время заезда и выезда в WuBook и Shelter должны совпадать!

ВАЖНО!!! В категориях, заведенных в WuBook, поле "Имя" - обязательно необходимо заполнять!

 

Описание настройки модуля ShelterWuBookServer

 

                                Служба ShelterWuBookServer является посредником между системой бронирования Channel Manager WuBook и программным продуктом Shelter 2. 

                                Передача данных между WuBook и службой ShelterWuBookServer осуществляется в реальном времени в формате XML.

                                Изображение структурной схемы работы (рис. 1):

 

 

                                Отправка данных осуществляется методом POST на адрес: https://wubook.net:443/xrws

                                Положительный результат: Result: 200 HTTP/1.1 200 OK

 

 

                                Необходимо заключить договор с Wubook. Специалисты Wubook должны прислать параметры входа в личный кабинет, а именно:

 

                                Логин от личного кабинета;

                                Пароль от личного кабинета;

                                Код отеля (lcode);

 

                                Код отеля можно увидеть самостоятельно, через ЛК Wubook.

                                Необходимо зайти в личный кабинет Wubook, перейти во вкладку

                                «Модуль бронирования» - далее «Установка на сайт» :

 

Настройками тарифов/категорий номеров и пр. в лк Wubook сотрудники компании UCS не занимаются.

                                В связке используется модуль Shelter Online. При наличии Firewall, он должен быть настроен таким образом, чтобы отправлялись и

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

                                модуль связи с ChannelManager (Wubook/Travelline).

 

                                Настройки интеграции необходимо производить через «Сервисы и оборудование»(Настройки - Сервисы и оборудование)  - рис.1 :

(рис.1)

 

                             

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

1. Установить cлужбу Online Server; (мануал по корректной настройке можете посмотреть ТУТ)

  • Создать ярлык для shelter.exe, в свойствах ярлыка, в поле «Объект» добавить следующий ключ:

                   -online_server -install

                                2. Установить службу для интеграции с Wubook (UCS Shelter WuBook Server) :

                                     а) Создать директорию в корне Shelter (../WuBook/) и скопировать необходимые файлы :

                                         shelter.exe

                                         shelter.dll

                                         gds32.dll

                                         bass.dll

                                         borlndmm.dll

                                         libeay32.dll

                                         ssleay32.dll

                                         shelter.ini

                                     б) Создать ярлык для shelter.exe , в свойствах ярылка, в поле «Объект»добавить следующий ключ :

                                         -wubook_server -install

                                     в) Далее необходимо запустить ярлык от имени администратора. Должно появиться сообщение о успешной установке службы.

                                3. Зайти в Shelter - Настройки - «Сервисы и оборудование» (рис. 1)

                                    И добавить модуль Wubook согласно (рис. 2)

 

                                                                                                                                  (рис. 2)

                                                                                                                                       (рис. 3)

 

                                Настройки, изображенные на рис. 3, без необходимости не менять, параметр «Имя компьютера» заполнится автоматически

                                в соответствии с именем ПК.

                                4. Зайти в настройки модуля и настроить по аналогии с рис. 4.

 

 

(рис. 4)

(табл. 1)

 

Новая реализация с версии 2.12.127.2750!!!

 

Доп. услуги включены в стоимость

 

 

Данная настройка необходима исключительно, если в Wubook выгружается тариф у которого есть пакеты услуг, которые НЕ включены в тариф:

   1. Чек-бокс активен - цена по тарифу выгружается с учетом доп. услуг и при сохранении брони доп. услуги входят в стоимость по брони.

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

 

 

 

 

5. После завершения настроек в табл. 1 необходимо нажать кнопку «Сохранить».

6. Зайти в «Настройки» - «Справочники» - «Гостиницы» - «Гостиницы» и ввести Код гостиницы в поле «Код в системе WuBook» (рис. 5)

 

 

(рис. 5)

 

Внимание!!! Если в личном кабинете WuBook уже заведены категории номеров и тарифы, то их необходимо сопоставить с

категориями и тарифами в Shelter :

 

7. В личном кабинете WuBook открыть вкладку «Тарифы» - «Категории», скопировать код категории (SNGL):

 

 

(рис. 6)

 

 Добавить этот код в Shelter : Открыть «Справочники» - «Ресурсы» - «Типы ресурсов», выбрать соответствующую категорию, во вкладке «WuBook»,

                                в поле «Идентификатор» добавить скопированный ранее код : 

 

(рис. 7)

 

Внимание!!! WuBook с дополнительными местами не работает, необходимо учитывать это при настройке интеграции.

 

8. Для сопоставления тарифов необходимо, в личном кабинете WuBook, перейти во вкладку «Тарифы» - «Тарифы»,

                                нажать на «Информация» для необходимого тарифа :

 

(рис. 8)

Внимание!!! Тип, для созданного ранее тарифа в WuBook, должен быть «С периодами»

 

 

 В открывшемся окне необходимо скопировать цифровой ID тарифа из адресной строки (в данном случае 87321) :

 

(рис. 9)

Добавить этот ID тарифа в Shelter : Открыть «Справочники» - «Тарифы» - «Типы тарифов», выбрать соответствующий тариф,

                                во вкладке «Внешние системы», в поле «Использовать тариф для системы WuBook.net» прописать ранее скопированный код :

 

(рис. 10)

 

                               

8. Перейти в модуль договорная работа : 

                                «Бронирование» - «Договоры» - «Добавить юридическое лицо» - Указать краткое и полное наименование организации (WuBook),

                                а так же указать WuBook/Travelline/ResOnline (рис. 11) во вкладке «Интернет бронирование» - «Внешние системы» :

(рис. 11)

 

                                9. Перейти во вкладку «Договоры» (договор ST должен создаться автоматически, если он не создался — необходимо создать его вручную)

                                Заполнить обязательные поля (Организация-собственник, Тип и пр.) Установить чек-боксы «Используется по умолчанию при бронировании»

                                и «Используется по умолчанию для Нота Бена» :

(рис. 12)

 

                                10. Перейти во вкладку «Тарифы» и поставить чек-боксы «Активен» и «Использовать онлайн» для соответствующего тарифа,

                                а так же поставить чек-бокс «Не объединять с гостиничным тарифом» (это необходимо для того, чтобы стоимость по тарифу,

                                если она отличается от стоимости в Shelter, могла корректно сохраниться для определенной категории).

(рис. 13)

                                11. Для сохранение оплаченных броней, необходимо добавить тип оплаты в «Справочники» - «Услуги» - «Оплаты».

                                Установить чек-бокс «Использовать для WuBook/Travelline» (рис. 14) и настроить оставшиеся обязательные поля по аналогии :

(рис. 14)

 

                                12. Перейти в настройки системы : «Внешние системы»- «Схема работы» - выбрать необходимую схему работы (рис. 12) :

(рис. 15)

 

 

13. Текущая настройка необходима для версий Shelter 2.12.127.2750 и выше!!! 

Исправлен механизм сохранения платежей для WubookServer. 

Необходимо, в настройках киоска настроить «Возможные типы оплат» - устанавливаем чек-бокс на ранее заведенной оплате для Wubook:

 

 

(рис. 16)

 

 

Так же нужно настроить поле  «Список доступных пользователей» - устанавливаем чек-бокс на пользователе *WUBOOK*:

 

(рис. 17)

 

 

 

Разделение по каналам продаж

 

Для каждого канала продаж необходимо создать организацию, переходим «Бронирование» - «Договоры» - «Добавить юридическое лицо».  (рис. 18)

 

(рис. 18)

 

Указываем краткое и полное наименование организации (Booking.com), ниже во вкладке «Интернет бронирование» «Внешние системы» указываем

канал продаж «Booking.com». (рис. 19)

 

(рис. 19)

 

Далее во вкладке «Договоры» настраиваем по аналогии с основной организацией Wubook. 

 

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

из выше приведенного примера.

 

 

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

 

Для корректной настройки квот необходимо воспользоваться инструкцией Квоты.doc

 

                                Выбрать схему работы с квотами :

 

(рис. 20)

 

 

Статус брони (Новая реализация)

 

ВНИМАНИЕ!!! Данный функционал доступен только с версии 2.12.125.2480 или новее

 

 

Теперь в настройках Wubook можно установить необходимый статус для приходящих броней. Заходим в Shelter – «Настройки» – «Сервисы и оборудование» 

и открыть настройки Wubook. В них можно увидеть поле «Статус брони» в котором нужно указать необходимый статус для приходящих броней (рис. 21).

 

(Рис. 21)

 

Описание статуса броней:

  • ​Гарантированная, если подтверждена - у оплаченных броней статус «Гарантированная», а у не оплаченных «Лист ожидания».
  • Всегда лист ожидания - у оплаченных и не оплаченных броней всегда статус «Лист ожидания».
  • Всегда гарантированная - оплаченные и не оплаченные брони имеют статус «Гарантированная».

 

 

 

 

 

Важно!!! Не забывайте удалять файл onlineserver.xml при обновлении Shelter. После запуска службы ShelterOnline он создастся заново,

актуальной версии.Если клиент использует только Wubook, а интернет-бронирование нет (это разные модули в ключе защиты,

несмотря на то что тут ShelterOnline тоже используется!), необходимо в файле onlineserver.xml все значения autostart="1" заменить на autostart ="0"

и в shelter.ini в секции [onlineserver] выставить gds=BOOKING. Отследить необходимость данного действия можно по логу онлайн сервера.

В нем будет ошибка Device licence error. Если в ключе точно прописан проект 3, модуль 10, а проект 3, модуль 5 отсутствует - действуйте как указано выше.

 

 

 

Две гостиницы в одной базе данных

 

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

  • Установить службы OnlineServer и WubookServer в разные папки для каждой гостинцы свои. Например:

           1. Гостиница Новая - OnlineServerNovaya и WubookServerNovaya

           2. Гостиница Старая - OnlineServerStaraya и WubookServerStaraya 

 

Более подробно как создавать службы с нестадартным наименованием можно посмотреть тут

 

 

  • В Shelter.ini, откуда запускаются службы необходимо настроить работу OnlineServer на разных портах. Для этого:

​1. В Shelter.ini находим секцию [OnlineServer], там есть параметр «tcpport»

2. Для OnlineServerNovaya указываем «tcpport = 7779», для OnlineServerStaraya указываем «tcpport = 7778»

(Можно другие порты. Главное, чтобы их не занимали другие программы)

 

  • В сервисах и оборудовании необходимо будет добавить два драйвера «Wubook», для каждой гостиницы свой.
  • Так же главное исправить поле «Имя службы» на соответствующее вашим созданным службам:

 

 

 

Выглядеть будет так:

 

 

  • Ранее мы для каждой службы OnlineServer указывали свой порт, на котором она будет работать. Помимо настроек в Shelter.ini нам нужно еще указать порт, который будет прослушивать определенная служба TravellineServer. Для этого:

​1. Так как ранее для OnlineServerNovaya в Shelter.ini мы указали порт «7779», то в Shelter в настройках драйвера Travelline указываем «Порт ShelterOnlineServer - 7779»

 

2. Тоже самое делаем для OnlineServerStaraya, но уже указываем порт «7778», который мы указали в Shelter.ini для этой службы

 

 

Сохранение переброни в лист ожидания (Новая реализация)

 

Реализация доступна в версии 2.12.131.3200

 

В параметрах ChannelManager добавлена настройка "Сохранять переброни в лист ожидания", по умолчанию настройка выключена.

  • Чек-бокс активен - брони сохраняются вниз шахматки в лист ожидания, даже если свободных номеров нету.
  • Чек-бокс не активен - если свободных номеров нету, брони не сохраняются

 

 

 

 

 

Скидки (новая реализация)

Реализация доступна в версии 2.12.132.3200

 

Реализовано корректное сохранение брони из WuBook, в которой есть скидка.

 

Необходимо сопоставить ID скидки WuBook и скидку в Shelter (поле "Идентификатор в системе WuBook").

 

ВНИМАНИЕ : реализована поддержка только процентной скидки WuBook, в Shelter скидка должна быть настроена на все услуги,

процент скидки WuBook и Shelter должен совпадать!

 

 

 

Работа с Lite версией

 

Модуль Travelline поддерживает работу с Shelter Lite, настраивается аналогично. Исключением по настройке интеграции является только заведение

организации Travelline.

1.  Чтобы завести/отредактировать организации нужно создать любую бронь на шахматке (Рис. 22):

 

(Рис. 22)

 

 

2. В открывшейся карточке, в секции «Организации» нажать на <...> (Рис. 23):

 

 

(Рис. 23)

 

 

3. Откроется окно со списком заведенных организаций, в котором можно их добавлять/изменять. Необходимо нажать «Добавить» (Рис. 24):

 

 

(Рис. 24)

 

 

4. Открывается окно в котором необходимо заполнить тип клиента, краткое и полное наименование, тип организации и канал продаж.

Заполняем как на примере (Рис. 25):

 

(Рис. 25)

 

 

 

Краткое, полное наименование и тип организации можете указать по вашему усмотрению. 

 

После выше описанных действий организация Travelline успешно настроена.

 

                           

 

 

                                Если клиент жалуется что на какую-либо дату выгружается неправильная цена, или вообще не выгружается

                                Первое правило в данном случае - зайти в формирование тарифов, и в калькуляторе тарифов убедиться, что на заявленную дату в рамках тарифа, 

                                используемого для интернет бронирования формируется верная цена. Если в калькуляторе цена не верна, значит это ошибка настройки тарифа,

                                а не выгрузки в TL. Если цены выгружаются до какой-то даты, а дальше нет, то возможно в модуле настроек стоит дата обновлять до этого числа.

 

 

 

                                Внимание!!! Если в личном кабинете WuBook уже заведены категории номеров и тарифы,

                         то их необходимо сопоставить с категориями и тарифами в Shelter :

                                1. В личном кабинете WuBook открыть вкладку «Тарифы» - «Категории», скопировать код категории (SNGL):

(рис. 26)

 

 

                                Добавить этот код в Shelter : Открыть «Справочники» - «Ресурсы» - «Типы ресурсов», выбрать соответствующую категорию, во вкладке «WuBook»,

                                в поле «Идентификатор» добавить скопированный ранее код : 

(рис. 27)

Внимание!!! WuBook с дополнительными местами не работает, необходимо учитывать это при настройке интеграции.

 

                                2. Для сопоставления тарифов необходимо, в личном кабинете WuBook, перейти во вкладку «Тарифы» - «Тарифы»,

                                нажать на «Информация» для необходимого тарифа :

(рис. 28)

Внимание!!! Тип, для созданного ранее тарифа в WuBook, должен быть «С периодами»

                                В открывшемся окне необходимо скопировать цифровой ID тарифа из адресной строки (в данном случае 87321) :

 

(рис. 29)

                                Добавить этот ID тарифа в Shelter : Открыть «Справочники» - «Тарифы» - «Типы тарифов», выбрать соответствующий тариф,

                                во вкладке «Внешние системы», в поле «Использовать тариф для системы WuBook.net» прописать ранее скопированный код :

(рис. 30)

 

                                Установить чек-боксы «Использовать тариф для Интернет- бронирования», «Использовать тариф для системы WuBook.net»

                                и «Использовать по умолчанию».

 

 

 

Внесение изменений при работающей интеграции

 

В случае, если выгрузка в Wubook у вас уже работает и вы вносите изменения в Shelter по тарифу, количеству мест и тд, то после внесения изменений

выгрузку необходимо перезапускать (перезапуск служб OnlineServer и WubookServer).

 

 

 

 

Анализ ошибок настройки

                                Если служба работает неверно, то следует в первую очередь проверить что настройки верны:

                                   1. Выбрана схема работы с квотами (не для лайт версии)

                                   2. Добавлена организация для WuBook, в ее настройках указан канал WuBook.

                                       В полной версии имеется договор по-умолчанию (в лайт версии не актуально).

                                   3. В настройках верно указан lcode (код гостиницы). В карточке гостиницы в shelter так же во вкладке "внешние системы" указан этот lcode.

                                   4. Выбран тариф, который будет использоваться для WuBook. В его настройках стоят флаги «использовать для интернет бронирования»,

                                       использовать для wubook, верно указан id тарифа, минимум для одного тарифа выбрано «использовать по умолчанию».

                                   5. Используется последняя версия модуля

                                   6. Файл onlineserver.xml актуальной версии

                                   7. Если в ключе нет проекта 3, модуль 5 - в onlineserver.xml все autostart="1" заменены на autostart="0" Причина 90% ошибок - неверные настройки.

                                       Не поленитесь перепроверить их!

 

Анализ логов

 

                                Порядок обмена:

                                Запрашиваются настройки через OnlineServer - пример:

 

                                TWuBookCM.Init Result = 1

                                Вызывается метод «acquire_token» (аутентификация) :

 

                                В ответе (успешно) получаем token:

 

                                Далее вызывается метод «fetch_rooms» (возвращает список категорий номеров, если они уже были заведены в WuBook) :

                                Ответ (успешно):

                                В данном случае в личном кабинете WuBook категории не заведены.

 

                                Проверка валидности токена «is_token_valid» :

 

                                Ответ (успешно) :

 

                                Значение 2 — количество раз, сколько раз был использован token (кратно 2-м). Один и тот же токен не может быть использован более 60 раз.

                                Выгрузка категорий номер происходит при помощи вызова метода : «new_room» :

 

                                Ответ (успешно) :

 

                                259268 - ID категории в личном кабинете WuBook

                                Далее идет проверка валидности токена («is_token_valid»)

                                Следующий метод «new_virtual_room» - создание виртуальной категории :

 

                                APP-1 — название созданной виртуальной категории Ответ аналогичный, как и при вызове «new_room»,

                                за исключением ID виртуальной категориии. Снова проверка валидности токена («is_token_valid»)

                                Далее выгружаются оставшиеся категории номеров и создаются виртуальные категории в личном кабинете WuBook

                                После выгрузки всех категорий номеров вызывается «release_token», чтобы “освободить” токен :

 

 

                                Ответ (успешно) :

 

                                Далее вновь вызывается «acquire_token», после успешного ответа и получения нового токена :

                                

                                Вызываем «get_plans» (получение «шахматки» из личного кабинета WuBook) :

 

                                Ответ (успешно) :

 

                                В данном случае в личном кабинете WuBook не были заведены категории/тарифы, поэтому ничего не вернулось.

                                Далее снова проверка валидности токена : «is_token_valid»

                                Следующий метод «update_rooms_values» - выгрузка категорий и доступности : 

                

 

                                После выгрузки доступности и стоимости вызывается «release_token» (освобождаем токен), а затем снова «acquire_token»

                                Метод «fetch_new_bookings» отвечает за проверку недоставленных броней из WuBook в Shelter

                                Ответ :

                                Возвращается «0» - недоставленных броней нет.

                                В случае, если есть недоставленные брони, от WuBook приходит xml, в которой содержится необходимая информация,

                                после чего происходит парсинг xml и её сохранение.
 

 

Для получения броней из WuBook за прошлый период, необходимо использовать функцию fetch_bookings
Для вызова этой фунцкии, необходимо в shelter.ini добавить секцию и параметры : 

[bookings]
datefrom=
dateto=
OnCreated=1

datefrom - Дата начала периода 

dateto - Дата окончания периода
Формат даты зависит от региональных настроек Windows

OnCreated - 1 - Возвращает брони с фильтром по дате бронирования
OnCreated - 0 - Возвращает брони с фильтром по дате заезда.
 



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

Описание API WuBook : http://tdocs.wubook.net/index.html

 

 

 

Как разобраться в логах Travelline?

 

 

 

Формирование логов для службы TravellineServer подчинается тем же правилам, что описаны и в мануале http://support.ucs.ru/ru/node/9533

То есть, на каждый запрос TRY, должен быть ответ DONE.
На примере интеграции с Travelline разберем типовые запросы/ответы.
Происходит запрос к базе данных на предмет получения настроек подключения к сервису Travelline через "Сервисы и оборудования" :

6088  49408/26788 KB       17.01.2019 18:21:26.843 TRY:    1.12.SQL_Get_Tab_Enabled.CreateReadQuery
-----------------------------------------------------------
select * from Plugins where enabled = 1 

В ответ приходит строка такого формата :
6088  49488/26788 KB       17.01.2019 18:21:26.869 DONE:   1.12.810140.FreeQuery [62 ms, 7 records, 17.69 KB]
6088  49500/26788 KB       17.01.2019 18:21:26.869         Plugin Code=TTravelLineCM; IsDisabled=0; ComputerName=A-SAZONOV/A-SAZONOV; ServiceName=ShelterTravelLineServer/ShelterTravelLineServer; UserName=/СИСТЕМА
Далее возвращается xml с настройками из Shelter : 

TTravelLineCM.Init ParamStr = <?xml version="1.0"?>
<xml> 
<ID value="7" fieldtype="3"/> id записи из таблицы PLUGINS
<DriverName value="TTravelLineCM" fieldtype="1"/> наименование плагина
<ShelterHost fieldtype="24" value="127.0.0.1"/> IP адрес ПК, где запущен ShelterOnlineServer
<ShelterPort fieldtype="24" value="7779"/> порт, на котором работает ShelterOnlineServer 
<MaxResultToLogSize fieldtype="24" value="1024"/> максимальный размер запроса/ответа, который будет отображаться в лог-файле
<ErrorEmail fieldtype="24" value=""/> почта для отправки уведомлений об ошибках при сохранении броней (параметры подключения настраиваются через shelter.ini, секция [Exception Log])
<SuccessEmail fieldtype="24" value=""/> почта для отправки уведомлений об успешном сохранении броней (параметры подключения настраиваются через shelter.ini, секция [Exception Log])
<ConnectTimeout fieldtype="24" value="10000"/> Таймаут соединения с сервером Travelline. Указывается в миллисекундах (1 с = 1000 мс)
<ReadTimeout fieldtype="24" value="10000"/> Таймаут чтения отвта от сервера Travelline. Указывается в миллисекундах (1 с = 1000 мс)
<DateType fieldtype="24" value="4"/> тип периода обновления цен (один год)
<DateTo fieldtype="6" value="42735"/> дата, до которой будет выгружаться доступность и стоимость (если настроен параметр фиксированная дата из пункта выше, в противном случае тип периода от текущей даты)
<LangCode fieldtype="24" value="RU"/> Код локализации ответа
<UpdateRoomKindsInterval fieldtype="24" value="3600"/> Значение интервала выгрузки типов номеров в секундах
<UpdateAvailAndRatesInterval fieldtype="24" value="300"/> Значение интервал выгрузки тарифов и броней в секундах
<UpdateBookingsInterval fieldtype="24" value="300"/> Значение интервал запроса броней в секундах
<ForceUpdate fieldtype="24" value="0"/> принудительное обновление цен (Запустит выгрузки немедленно, независимо от времени последней выгрузки (даже если не прошло время равное соответствующему интервалу выгрузки с момента последней выгрузки)
<RoomAllocate fieldtype="24" value="0"/> автоматическое распределение броней по номерам
<URL fieldtype="24" value="https://www.qatl.ru/Api/TLConnect.svc"/> Service URL (в данном случае указан тестовый сервис для UCS)
<WSDLLocation fieldtype="24" value="https://www.qatl.ru/Api/TLConnect.svc?singleWsdl"/> WSDLLocation (в данном случае указан тестовый сервис для UCS)
<Account fieldtype="24" value="***"/> логин для подключения к сервису Travelline (не логин для входа в личный кабинет Travelline)
<Password fieldtype="24" value="***"/> пароль для подклчюения к сервису Travelline (не пароль для входа в личный кабинет Travelline)
<HotelCode fieldtype="24" value="2540"/> код гостиницы (в данном случае указан тестовый сервис для UCS)
<Proxy fieldtype="24" value=""/> Адрес proxy сервера. Коннект через промежуточный proxy сервер
<UpdateAvailAndRatesLastUpdate fieldtype="24" value="43638=43273.7445036574"/> дата последнего обновления цен и доступности
<UpdateBookingsLastUpdate fieldtype="24" value="43273.745203287"/> дата последнего запроса броней
<UpdateChannelsLastUpdate fieldtype="24" value="43035.7475101273"/>  
</xml>
Далее выполняются необходимые запросы :
getversion, HotelsList, getdebtors, default_values и пр.

ВНИМАНИЕ!!! В ответе на запросы ошибок быть не должно.
1. Получение информации по обекту - идентификация (метод HotelAvailRQ )

После выполнения внутренних запросов между службами TravellineServer, OnlineServer и БД Shelter, формируется и отправляется запрос по HTTP-протоколу (Список кодов состояния HTTP) к сервису Travelline, вызывается метод HotelAvailRQ (получение информации по объекту)  :

6088  51404/28624 KB       17.01.2019 18:21:30.577 TRY:    HotelAvailRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/> адрес сервиса Travelline, логин и пароль для подключения к сервису
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_HotelAvailRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-01-17T18:21:30.550+03:00" Version="1.11"> версия протокола 1.11
      <AvailRequestSegments>
        <AvailRequestSegment>
          <HotelSearchCriteria>
            <Criterion>
              <HotelRef HotelCode="2540"/> код отеля
            </Criterion>
          </HotelSearchCriteria>
        </AvailRequestSegment>
      </AvailRequestSegments>
    </OTA_HotelAvailRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ответ :
6088  52176/28792 KB       17.01.2019 18:21:32.208 DONE:   HotelAvailRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_HotelAvailRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <RoomStays>
        <RoomStay>
          <RoomTypes>
            <RoomType RoomType="116015" RoomTypeCode="116015"> код API категории номера
              <RoomDescription Name="Standard"> название категории номера
                <Text/>
              </RoomDescription>
              <Occupancy MinOccupancy="1" MaxOccupancy="2"/> количество мест
              <Amenities>
                <Amenity RoomAmenity="91" Quantity="2">Rollaway bed</Amenity>
              </Amenities>
            </RoomType>
          </RoomTypes>
          <RatePlans>
            <RatePlan RatePlanCode="13614" InvBlockCode="2384"> код API тарифа
              <RatePlanDescription Name="Проживание без завтрака"> название тарифа
                <Text>Гор</Text>
              </RatePlanDescription>
            </RatePlan>
          </RatePlans>
        </RoomStay>
      </RoomStays>
      <Profiles>
        <ProfileInfo>
          <Profile ProfileType="12">
            <CompanyInfo/>
          </Profile>
        </ProfileInfo>
      </Profiles>
      <Services>
        <Service ServicePricingType="Per person per night" Type="Common" ID="213890">
          <ServiceDetails>
            <Comments>
              <Comment Name="ServiceName">
                <Text>Кровать</Text>
              </Comment>
              <Comment Name="ServiceDescription">
                <Text>Кровать</Text>
              </Comment>
            </Comments>
          </ServiceDetails>
        </Service>
        <Service ServicePricingType="Per person per night" Type="Meal" ID="383085">
          <ServiceDetails>
            <Comments>
              <Comment Name="ServiceName">
                <Text/>
              </Comment>
              <Comment Name="ServiceDescription">
                <Text/>
              </Comment>
            </Comments>
          </ServiceDetails>
        </Service>
      </Services>
      <Success/>
    </OTA_HotelAvailRS>
  </s:Body>
</s:Envelope>

В ответ возвращаются категории номеров - <RoomTypes> (код API категории RoomType="116015") и тарифы <RatePlans> (код API тарифа RatePlanCode="13614")
ВНИМАНИЕ!!! Если в ответ на описанный выше метод, сервис Travelline вернул ошибку : <Errors><Error Language="EN" Type="4" Code="450" Tag="">Unable to process</Error></Errors>
То она обозначает, что неверно введен логин/пароль для подключения к сервису Travelline. Пароль для входа в личный кабинет и пароль для подключения к сервису Travelline - это разные пароли!
Если в Travelline заведена категория номера, но в Shelter не указан код API для этой категории, в логе можно будет увидеть ошибку :

6088  52196/28732 KB       17.01.2019 18:21:32.213 TRY:    TTravelLineThread.CheckRoomKinds
6088  52196/28732 KB       17.01.2019 18:21:32.213 ERROR:  TravelLine RoomKind (id=116015; code=116015; name=Standard) is not found in Shelter
Если не указан договор по умолчанию, в логе будет фигурировать следующая ошибка : 
ERROR:  Default Contract not found
Этой ошибке предшествует запрос :

<?xml encoding="utf-8" version="1.0"?>
<getdebtorcontracts langcode="RU" gds="TRAVELLINE" version="12" debtor="54" hotel="0"/>

Что бы понять, для какой организации не указан договор, можно воспользоваться следующим методом :
1. Запустить Shelter
2. Перейти в модуль "Договорная работа" и найти организацию с уникальным номером организации (не путать в фильтре с уникальным номером) -
 debtor="54":


 

Решение : завести договор, перезапустить службы поочердено (ShelterOnlineServer, потом ShelterTravellineServer)
Для Shelter Light заводить договор не надо.
Если не указан код отеля, в логе будет фигурировать следующая ошибка : 
ERROR:  Hotel Code is not listed in reference
Решение : указать код отеля в Shelter (в справочники-гостиницы и в "Сервисы и оборудования")
Для корректной выгрузки, помимо сопоставления API категорий номеров и API тарифов в Shelter и Travelline, необходимо убедиться, что для категорий, участвующих в выгрузке, настроен тариф. В противном случае, в логе можно наблюдать такую ошибку:
ERROR:  UpdateAvailAndRates: [GetVacancyList Error]
Решение : проверить настройки тарифов
2. Выгрузка доступности (метод HotelAvailNotifRQ)
После успешной идентификации и проверки сопоставления кодов API, вызывается метод HotelAvailNotifRQ :

4152  53876/29780 KB       17.01.2019 19:46:55.238 TRY:    HotelAvailNotifRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-01-17T19:46:55.236+03:00" Version="1.11">
      <AvailStatusMessages HotelCode="2540"> - код гостиницы
        <AvailStatusMessage BookingLimit="6"> - передаем доступность АСУ в Travelline
          <StatusApplicationControl Start="2019-12-03" End="2019-12-22" InvTypeCode="116015"/> дата начала/окончания периода выгрузки доступности (код категории API 116015)
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

ВНИМАНИЕ! Выгрузка доступности происходит периодами. 
Ответ :

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_HotelAvailNotifRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Success/>
    </OTA_HotelAvailNotifRS>
  </s:Body>
</s:Envelope>

Так же, стоит обратить внимание на корректность сопоставления кодов API для тарифов.
3. Выгрузка стоимости (метод HotelRateAmountNotifRQ)
Далее выгружается стоимость по тарифу : 

8216  54464/30088 KB       26.02.2019 13:19:44.061 TRY:    HotelRateAmountNotifRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-02-26T13:19:43.472+03:00" Version="1.11">
      <RateAmountMessages HotelCode="2540">
        <RateAmountMessage>
          <StatusApplicationControl RatePlanCode="214804" InvTypeCode="116015"/> "214804" - код API тарифа, "116015" - API код категории номера
          <Rates>
            <Rate Start="2019-02-26" End="2019-02-28"> - период выгрузки стоимости
              <BaseByGuestAmts>
                <BaseByGuestAmt AmountAfterTax="5999" NumberOfGuests="1"/> - цена за одноместное размещение
                <BaseByGuestAmt AmountAfterTax="5999" NumberOfGuests="2"/> - цена за двухместное размещение
              </BaseByGuestAmts>
            </Rate>
          </Rates>
        </RateAmountMessage>
        <RateAmountMessage>
          <StatusApplicationControl RatePlanCode="214804" InvTypeCode="116015"/> "214804" - код API тарифа, "116015" - API код категории номера
          <Rates>
            <Rate Start="2019-03-01" End="2019-03-02"> - период выгрузки стоимости
              <BaseByGuestAmts>
                <BaseByGuestAmt AmountAfterTax="7999" NumberOfGuests="1"/> - цена за одноместное размещение
                <BaseByGuestAmt AmountAfterTax="7999" NumberOfGuests="2"/> - цена за двухместное размещение
              </BaseByGuestAmts>
            </Rate>
          </Rates>
        </RateAmountMessage>
      </RateAmountMessages>
    </OTA_HotelRateAmountNotifRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

ВНИМАНИЕ! Выгрузка стоимости происходит периодами. 
Если клиент говорит, что выгружается неверная цена, первое, что необходимо сделать, это проверить стоимость в Shelter через калькулятор. В моём случае стоимость такая : 

И на другие даты, соответственно :

Ответ :

8216  54456/30152 KB       26.02.2019 13:19:44.415 DONE:   HotelRateAmountNotifRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_HotelRateAmountNotifRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Success/>
    </OTA_HotelRateAmountNotifRS>
  </s:Body>
</s:Envelope>

Так же, можно столкнуться с таким ответом :

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_HotelRateAmountNotifRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Warnings>
        <Warning Language="EN" Type="3" Code="150" Tag="/OTA_HotelRateAmountNotifRQ/RateAmountMessages/RateAmountMessage[1]">Price integration is disabled.</Warning>
      </Warnings>
      <Success/>
    </OTA_HotelRateAmountNotifRS>
  </s:Body>
</s:Envelope>

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

3. Запрос недоставленных броней (метод HotelReadReservationRQ)

8216  44856/38908 KB       26.02.2019 14:12:19.911 TRY:    HotelReadReservationRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-02-26T14:16:19.909+03:00" Version="1.11">
      <ReadRequests>
        <HotelReadRequest HotelCode="2540">
          <SelectionCriteria SelectionType="Undelivered"/>
        </HotelReadRequest>
      </ReadRequests>
    </OTA_ReadRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ответ :

8216  44936/38908 KB       26.02.2019 14:12:56.857 DONE:   HotelReadReservationRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_ResRetrieveRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Success/>
    </OTA_ResRetrieveRS>
  </s:Body>
</s:Envelope>

Означает, что на момент вызова метода, Travelline недоставленные брони не вернул.
В случае, если Travelline возвращает новые брони, ответ будет таким : 

216  45020/38972 KB       26.02.2019 14:16:21.305 DONE:   HotelReadReservationRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_ResRetrieveRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <ReservationsList>
        <HotelReservation CreateDateTime="2019-02-26T14:15:48.187" LastModifyDateTime="2019-02-26T14:15:52.843" ResStatus="Confirmed"> - статус брони
          <POS>
            <Source>
              <RequestorID Type="22" ID="TRAVELLINE"/> 
              <BookingChannel Type="7"> - Означает, что бронь пришла от Travelline. Если бронь из канала бронирования, то будет фигурировать поле CODE с кратким кодом канала и названием канала
                <TPA_Extensions>
                  <BookingWebSource Code="" Url="http://b.tlintegration.com/2540/"/>
                </TPA_Extensions>
              </BookingChannel>
            </Source>
          </POS>
          <UniqueID Type="14" ID="20190304-2540-4911576"/> - Номер брони из Travelline. Если бронь из канала бронирования, то у нее будет свой номер с параметром ID_Context="External"
          <RoomStays>
            <RoomStay IndexNumber="0">
              <RoomTypes>
                <RoomType RoomTypeCode="116015" InvBlockCode="2384" Quantity="1"/> "116015" код категории номера
              </RoomTypes>
              <RatePlans>
                <RatePlan RatePlanID="214804"/> "214804" код API тарифа
              </RatePlans>
              <RoomRates>
                <RoomRate EffectiveDate="2019-03-04" ExpireDate="2019-03-04" RatePlanCode="214804">
                  <Total AmountAfterTax="5999.0000" CurrencyCode="RUB"/>
                </RoomRate>
              </RoomRates>
              <GuestCounts>
                <GuestCount AgeQualifyingCode="AdultBed" Count="1" ResGuestRPH="1"/> 1 взрослый гость на основном месте
              </GuestCounts>
              <TimeSpan Start="2019-03-04T14:00:00" Duration="1" End="2019-03-05T12:00:00"/> Дата заезда/выезда
              <Guarantee GuaranteeCode="PayOnArrival"/> - оплата при заезде
              <CancelPenalties CancelPolicyIndicator="true">
                <CancelPenalty>
                  <Deadline AbsoluteDeadline="2019-03-03T14:00:00Z"/>
                  <PenaltyDescription>
                    <Text>При отмене менее чем за 24 часа до времени заезда (14:00)  дополнительная плата не взимается</Text>
                  </PenaltyDescription>
                </CancelPenalty>
              </CancelPenalties>
              <Total AmountAfterTax="5999.0000" CurrencyCode="RUB" DecimalPlaces="0"/> стоимость брони
              <BasicPropertyInfo HotelCode="2540"/>
            </RoomStay>
          </RoomStays>
          <ResGuests>
            <ResGuest ResGuestRPH="1">
              <Profiles>
                <ProfileInfo>
                  <Profile>
                    <Customer>
                      <PersonName>
                        <GivenName>Алексей</GivenName> - имя гостя
                        <MiddleName/>
                        <Surname>Сазонов</Surname> - фамилия гостя
                      </PersonName>
                      <CitizenCountryName Code="RUS"/>
                    </Customer>
                  </Profile>
                </ProfileInfo>
              </Profiles>
            </ResGuest>
          </ResGuests>
          <ResGlobalInfo>
            <TimeSpan Start="2019-03-04T14:00:00" Duration="1" End="2019-03-05T12:00:00"/>
            <Comments>
              <Comment>
                <Text>Комментарий гостя: ДОПОЛНИТЕЛЬНЫЙ КОММЕНТАРИЙ - ТЕСТОВАЯ БРОНЬ</Text> - дополнительная информация от гостя
              </Comment>
            </Comments>
            <Guarantee GuaranteeCode="PayOnArrival">
              <GuaranteesAccepted>
                <GuaranteeAccepted GuaranteeID="AT_ARRIVAL"/>
              </GuaranteesAccepted>
            </Guarantee>
            <Total AmountAfterTax="5999.0000" CurrencyCode="RUB"/>
            <Profiles>
              <ProfileInfo>
                <Profile>
                  <Customer>
                    <PersonName>
                      <GivenName>Алексей</GivenName>
                      <MiddleName/>
                      <Surname>Сазонов</Surname>
                    </PersonName>
                    <Telephone PhoneNumber="+74959214198"/> - телефон гостя
                    <Email>a.sazonov@ucs.ru</Email> - почта гостя
                    <CitizenCountryName Code="RUS"/>
                  </Customer>
                </Profile>
              </ProfileInfo>
            </Profiles>
          </ResGlobalInfo>
          <TPA_Extensions>
            <Shelter agent="1215133281" debtor="1215133281" contract="" paymentMethod="910"/>
          </TPA_Extensions>
        </HotelReservation>
      </ReservationsList>
      <Success/>
    </OTA_ResRetrieveRS>
  </s:Body>
</s:Envelope>

Существует несколько статусов брони :

Unconfirmed – бронь не подтверждена 
Confirmed – бронь подтверждена
Cancelled – бронь отменена 
Released – номер освобожден заранее
Pending – ожидается оплата 

Перед сохранением брони в Shelter, происходит обмен данными между TravellineServer, OnlineServer и базой данных Shelter на предмет проверки настроек и корректности сопоставления тарифов, категорий номеров и пр.
После успешного сохранения брони в Shelter, формируется уникальный внутренний номер брони, к примеру :

<reservation id="16934" code="20190304-2540-4911576" extno="8534"/>

Далее формируется xml с ответом об успешном сохранении брони :
4. Отправка уведомления о плучении брони (метод NotifReportRQ)

8216  45152/38944 KB       26.02.2019 14:16:33.456 TRY:    NotifReportRQ - название метода
<?xml version="1.0"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_NotifReportRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.11">
      <Success/>
      <NotifDetails HotelCode="2540">
        <HotelNotifReport>
          <HotelReservations>
            <HotelReservation LastModifyDateTime="2019-02-26T14:15:52.843" ResStatus="Reserved"> - подтверждение сохранения брони
              <UniqueID Type="14" ID="20190304-2540-4911576"/> - номер брони от Travelline
              <ResGlobalInfo>
                <HotelReservationIDs>
                  <HotelReservationID ResID_Type="14" ResID_Value="16934"/> - уникальный внутренний номер
                </HotelReservationIDs>
              </ResGlobalInfo>
            </HotelReservation>
          </HotelReservations>
        </HotelNotifReport>
      </NotifDetails>
    </OTA_NotifReportRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ответ :

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_NotifReportRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Success/>
    </OTA_NotifReportRS>
  </s:Body>
</s:Envelope>

В случае, если сохранение брони не выполнилось, то уникальный внутренний номер брони не будет сформирован, а в Travelline не отправится уведомление о сохранении брони.  В таком случае бронь в Travelline будет в статусе обработки, и каждый раз при вызове метода недоставленных броней будет возвращаться.

Настройка интерфейса связи с Travelline

 

 

 

 

 

 

 

 

1. Настройка интерфейса связи с Travelline

 

Инструкция соответстует версии 2.12.132.3280. Рекомендовано производить настройку на ней или более новой версией

 

 

 

1.1 Разделение договоров Channel Manager для двух 2-х отелей с разными договорами в одной базе данных

Поддержано в версии 2.12.126.2650

 

 

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

 

   

 

1.2 Рост памяти службы OnlineServer с дальнейшим зависанием(остановкой)

 

В Shelter может наблюдаться проблема с ростом занимаемой памяти shelter.exe для службы ShelterOnlineServer. В логах можно увидеть ошибку:

 

  • Message:   Access violation at address 02888652 in module 'shelter.exe'. Read of address 0000001D

 

 

Или бесконечную проверку лицензии:

 

 

  • TRY:    TLicence.SendCommandStr[ISCHANGE_ALL &SubscribeID=573&RID=216&TIME=20191127180518]

 

 

Служба продолжает работу, однако запросы и команды от ShelterTravellineServer/ShelterWubookServer не принимает и не обрабатывает.

 

 

Необходимо воспользоваться автоматическим перезапуском служб с помощью *.bat - файла. Пример *.bat-файл для перезапуска ShelterOnlineServer :
 

@Echo Off
Set ServiceName=ShelterOnlineServer
Net stop %ServiceName%>nul
Ping -n 4 127.0.0.1>nul
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
exit

Пример *.bat-файл для перезапуска ShelterTravellineServer :
 

@Echo Off
Set ServiceName=ShelterTravellineServer
Net stop %ServiceName%>nul
Ping -n 4 127.0.0.1>nul
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
exit

Необходимо добавить эти 2 *.bat файла в планировщик заданий и создать задание для поочередного перезапуска служб 1/2/3 раза в сутки :
1. ShelterOnlineServer
2. ShelterTravellineServer/ShelterWuBookServer

 

 

ВНИМАНИЕ!!! 

В целях мониторинга работоспособности связки рекомендуем: сообщить в тех поддержку компании TravelLine e-mail ответственного за интеграцию сотрудника или общую почту тех. поддержки дилера. В случае потери связи TravelLine отправит письмо об этом. При восстановлении связи так же придет письмо.

 

 

ВНИМАНИЕ!!! Время заезда и выезда в Travelline и Shelter должны совпадать!

 

 

1.3 Описание настройки модуля Channel Manager Travelline

 

Служба ShelterTravelLineServer является посредником между системой глобального бронирования Channel Manager Travelline и программным

продуктом Shelter 2.

Передача данных между Travelline и службой ShelterTravelLineServer осуществляется в реальном времени, в формате XML.

Изображение структурной схемы работы (рис. 1):

 

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

  • Код отеля;
  • Параметры для подключения к сервису TLConnect (логин/пароль);
  • Параметры входа в личный кабинет (не путать с подключением к TLConnect);
  • Коды API (коды тарифов, коды категорий номеров);

Данные коды API вы можете просмотреть самостоятельно, в личном кабинете Travelline (рис. 2).

 

ВНИМАНИЕ!!!

Настройками тарифов/категорий номеров и пр. в лк Travelline сотрудники компании UCS не занимаются.

 

 

В связке используется модуль Shelter Online. При наличии Firewall, он должен быть настроен таким образом, чтобы отправлялись и получались

запросы на порт 7779 (или другой, если такая настройка будет произведена намеренно).

В ключ защиты должен быть прописан модуль связи с ChannelManager (Wubook/Travelline)

 

Настройки интеграции необходимо производить через «Сервисы и обрудование» (Настройки - Сервисы и оборудование) рис. 3:

 

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

   1. Установить cлужбу Online Server; (мануал по корректной настройке можете посмотреть ТУТ)

  • Создать ярлык для shelter.exe, в свойствах ярлыка, в поле «Объект» добавить следующий ключ:

                   -online_server -install

   2. Установить службу для интеграции с Travelline (UCS Shelter Travelline Server) :

          а) Создать директорию в корне Shelter (../Travelline/) и скопировать необходимые файлы :

                   shelter.exe

                   shelter.dll

                   gds32.dll

                   bass.dll

                   borlndmm.dll

                   libeay32.dll

                   ssleay32.dll

                   shelter.ini

          б) Создать ярлык для shelter.exe, в свойствах ярлыка, в поле «Объект» добавить следующий ключ :

                   -travelline_server -install

          в) Далее необходимо запустить ярлык от имени администратора. Должно появиться сообщение о успешной установке службы.

 

  3. Зайти в Shelter – «Настройки»- «Сервисы и оборудование» (рис. 4) И добавить модуль Travelline согласно (рис. 5)

 

Настройки, изображенные на рис. 5, без необходимости не менять, параметр «Имя компьютера» заполнится автоматически, в соответствии с именем ПК.

 

  4. Зайти в настройки модуля и настроить по аналогии с рис. 6

(Рис. 6)

 

 

 

Новая реализация с версии 2.12.127.2750!!!

 

1.4 Описание настройки "Доп. услуги включены в стоимость"

Поддержано в версии 2.12.127.2750

 

 

Данная настройка необходима исключительно, если в Travelline выгружается тариф у которого есть пакеты услуг, которые НЕ включены в тариф:

   1. Чек-бокс активен - цена по тарифу выгружается с учетом доп. услуг и при сохранении брони доп. услуги входят в стоимость по брони.

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

 

 

Настройки отправки E-Mail беруться из Shelter.ini секция [Exception Log]

[exception log]
activate=0
new email address=shelterbug@ucs.ru
weburl=http://tracker.ucs.ru
smtp host=smtp.yandex.ru
smtp port=25
smtp userid=example@ucs.ru
smtp password=ZmU4bXNwZWE=
smtp from=example@ucs@ucs.ru
smtp connecttimeout=10
smtp authtype=0
smtp helo=HELO
smtp usessl=1
smtp=

Таймаут соединения с сервером Travelline. Указывается в миллисекундах (1 с = 1000 мс)

Таймаут чтения отвта от сервера Travelline. Указывается в миллисекундах (1 с = 1000 мс)

  5После завершения настроек в табл. 1 необходимо нажать кнопку «Сохранить»

  6. Зайти в «Настройки» - «Справочники» - «Гостиницы» - «Гостиницы» и ввести Код гостиницы в поле «Код в системе Travelline» (рис. 7)

 

  7. Перейти во вкладку «Ресурсы» - «Типы ресурсов» и внести соответствующие коды API в поле «Travelline» - Идентификаторы (рис. 8).

 

ВНИМАНИЕ (!!!) Количество основых и дополнительных мест в Shelter и Travelline должны совпадать

 

 

 

  8. Перейти во вкладку «Тарифы» - «Типы тарифов» и выбрать созданный тариф для выгрузки в Travelline. Перейти во вкладку «Внешние системы»

и в поле «Использовать тариф для системы Travelline» прописать код API из личного кабинета Travelline и поставить чек-бокс

«Использовать тариф для системы Travelline» (рис. 9)

 

(Рис. 9)

 

Внимание (!!!) Соблюдайте уникальность тарифа в пределах категории номера.

 

  9. Перейти в настройки системы : «Внешние системы»- «Схема работы» - выбрать необходимую схему работы (рис. 10).

(Рис. 10)

 

 

  10. Перейти в модуль договорная работа : «Бронирование» - «Договоры» - «Добавить юридическое лицо» - Указать краткое и полное

наименование организации (Travelline) - рис.11, а так же указать WuBook/Travelline/ResOnline во вкладке «Интернет бронирование» - «Внешние системы» (Рис. 12)

 

 

   11. Перейти во вкладку «Тарифы» и поставить чек-боксы «Активен» и «Использовать онлайн» для соответствующего тарифа, 

а так же поставить чек-бокс «Не объединять с гостиничным тарифом» (это необходимо для того, чтобы стоимость по тарифу, 

если она отличается от стоимости в Shelter, могла корректно сохраниться для определенной категории). (Рис. 13)

(Рис. 13)

 

  12. Для сохранение оплаченных броней, необходимо добавить тип оплаты в «Справочники» - «Услуги» - «Оплаты».

Установить чек-бокс «Использовать для WuBook/Travelline» (рис. 14) и настроить оставшиеся обязательные поля по аналогии.

(Рис. 14)

 

 

Важно!!! Не забывайте удалять файл onlineserver.xml при обновлении Shelter. После запуска службы ShelterOnline он создастся заново,

актуальной версии.Если клиент использует только TravelLine, а интернет-бронирование нет (это разные модули в ключе защиты,

несмотря на то что тут ShelterOnline тоже используется!), необходимо в файле onlineserver.xml все значения autostart="1" заменить на autostart ="0"

и в shelter.ini в секции [onlineserver] выставить gds=BOOKING. Отследить необходимость данного действия можно по логу онлайн сервера.

В нем будет ошибка Device licence error. Если в ключе точно прописан проект 3, модуль 10, а проект 3, модуль 5 отсутствует - действуйте как указано выше.

 

 

 

  13. Текущая настройка необходима для версий Shelter 2.12.127.2750 и выше!!! (Бывают исключения для версий старее) 

Исправлен механизм сохранения платежей для TravellineServer.

Необходимо, в настройках киоска настроить «Возможные типы оплат» - устанавливаем чек-бокс на ранее заведенной оплате для Travelline:

 

(Рис. 15)

 

Так же нужно настроить поле  «Список доступных пользователей» - устанавливаем чек-бокс на пользователе *TRAVELLINE*:

 

 

(Рис. 16)

 

 

 

Разделение по каналам продаж

 

Для каждого канала продаж необходимо создать организацию, переходим «Бронирование» - «Договоры» - «Добавить юридическое лицо».  (рис. 15)

 

(рис. 15)

 

 

Указываем краткое и полное наименование организации (Booking.com), ниже во вкладке «Интернет бронирование» «Внешние системы» указываем

канал продаж «Booking.com». (рис. 16)

 

(рис. 16)

 

 

Далее во вкладке «Договоры» настраиваем по аналогии с основной организацией Travelline. 

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

из выше приведенного примера.

 

 

 

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

 

Для корректной настройки квот необходимо воспользоваться инструкцией Квоты.doc

Выбрать схему работы с квотами :

(Рис. 17)

 

 

Выгрузка доп. мест

 

Для выгрузки дополнительных мест в Travelline необходимо произвести следующую настройку:

 

1. Заходим в «Справочники» «Справочники» - «Категория размещения» (Рис. 18)

(Рис. 18)

 

2. Если у вас уже заведены цены для доп. мест, то данная категория размещения уже должна быть заведена (если ее нету, то добавляем ее).

Выбираем доп. место и нажимаем кнопку «Изменить», в открывшемся окне необходимо поставить чек-бокс  «Использовать для Travelline». (Рис. 19)

(Рис. 19)

 

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

 

 

Выгрузка возрастных категорий на доп. место

 

Для выгрузки возрастных категорий необходимо создать в ЛК Travelline возрастные категории.

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

«Справочники» - «Справочники» - «Возраст гостя»

(Рис. 20)

 

Создать необходимые категории и указать в настройках «Использовать для Travelline» и указать код из системы Travelline.

 

ВНИМАНИЕ!!!  Чек-бокс для взрослого "Использовать для Travelline" ставить не нужно!!

В Travelline настройка идет следующим образом: «Ребенок от 7 до 12 лет», далее «Ребенок от 12 до 13 лет», «Ребенок от 13 до 14 лет», «Ребенок от 14 до 15 лет».

 

В Shelter необходимо указать код для Travelline в таком порядке:

    1. «Ребенок от 7 до 12 лет» - 0

    2. «Ребенок от 12 до 13 лет» - 1

    3. «Ребенок от 13 до 14 лет» - 2

    4. «Ребенок от 14 до 15 лет» - 3

 

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

Так же необходимо донастроить тариф (завести операции тариф-пакета для детей)

 

 

 

Статус брони (Новая реализация)

 

ВНИМАНИЕ!!! Данный функционал доступен только с версии 2.12.125.2480 или новее

 

Теперь в настройках Travelline можно установить необходимый статус для приходящих броней. Заходим в Shelter – «Настройки» – «Сервисы и оборудование» 

и открыть настройки Travelline. В них можно увидеть поле «Статус брони» в котором нужно указать необходимый статус для приходящих броней (рис. 21).

 

(Рис. 21)

 

Описание статуса броней:

  • Гарантированная, если подтверждена - статус брони всегда «Гарантированная», причина в том, что бронь в ЛК Travelline автоматически подтверждается.
  • Всегда лист ожидания - оплаченная бронь статус «Гарантированная», а у не оплаченной «Лист ожидания».
  • Всегда гарантированная - оплаченные и не оплаченные брони имеют статус «Гарантированная».

 

 

 

Две гостиницы в одной базе данных

 

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

  • Установить службы OnlineServer и TravellineServer в разные папки для каждой гостинцы свои. Например:

1. Гостиница Новая - OnlineServerNovaya и TravellineServerNovaya

2. Гостиница Старая - OnlineServerStaraya и TravellineServerStaraya 

 

Более подробно как создавать службы с нестадартным наименованием можно посмотреть тут

 

  • В Shelter.ini, откуда запускаются службы необходимо настроить работу OnlineServer на разных портах. Для этого:

​1. В Shelter.ini находим секцию [OnlineServer], там есть параметр «tcpport»

2. Для OnlineServerNovaya указываем «tcpport = 7779», для OnlineServerStaraya указываем «tcpport = 7778» 

                    (Можно другие порты. Главное, чтобы их не занимали другие программы)

 

  • В сервисах и оборудовании необходимо будет добавить два драйвера «Travelline», для каждой гостиницы свой.
  • Так же главное исправить поле «Имя службы» на соответствующее вашим созданным службам:

 

 

Выглядеть будет так:

 

 

  • Ранее мы для каждой службы OnlineServer указали свой порт, на котором она будет работать. Помимо настроек в Shelter.ini нам нужно еще указать порт, который будет прослушивать определенная служба TravellineServer. Для этого:

1. Так как ранее для OnlineServerNovaya в Shelter.ini мы указали порт «7779», то в Shelter в настройках драйвера Travelline указываем «Порт ShelterOnlineServer - 7779»

 

2. Тоже самое делаем для OnlineServerStaraya, но уже указываем порт «7778», который  мы указали в Shelter.ini для этой службы

 

 

  • Если вдруг, у вас категории или тарифы используются одни и те же на обе гостиницы, тогда просите Travelline сделать коды API для обоих личных кабинетов одинаковыми.

 

 

 

Сохранение переброни в лист ожидания (Новая реализация)

 

Реализация доступна в версии 2.12.131.3200

 

В параметрах ChannelManager добавлена настройка "Сохранять переброни в лист ожидания", по умолчанию настройка выключена.

  • Чек-бокс активен - брони сохраняются вниз шахматки в лист ожидания, даже если свободных номеров нету.
  • Чек-бокс не активен - если свободных номеров нету, брони не сохраняются

 

 

 

Сoхранение броней по номеру канала продаж / Travelline

 

Реализация доступна в версии 2.12.131.3200

 

 

В параметрах ChannelManager добавлена настройка "Сохранять брони с дополнительным номером" :

  • Чек-бокс активен - бронь сохраняется с номером из канала продаж (пример: 1583451055) 
  • Чек-бокс не активен - бронь сохраняется с номером из Travelline (пример: 20180813-8438-29593222)

 

 

 

 

Работа с Lite версией

 

Модуль Travelline поддерживает работу с Shelter Lite, настраивается аналогично. Исключением по настройке интеграции является только заведение организации Travelline.

1.  Чтобы завести/отредактировать организации нужно создать любую бронь на шахматке (Рис. 22):

 

(Рис. 22)

 

 

2. В открывшейся карточке, в секции «Организации» нажать на <...> (Рис. 23):

 

 

(Рис. 23)

 

 

3. Откроется окно со списком заведенных организаций, в котором можно их добавлять/изменять. Необходимо нажать «Добавить» (Рис. 24):

 

 

(Рис. 24)

 

 

4. Открывается окно в котором необходимо заполнить тип клиента, краткое и полное наименование, тип организации и канал продаж.

Заполняем как на примере (Рис. 25):

 

(Рис. 25)

 

Краткое, полное наименование и тип организации можете указать по вашему усмотрению. 

 

После выше описанных действий организация Travelline успешно настроена.

 

 

 

Если клиент жалуется что на какую-либо дату выгружается неправильная цена, или вообще не выгружается

 

Первое правило в данном случае - зайти в формирование тарифов, и в калькуляторе тарифов убедиться, что на заявленную дату в рамках тарифа,

используемого для интернет бронирования формируется верная цена. Если в калькуляторе цена не верна, значит это ошибка настройки тарифа, а не выгрузки в TL.

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

 

 

 

Внесение изменений при работающей интеграции

 

В случае, если выгрузка в Travelline у вас уже работает и вы вносите изменения в Shelter по тарифу, количеству мест и тд, то после внесения изменений выгрузку необходимо перезапускать (перезапуск служб OnlineServer и TravellineServer).

 

 

Анализ ошибок настройки

 

Если служба работает неверно, то следует в первую очередь проверить что настройки верны:

  1. Выбрана схема работы

  2. Добавлена организация для TL, в ее настройках указан канал TL. Имеется договор по-умолчанию.

  3. В настройках верно указан код гостиницы. В карточке гостиницы в shelter так же во вкладке "Сервисы и оборудование" указан этот код

  4. Выбран тариф, который будет использоваться для TL. В его настройках стоит флаг использовать для TL, верно указан id тарифа.

  5. Используется последняя версия модуля

  6. Файл onlineserver.xml актуальной версии

  7. Если в ключе нет проекта 3, модуль 5 - в onlineserver.xml все autostart="1" заменены на autostart="0" Причина 90% ошибок - неверные настройки.

      Не поленитесь перепроверить их!

 

 

Анализ логов

 

Порядок обмена:

Запрашиваются настройки через OnlineServer — пример:

 

 

TTravelLineCM.Init Result = 1

Вызывается метод «HotelAvailRQ» (TRY: HotelAvailRQ), отправляем по HTTP-протоколу сформированный xml-запрос :

 

Если доставка успешна — получем ответ (DONE: HotelAvailRQ), который возвращает Типы номеров (<RoomTypes>) и Типы тарифов (<RatePlans>)

 

Происходит сопоставление типов категорий номеров и типов тарифов в Travelline и Shelter (по API — кодам, количеству основных/дополнительных мест)

Далее вызывается метод HotelAvailNotifRQ (TRY: HotelAvailNotifRQ) - выгружается доступность номерного фонда

 

Ответ :

 

После этого вызывается HotelRateAmountNotifRQ (TRY: HotelRateAmountNotifRQ) – выгрузка стоимости по тарифу

 

Ответ :

 

Проверка недоставленных броней происходит при помощи метода HotelReadReservationRQ (TRY: HotelReadReservationRQ)

 

В ответ (DONE: HotelReadReservationRQ) приходит xml с информацией по брони (канал бронирования, номер брони, дата заезда/выезда и пр.)

Происходит парсинг xml средставми службы Travelline и сохранение брони.

 

Выгрузку доступных мест (основных и доп.) можно увидеть в логе, по ключевому слову :  <rs_quant>

 

Где каждая нода <rs_qant> содержит категорию размещения.

<f1> - категория размещения (номер/осн.место/доп.место), содержит категорию гостя (<f2>)

 

Принудительная выгрузка из Shelter в TravelLine.

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

 

1. Остановить службу UCS Shelter TravelLine Server;
2. Остановить службу UCS Shelter Online Server;
3. Запустить службу UCS Shelter Online Server;
4. Запустить службу UCS Shelter TravelLine Server;

 

Shelter + RKeeper

Закрытие из RKeeper в Shelter2 через FarCards

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание интерфейса связи RK7 и Shelter2 через FarCards.

 

Структурная схема.

 

 

Структура взаимодействия модулей и программ.

RKeeper при оплате на специальную валюту обращается к FarCards, который вызывает подключенную к нему sdmHTTPFarCard.dll.

Последняя dll обращается к ключу защиты и если лицензия найдена (проект 2 модуль 11),

отправляется XML запрос на TCP/IPi сервер - программу HTTPRKtoSH.exe. Этот сервер обращается к ShelterConnect.dll,

которая работает с базой данных Shelter.

  • Используемые версии ПО
  • ​Версия станции и кассового сервера 7.5.7.65
  • Версия FarCards 6.04
  • Важно!!! pds_netk.dll из версии RK7 7.5.3.x
  • ​Shelter версия 2.12.120.2365
  • HTTPRKtoSH от 16.06.2017
  • ShelterConnect.dll от 17.02.2017
  • sdmHTTPFarCard.dll от 10.03.2017

Дистрибутив находится на FTP

 

Настройки RKeeper7.

 

    1. Зайти в меню Сервис - Кассовые станции и устройства. Добавить устройство: PDS Interface#1. (Рис.1)

 

(Рис. 1)

 

  • Параметр PDS Server Name = rkfcsh – имя сервера FarCard, через который будет обеспечиваться связь с системой Shelter.
  • ВНИМАНИЕ! LookupCardByMailAddr = YES, Mail Addr Type Kind = 2
  • Если параметр «Pass All Receipts XML data» установить «YES Always (fail if impossible)», то при закрытии на любую валюту этот заказ будет передаваться в Shelter. Для этого должны быть сделаны соответствующие настройки в ShelterConnect.ini, и в настройках программы.  Не рекомендуемая схема работы.

    2. Зайти в меню Сервис - Интерфейсы. Добавить новый интерфейс. Назовем его INTF Shelter FC (Рис.2)

(Рис. 2)

 

В данном интерфейсе указываем ранее заведенный PDS interface. Код интерфейса необходимо прописать в фале HTTPRKtoSH.ini, в секции :

[SERVER]

RKInterfaceID=6

 

    3. Перейти в меню «Сервис» - «Обработка сигналов устройств» - «MCR алгоритмы» и добавить MCR-алгоритм.

Указываем область «Интерфейс», а так же объект - заведенный ранее интерфейс из п.2. Если указать область «Валюта»,

то при оплате появится ошибка 232: "Не получается напечатать чек: Персональное ограничение для "" = 0.00."

 

(Рис. 3)

 

    4. Далее, необходимо завести валюту, в разделе «Платежные карты» - «На номер FC» - Рис. 4

 

(Рис. 4)

 

 

Важно обратить внимание на заполнение полей :
  • Без сдачи - флаг установлен;
  • Доп. Инфо с клавиатуры - флаг установлен;
  • Автозаполнение - Вся сумма + подтверждение; Формат доп. Инфо - символ R и решетки (########). Символ R является ключевым, для определения номера комнаты
  • Не учитывать в потратах ПДС - флаг должен быть снят;

​Аналогично необходимо настроить закрытие на фолио (создать валюту).

 

Настройки FarCards :

 

FarCards необходимо установить на ПК, к которому физически подключен ключ защиты (для Shelter), а так же убедиться,

что в ключе присутствует соответствующий модуль :

Проект 2, модуль 11 - Интерфейс РК-Шелтер

 

Доработка по отмене проверки лицензии со стороны httpFarCards ведется в задаче : http://tracker.ucs.ru/issues/116728

 

Более подробную информацию по установка FarCards можно найти тут : http://support.ucs.ru/ru/node/6673#header-10

 

(Рис. 5)

 

Пример настройки FARCARDS.INI :

 

[FarServer]

Type = 1

DLL = sdmHTTPFarCard.dll

Gate = 3

log = 30

XMLCP=1251

[LinkDLL] 

1 = RTCP

2 = RNBOpen

3 = pds_netk

[RTcp] 

$Client1 = Премьера

$Server1 = 127.0.0.1

$Port = 2277

[RNBOpen] 

APServer = CS_SERV

[pds_netk] 

NetServerName=rkfcsh2

ininame=netk.ini

DebugMessages=1

[Card System 5] 

Address=127.0.0.1

Port=9191

Log_Level = 10

Log_Count = 5

Qualifier = 2

Images_Path = E:\CS_501\images\

 

netk.ini :

 

[netkern]

TESTMESSAGES=0

protocols=tcpsoc.dll

[TCPSOC]

port=2234

 

HTTPFarCard.ini :

 

[PARAMS]

ClientCode = HOTEL

UserCode = UCS

UserPwd = 12345

LangCode = RU

[SERVER]

Host = 127.0.0.1

Port =2277

[LOG]

FileName=HTTPFarCards_AB.log

Level = 100

DebugLevel = 100

 

FarCards обращается к sdmHTTPFarCard.dll, которая должна находиться в папке с FarCards. sdmHTTPFarCard.dll защищена

ключом защиты UCS Shelter. Этот ключ должен физически находиться на машине, где запущен FarCards. В случае связи с ПО Абонемент

или гостиничной системой Shelter, можно воспользоваться одним ключом, если FarCards запущен на одном сервере с Shelter или Абонемент.

Настройки осуществляются в файле HTTPFarCard.ini. Ниже приведен его пример.

 

HTTPRKtoSH.ini:

 

[SERVER]

Port = 2277

RKInterfaceID=6

AllCheckToHotel = 1

IdentPhysType = 2

Autostart = 1

Autohide =0

[LOG]

FileName = C:\UCS\HTTPtoAB\LOG\HTTPRKtoSH.log

 

Level = 100

DebugLevel =100

 

ByMonthes = 1

ByDays = 1

ByHours = 1

 

HTTPRKtoSH.exe является сервером, который слушает TCP/IP и обрабатывает XML запрос от sdmHTTPFarCard.dll. HTTPRKtoSH.exe

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

Основные настройки осуществляются в файле HTTPRKtoSH.ini

 

ShelterConnect.ini:

 

 

 [Database]

  DBname    =   127.0.0.1/3080:D:\Base\Garbage_Shelter\IBDATA\SHELTER.FDB - имя базы Shelter-а, с указанием полного пути

и имени компьютера, на котором установлен Shelter.

  DBUser   =  ucs имя пользователя для подключения к базе Shelter-а
  DBPassword = oQKH8n0BFUE= - пароль для подключения к базе Shelter-а
 
[ExternalClient]
  ClientID = 1 код shelterconnect'a, если используются несколько ShelterConnect.DLL
  IdentPhysType = 2 Тип устройства. Данный параметр не анализиурется в shelterconnect, а анализируется в HTTPRKtoSH
  ConvertOperationNeed = 1 -  0- не использовать секцию [TranslateOperation], 1- использовать секцию
  ToOEM = 0 (0 - нет конвертирования, 1- конвертирование текстов в/из OEM/Windows (ошибки, комментарии, тексты ... )).

Должен быть 0. При переходе с Rkeeper 6, поменять на 0!

  NeverRestrictTransaction = 0 (0- проверять баланс фолио перед совершением транзакции, 1- не проверять баланс перед совершением транзакции).
  FolioMask = 1 Фиксированное значение.
  ShowBalance = 1 (1 — при запросе разрешенной суммы оплаты добавлять к имени клиента текущий баланс, 0 - не добавлять).
  ShowBalanceFirst = 1 -  показывать баланс перед именем клиента.
  RoomInfoMode = 3 
  TransSection =0
  ConvertExtIDtoNumber = 1/0 - использование внешенего номера, описание ниже.
 
[log]
  FileName  = ShelterConnect.log
  Level   =  100
  DebugLevel =  100
 
[GarbageCollector]
  Enabled  = 0
  LifeTime = 120
 
[SCRK6]
  AlcoholicOperation =999;
  Messages =SCRK6.eng.msg
 
  UseScreenHeader0 =1
  UseScreenHeader1 =1
  UseScreenSequelCode =1
 
  ShowBalance = 1
  ShowBalanceFirst = 1
  ShowBalanceEverywhere = 1
 
  UseDetails = 1
  UseSuperDetails = 1
 
[TranslateOperation]
     1 = 301
     2 = 301
     3 = 301
     4 = 301
     5 = 301
     6 = 301
     7 = 301
     8 = 301
     9 = 301
     10 = 301
     11 = 301
     16 = 301
     17 = 301
   999 = 301
 
[TranslatePayment]
  1 = 1005,910
  1000632 = 1005,901
  8 = 1005,901
  3 = 1005,901
 
        Для того, чтобы при закрытии на номер, услуга закрывалась на 0-ю, 1-ю, 2-ю и другие секции в shelter, необходимо добавить в shelterconnect.ini секцию [PARAMS]:
[PARAMS]
NoAutoDiscount = 0
Section = 2  - Номер секции, на которую будет происходить закрытие на номер.
UseSection = 1
 
Описание параметра ConvertExtIDtoNumber
    Данный параметр необходимо включать, если в одной базе данных shelter более 2-х гостниц и существует одинаковые номера, а также номера, включающие символы, например, номер 7 и 7в.
      После включения данного параметра в shelterconnect.ini, необходимо в "Номерной фонд" в справочниках  shelter проставить параметр "Внешний номер", после чего на кассе RK, необходимо вводить проставленный номер параметра "Внешний номер".
 
 
 

Разделение услуг БАРА и РЕСТОРАНА

 
 
        Для разделения услуг БАРА и РЕСТОРАНА необходимо использовать две станции RK, одна используется  в баре, а вторая используется в ресторане.
             В Shelter необходимо завести услуги  «Ресторан» с кодом 301 и «Бар» с кодом 302 (Рис. 6).
 
Рис. 6.
 

      Далее необходимо сопоставить код услуг shelter c группами станции RK в shelterconnect.ini FARCARDS (Рис 7).

Рис. 7.
 
                                                      Коды группы станции можно посмотреть в «Станции и Устройства» в менеджерской части RK (Рис. 8, Рис. 9).
 
Рис 8.
 
Рис 9.
 

                                                      После закрытия на номер с каждой из станции на фолио гостя будут отображаться две услуги «Бар» и «Ресторан» (Рис. 10).

Рис 10.

 

Разделение услуг по категории заказа.

 

                        Для корректного отображения услуг необходимо использовать следующие версии приложения и библиотеки: 

                                           - ShelterConnect.dll v_1.8.0.3;

                                           - HttpRKtoSh v_1.4.

                В RK необходимо настроить и завести категории заказа, которые будут выбираться при создании заказа. В нашем случае заведены следующие категории заказа: Бар, Основной и Ресторан.

Рис 11.

                Для закрытия на номер по категории заказа необходимо в shelterconnect.ini добавить параметр ConvertOperationType =0

[ExternalClient]

ConvertOperationType =0 //Если 0, то закрытие на номер происходит по группе станции. Если 1, то по категории заказа

                При значении параметра ConvertOperationType =1 в секции [TranslateOperation] сопоставляем код категории заказа из поля «Код» (Рис 11) с заведенной услугой в shelter

[TranslateOperation]

     1 = 305

     2 = 302

     3 = 307

     4 = 303

     5 = 301

 

                Заведенные услуги в shelter

                Для проверки корректности работы при создании заказа, необходимо выбирать категорию заказа (Рис 12).

Рис 12.

            После заполнения всех полей и закрытия на номер, на фолио гостя отобразится услуга Бар или Ресторана в зависимости от выбранной категории заказа.

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

 

                Разделение услуг БАРА и РЕСТОРАНА

                (Выделение алкоголя. Схема из задачи #173858).

                Для реализации данной схемы неообходимо два экземпляра FARCARDS, которые можно запустить на одном рабочем месте, указав разные порты.

                    Настройка shelterconnect.ini представлена на рисунке 13.

Рис.13

                Настройка PDS Interface настраивается аналогичным образом, как и при закрытии на номер, за исключением параметра «Pass All Receipts XML data». Настроки  представлены на рисунке 14.

Рис. 14

                Сами интерфейсы настраиваются точно также, как и при закрытии на номер

Рис. 15

            Для разделения блюд по разным категориям на БАР и РЕСТОРАН, настроили две классификации блюд в "Отдел ФР" по мануалу https://support.ucs.ru/ru/node/7224 , которые представлены на рисунке 16.

Рис. 16

 

                Далее необходимо завести две валюты и  для каждой выбрать классификацию, которые были созданы раннее (Рисунок 17)

Рис. 17

                Для реализации данного механизма потребуется либо ФР, либо принтеры печати. В нашем случае был использован один принтер печати SEWOO, настройки представлены ниже на рисунке 18.

Рис. 18

                Если не настроить "Назначение принтеров", то при закрытии на номер будет ощибка

 

                Для проверки корректности работы, создается стол или быстрый чек, добавляем блюда из БАРА и РЕСТОРАНА (Рисунок 19)

Рис. 19

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

Рис 20.

                После поочередного закрытия на номер каждой валютой выйдет два чека и на фолио гостя отобразятся две услуги БАР и РЕСТОРАН (Рисунок 21)

Рис 21.

 

                 Закрытие числовой номер или название комнаты в Shelter

               Через FarCards возможно закрывать на символьные номера, например, 3M, Fito и т.д. (Рисунок 22).

Рисунок 22

              Для этого необходимо для валюты "Закрытие на номер" в поле "Формат доп. инфо" ввести маску Raaaa 

Рисунок 23

              После чего, в поле ввода необходимо вводит необходимый номер комнаты, например, Fito.

Рисунок 24

              После ввода номера/названия комнаты появится стандартное окно с информацией о госте и балансе.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выгрузка меню в DBF формат из RK.Подключение меню к Shelter

 

 

 

Выгрузка меню в DBF формат из R-Keeper 6.

 

Находим файл Rkeeper.ini, обычно он находится в папке C:\RK6. В этом файле ищем секцию [Transport], смотрим значение параметра StockPath =

В этой папке будет сформированы файлы, в том числе и файл menu.dbf. Именно этот файл используется в Shelter в менеджере мероприятий.

Запустить программу Transp32.exe, выбрать меню файл, экспорт в склад.

 

 

Подключение данного меню к Менеджеру мероприятий (ММ) в Shelter1

 

1. Сохраняем файл menu.dbf, например, в папке запуска программы Shelter.

2. Заходим на панель управления компьютера, находим там папку «Администрирование» и заходим в нее (Win32), если win64 то заходим в sysWow64 и запускаем odbc.

3. В этой папке находим «Источники данных (ОDBС)» и заходим в эту папку.

4. Переходим на закладку «Системный DSN», нажимаем на кнопку «Добавить».

5. В списке драйверов выбираем dBASE files (Microsoft Access d BASE Driver(.dbf)) выделяем его и нажимаем кнопку  «Готово».

6. Появляется окно «Установка драйвера ODBC для dBASE». В поле  «имя источника данных» прописываем  название (Например:  rkmenu)

7. Снимаем галочку «использовать текущий каталог» и выбираем каталог из списка (Выбираем тот каталог, где мы в п.1 сохранили файл menu.dbf) .

При правильном выборе каталога, в левом поле окна «выбор каталога» появится нужный нам файл menu.dbf. Нажимаем на «OK».

8. Заходим в SHETER\EXE\ и открываем events.ini. В параметре Data Source должно быть прописано то название, которое мы прописали в п.7. 

9. Запускаем программу, после создания варианта меню на закладке ресторан появится список блюд.

 

 

Выгрузка меню в DBF формат из R-Keeper 7.

 

Для выгрузки меню из R-Keeper7 необходимо скачать архив  rk7dbf_11055 с FTP

Настраиваем rk7_dbf.ini в соответствии со статьей http://support.ucs.ru/ru/node/7952. После выгрузки меню (Menu.dbf), необходимо его подключить

к менеджеру мероприятий.  

 

 

Подключение данного меню к Менеджеру мероприятий (ММ) в Shelter2.

 

1. Сохраняем файл menu.dbf, например, в папке запуска программы Shelter.

2. Заходим на панель управления компьютера, находим там папку «Администрирование» и заходим в нее (Win32), если win64 то заходим в sysWow64 и запускаем odbc.

3. В этой папке находим «Источники данных (ОDBС)» и заходим в эту папку.

4. Переходим на закладку «Системный DSN», нажимаем на кнопку «Добавить».

5. В списке драйверов выбираем dBASE files (Microsoft Access d BASE Driver(.dbf)) выделяем его и нажимаем кнопку  «Готово».

6. Появляется окно «Установка драйвера ODBC для dBASE». В поле  «имя источника данных» прописываем  название (Например:  rkmenu)

7. Снимаем галочку «использовать текущий каталог» и выбираем каталог из списка (Выбираем тот каталог, где мы в п.1 сохранили файл menu.dbf) .

При правильном выборе каталога, в левом поле окна «выбор каталога» появится нужный нам файл menu.dbf (Рис. 1). Нажимаем на «OK».

 

 

Рис. 1 – Основные настройки

 

 

8. Заходим в SHETER. Переходим в «НАСТРОКИ СИСТЕМЫ – ВНЕШНИЕ СИСТЕМЫ – R-Keeper» и в параметре «База данных» прописываем название,

которое мы прописали в п.7 (Рис. 2).

 

 

Рис. 2 - Настройки системы в Shelter

 

 

 

9. После переходим в «Менеджер мероприятий», создаем мероприятие и для создания варианта меню на закладке ресторан появится список блюд (Рис. 3).

 

 

Рис. 3 - Менеджер мероприятий с загруженным меню

 

 

ВНИМАНИЕ!!! Выгруженное меню используется для отчета "Коммерческое предложение", в котором будет отображатся все позиции с указанием цен.

 

 

 

 

 

 

 

 

 

RK7 + Shelter2 Закрытие на номер, Закрытие завтраков

 

 

 

Закрытие на номер

 

Файлы для закрытия на номер можно скачать тут

 

 

Для настройки связки RK7 + Shelter2 для закрытия заказа на баланс фолио в Shelter потребуется произвести следующие настройки:

 

1.      Станция Менеджера, добавляем на «Кассовый сервер» интерфейс «Shelter interface». (Рис. 1)

 

(Рис. 1)

 

 

2.      Настраиваем «Деньги» → «Валюты» → «Карты Отелей» → «Карта Отеля» (Рис. 2)

 

Необходимо проверить:

  •   Статус - «Активен»
  •   Не в сдаче - «V»
  •   Без сдачи - «V»
  •   Автозаполнение - «Вся сумма + подтверждение»
  •   MCR алгоритм - «9 Карта отеля»
  •   Интерфейс - «Интерфейс к Shelter»

(Рис. 2)

 

3.      Настраиваем кнопку «Оплата Картой» (Рис. 3)

   «Настройки» → «Параметры» → «Параметры рабочей станции» → «Редактирование заказа» → «Расчет\оплата заказа» → «Оплата платежной картой»

   

    В свойствах ставим:

  •     Значение - «Спрашивать»

(Рис. 3)

 

4.     Настройка «MCR алгоритма» (Рис. 4)

    «Сервис» →«Обработка сигналов устройств» →«MCR алгоритмы» →«Карта отеля»

 

    Ставим:

  • Клавиатура - «V»
  • Магнитная карта - «V»

 

 

(Рис. 4)

 

 

5. Копируем библиотеку ShelterConnect в каталог RK7\bin\win (Рис. 5)

    Файлы, которые следует перенести:

  • SCRK6530.dll
  • SCRK6.eng.msg
  • ShelterConnect.dll
  • ShelterConnect.ini
  • delphimm.dll
  • gds32.dll
  • IBUser.dll

(Рис. 5)

 

 

6.      Настраиваем ShelterConnect.ini :

 

[Database]

DBName = 172.22.10.41/3080:D:\Base\Garbage_Shelter\a.gusev\severnaya\SHELTER1.fdb - имя базы Shelter-а, с указанием полного пути

и имени компьютера, на котором установлен Shelter.

Dbuser = UCS - имя пользователя для подключения к базе Shelter-а

DBpassword = oQKH8n0BFUE= - пароль для подключения к базе Shelter-а

 

[ExternalClient]

ClientID=1 - код shelterconnect'a, если используются несколько ShelterConnect.DLL

IdentPhysType = 200 - Тип устройства

ConvertOperationNeed = 1 -  0- не использовать секцию [TranslateOperation], 1- использовать секцию

ToOEM = 0 - (0 - нет конвертирования, 1- конвертирование текстов в/из OEM/Windows (ошибки, комментарии, тексты ... )).

Должен быть 0. При переходе с Rkeeper 6, поменять на 0!

NeverRestrictTransaction = 0 (0- проверять баланс фолио перед совершением транзакции, 1- не проверять баланс перед совершением транзакции).

FolioMask = $04 - Фиксированное значение. Устанавливается UCS. Не трогать!

ShowBalance = 1  (1 — при запросе разрешенной суммы оплаты добавлять к имени клиента текущий баланс, 0 - не добавлять).

ShowBalanceFirst = 1 -  показывать баланс перед именем клиента.

ShowBalanceEverywhere = 1 - добавлять баланс к имени клиента при всех запросах (запрос разрешенной суммы и запрос информации о комнате).

UseScreenHeader0 =1

UseScreenHeader1 =1

UseScreenSequelCode =1

; BalanceBySection = 2

; BalanceBySectionKind= 0

ShowPermissibleSumAsBalance = 1

ConvertExtIDtoNumber = 1/0 - использование внешенего номера, описание ниже.

RoomInfoMode = 3

 

[GarbageCollector]

Enabled  = 0

LifeTime = 120

 

[SCRK6]

UseDetails = 0

AlcoholicOperation = 999

Messages = SCRK6.eng.msg

UseScreenHeader0 = 1

UseScreenHeader1 = 1

UseScreenSequelCode = 1

UseSuperDetails = 1

 

[PARAMS]

NoAutoDiscount = 0

Section =2 - указаывается секция, на которую будет начислена услуга

UseSection =1 - использование секций для закрытия заказа на определенную секцию

 

[TranslateOperation]

0 = 301

1 = 301

24 = 301

 

[TranslatePayment]

10001 = 501,903

 

 

Необходимые настройки shelterconnect.ini для контроля баланса секции фолио в Shelter

 

[ExternalClient]

.

ShowBalance = 1

ShowBalanceFirst = 1

ShowBalanceEverywhere = 1

BalanceBySection = 2 (где 2 номер секции фолио)

BalanceBySectionKind=0

….
 

[PARAMS]

….

Section =2 (где 2 номер секции куда будет произведена транзакция из R-keeper)

UseSection =1

….

 

Описание параметра ConvertExtIDtoNumber

 

      Данный параметр необходимо включать, если в одной базе данных shelter более 2-х гостниц и существует одинаковые номера, а также номера, включающие символы, например, номер 7 и 7в.

       После включения данного параметра в shelterconnect.ini, необходимо в "Номерной фонд" в справочниках  shelter проставить параметр "Внешний номер", после чего на кассе RK, необходимо вводить проставленный номер параметра "Внешний номер".

 

 

7. Перезапускам кассовый сервер.

8. Проверяем работу закрытия на номер

 

 

Выбираем «Карты отелей» (Рис. 6)

 

(Рис. 6)

 

 

 

Необходимо ввести номер комнаты, в которой проживает гость. (Рис. 7)

 

(Рис. 7)

 

После ввода номера должен отобразиться гость, который проживает в данном номере. (Рис. 8)

 

(Рис. 8)

 

Далее нажимаем оплата картой и подтверждаем оплату. (Рис. 9)

 

(Рис. 9)

 

Оплата должна упасть на фолио гостя (Рис. 10)

 

(Рис. 10)

 

 

 

 

Закрытие завтраков через RKeeper7 в Shelter2

 

 

1. Механизм работы

Гостя размещают в гостинице по тарифу с завтраком. Придя в ресторан на завтрак, кассир через быстрый чек, выбирает комплексное блюдо,

например «Завтрак». 

Кол-во таких блюд в заказе должно соответствовать кол-ву пришедших в данный момент людей. Нажимает на кнопку «Расчет заказа» и выбирает 

тип оплаты «Закрытие на номер». Вводит номер комнаты гостя. Или прикладывает карту-идентификатор к считывателю. На экране отображается ФИО гостя. Кассир нажимает кнопку «Оплата картой». 

На экране отображаются все положенные услуги питания на этот номер. Рис 1.

 

 

(Рис. 1)

 

Кассир отмечает, например «Завтрак» - также по кол-ву пришедших людей. Таким образом, сумма заказа становится равным нулю.

Заказ оплачивается через закрытие на номер. При этом заказ с нулевой ценой на фолио не попадет. А у требуемых услуг питания появится отметка

о отгрузки данный услуг.

 

2. Настройки Shelter

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

по кол-ву проживающих в номере людей. В настройках программы нужно включить опцию «Создавать схему питания для внешних систем».

 

«Настройки системы» «Прочие»«Создавать схему питания для внешних систем». (Рис. 2)

 

(Рис. 2)

 

В карточке поселения появится кнопка «Расписание питания». Информация в RK передается согласно данным из этой карточки.

Если в ней нет данных, то в RK7 не будет видно, что этому гостю положены услуги питания. В настройках Shelter2 нужно завести расписание питания.

В нем указать те же самые услуги питания, которые включены в тариф (данном случае завтрак 33010).

 

3. Настройка RK7

Заводится блюдо, например Завтрак. Стоимость данного блюда равняется стоимости соответствующей ему услуги питания в Shelter2. 

В менеджерской части RK7 завести скидки. Скидка должна делаться только на те блюда, которые отгружаются в завтрак (обед, ужин).

Если на завтрак разрешено отпускать только одно комплексное блюдо, то скидка работает только на него. Важно, чтобы скидка делалась многократно.

А код скидки (33010) соответствовал коду услуги Завтрак, заведенной в Шелтер. Количество скидок соответствует кол-ву услуг питания входящих

в тарифы (детский завтрак, обед, ланч..). Настройка скидок отображена рис. 3 и рис. 4.  

Настройка обеда, ужина и тд. производится идентично

 

(Рис. 3)

(Рис. 4)

 

 

Установка Shelter 2

 

 

Установка программного обеспечения Shelter 2 (ver. 2.12.120.2365 и выше)

 

Для установки программно-аппаратного комплекса Shelter 2 (ver. 2.12.120.2365 и выше) необходимо скачать с FTP установочный файл необходимой версии.

 

После получения установочного файла (setup_shelter_2.12.120.2365.exe и выше) его необходимо:

  1. Запустить файл от имени администратора;

  2. Выбрать необходимый языковой пакет;

  3. Указать каталог для установки Shelter:

 

  4. В следующем окне (Выбор компонентов), из выпадающего списка, выбрать «Установка серверной части», переместиться в конец списка

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

это выбрать «SuperServer - один процесс на все соединения» :

 

А так же выбрать разрядность «Драйвер Guardant 5.50» :

 

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

  6. После выбора всех необходимых компонентов нажать «Далее».

  7. В следующем окне предлагается выбрать папку в меню «Пуск». Можно оставить по умолчанию Shelter.

  8. В окне выбора дополнительных задач выбрать чек-бокс «Создать значок на рабочем столе».

  9. В окне «Настройка» :

Firebird: название службы

Shelter2 (можно не изменять)

Firebird: номер порта

3080 (как правило 3050 - для Firebird 1.5, а 3080 - для Firebird 2.5, так же можно указать любой свободный порт)

Сервер блокировок: IP-адрес

127.0.0.1 (IP-адрес машины, где будет установлен сервер блокировок)

Сервер блокировок: Порт

1114 (можно указать любой свободный порт)

Путь к базе данных Firebird 2.5:

Прописать путь до БД, с указанием IP-адреса и номера порта Firebird

Путь до локального сервера обновлений:

Указать путь до папки, в которую будут скачиваться файлы для обновления (на данном этапе установки не обязательно заполнять это поле)

  10. В следующем окне отображается список всех выбранных компонентов для установки, нажать «Далее».

  11. В процессе установки Shelter появится всплывающее окно с выбором языка для установки «Firebird ODBC Driver»

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

указать директорию для установки «Firebird ODBC Driver» - «Далее» - в следующем окне, в выпадающем списке, выбрать необходимый пункт меню 

(как правило, «Полная установка»), затем нажать «Далее», выбрать папку в меню «Пуск» (можно не изменять) - «Далее» -

«Установить» - выполняется процесс установки - «Далее» - снять чек-бокс с «Просмотреть Readme.txt» - «Завершить».

  12. Появится информационное окно, сообщающее о начале подготовки базы данных. Подготовка базы данных означает восстановление из резервной

копии (restore). Если, по какой-то причине, не удалось восстановить БД в момент установки Shelter, то это можно сделать после, воспользовавшись restore.bat 

  12.1. Если подготовка БД не произошла, то необходимо перейти в каталог с установленным Shelter, в папку IBDATA, найти и открыть файл restore.bat.

Проверить корректность путей до shelter.fbk и gbak.exe, после чего запустить restore.bat

База данных должна отресториться корректно и называться SHELTER.FDB

  13. В обязательном порядке настроить и проверить резервное копирование базы данных по расписанию. В противном случае, при поломке БД,

вы не сможете восстановить работоспособность объекта, путем выполнения базы данных при помощи restore.bat.

 

Рекомендации по резервному копированию :

  Резервное копирование выполняется при помощи backup.bat и планировщик заданий; Копирование необходимо выполнять, как можно чаще,

несколько раз в день; Файлы с резервными копиями БД рекомендуется держать не на системном диске, при этом параллельно копировать на сетевой диск;

ВНИМАНИЕ (!!!) Файлы, содержащие в названии «breaked» не являются корректными. Breaked может свидетельствовать о поломке БД.
ВНИМАНИЕ (!!!) Все действия, выполняемые с базой данных Shelter (backup/restore), должны производиться только от пользователя UCS в FireBird (не путать с пользователем ucs в Shelter)

  14. Переместить shelter.ini из директории :

C:\Users\%USER_NAME%\AppData\Roaming\UCS\Shelter в директорию с установленным shelter и добавить в shelter.ini следующие секции :

  [INI]

  Path=%EXE_PATH%\shelter.ini

 

  [Log]

  Path=%EXE_PATH%\Logs\

  name=

  level=100

  debuglevel=100

  fileage=0

  maxlogsize=20

 

Секция [INI] нужна для того, чтобы файл с настройками «читался» из директории, где находится shelter.exe.

Так же необходимо добавить секцию :

  [server]

  tcpport=1114

  tcphost=

 

Параметр tcpport отвечает за порт, на котором будет запущен LockServer.

Параметр tcphost не изменять.

  15. В директории Shelter создать ярлык для shelter.exe, в свойствах ярлыка, в поле «Объект» добавить следующий ключ :

        -lock_server -install

Данный ярлык необходимо запустить от имени администратора, должно появиться сообщение об успешной установке службы UCS LockServer 

(сервер блокировок) :

 

Необходимо перейти в «Службы» и запустить (если не запущено) UCS Shelter Lock Server

Проверьте наличие необходимых модулей в ключе защиты.

  16. Запустите shelter.exe

При запуске может появиться следующее окно :

 

Означает, что нет подключения к серверу блокировок. Необходимо нажать «Ок», появится следующее окно :

 

Нажимаем «Да»

В появившемся окне указать IP-адрес ПК, где запущен сервер блокировок, а так же указать порт и нажать «Проверить соединение»

Если всё указали верно, то появится следующее сообщение:

 

Нажать «Ок» - «Далее»

  17. Аналогичная проблема может возникнуть при подключении к базе данных :

 

Нажать «Да». В открывшемся окне проверить параметры подключения к БД :

 

После ввода правильных параметров подключения к БД необходимо нажать «Проверить соединение»

Если подключение к БД прошло корректно, появится соответствующее сообщение об успешном установлении соединения :

 

Нажимаем «Ок»

  18. Для установки Shelter 2 на клиентских ПК необходимо создать папку, к примеру Shelter2 и скопировать в нее следующие папки :

Dosc

FRF

IBExpert

Languages

LIB

И файлы :

shelter.exe

shelter.dll

gds32.dll

bass.dll

borlndmm.dll

libeay32.dll

ssleay32.dll

shelter.ini

shelter2.chm

Далее необходимо добавить путь до содержимого папки LIB в переменные среды :

Нажать ПКМ на «Этот компьютер» - «Свойства» - «Переменные среды» - в поле «Системные переменные» необходимо найти переменную «Path» :

 

Дважды нажать на эту переменную, в открывшемся окне нажать «Создать» :

 

В созданном поле скопировать путь до содержимого папки LIB и нажать «ОК»

После этого можно запускать Shelter

 

Так же, стоит обратить внимание на права доступа в Windows. Желательно назначить максимальные права для папки Shelter

и на сервере  и на рабочих местах.

 

 

 

Перевод даты в базе данных

ВНИМАНИЕ!!! Скрипт можно выполнять только на пустой базе, в которой нету на шахмате поселений и броней

 

В случае, если у вас в новой базе данных после установки дата на шахматке не соответствует сегодняшней, вам нужно выполнить скрипт на базе через IBExpert:

 

update DEFAULT_VALUES set strvalue = floor(d2dbl('now')) where name = 'WORKSHIFT_DATE';

update POS set shift = 1;
update POSSHIFTS set pos = 1, begindate = d2dbl('now');
update FOLIO set creationdate = d2dbl('now'), creationshift = floor(d2dbl('now'));
update WORKSHIFTS set id = d2dbl('now'), begindate = d2dbl('now') where id = (select max(id) from WORKSHIFTS);
update HOTELS set workshift = floor(d2dbl('now'));
commit;
 
 
 

Настройка автоматического резервного копирования.

Настройка автоматического резервного копирования.

Необходимость настройки автоматического резервного копирования продиктована множеством причин и является обязательным элементом работы с БД. При установке ПО, необходимо заключить с клиентом соглашение  о резервном копировании БД, которое оставляет дальнейшую ответственность за резервное копирование на заказчике.

Чтобы настроить автоматический backup БД, необходимо создать Простую Задачу в Планировщике Задач Windows (Task Scheduler).

Триггер: ежедневно.

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

Действие: запустить программу.

Указываем путь до bat-файла backup.bat, который находится в директории \Shelter\IBDATA\ 

После сохранения, зайдите в свойста задачи.

Поставьте галочки "Выполнить с наивысшими правами", "Выполнять действия для всех пользователей"

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

Рекомендуемой опцией резервного копирования является настройка копирования на внешний диск / диск удаленной машины / облачное хранилище данных (например Yandex Disk). Для этого необходимо установить Яндекс (или Google) Диск на локальную машину, настроить папку синхронизации и установить копирование архива бэкапа базы в эту папку, таким образом она будет синхронизироваться с облачным хранилищем, значительно уменьшая вероятность потери данных, необходимых для восстановления БД.

Общие требования к компьютерному обеспечению для ПО Абонемент(Shelter).

Общие требования к компьютерному обеспечению для ПО Абонемент(Shelter).

Сервер

Рекомендуется выделенный сервер. Мощность сервера и кол-во ОЗУ должны выбираться исходя из количества одновременных подключений к серверу. Чем больше рабочих мест в заведении, тем выше необходима мощность сервера. Приведем пример серверного оборудования для среднего объекта с одновременно работающими в программе 10 клиентскими приложениями.

Процессор: Intel® Xeon® Processor E3-1220 v6, оперативная память: 16 Гб. Особое внимание на скорость работы и надёжность дисковой подсистемы. Рекомендуется установка работы дисков в режиме RAID 10 (RAID 0+1), с необходимым количеством свободного места минимум 500 Гб (лучше - больше). Для работы программы свободного места на жестком диске требуется не менее 10 Гб (при установке базы данных на данной машине). Средний объем БД программы составляет до 3 Гб. Размер пустой БД при установке ~ 30 Мб.

Так же рекомендуется уделить внимание надёжности и быстродействию сетевого интерфейса на сервере (и общей инфраструктуры сети в целом).

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

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

Программа использует сервер баз данных FireBird 2.5. Рекомендуется устанавливать в варианте SuperServer или Classic. По умолчанию FireBird настраивается на TCP\IP порт 3080. Можно установить и настроить на работу FireBird и на другом незанятом порту.  Для обеспечения безопасности на сервере и клиентских рабочих местах, можно запускать любой сетевой экран, «пробросив» все необходимые для работы порты вручную.

Рекомендуется использовать бесперебойные блоки питания (UPS). Для машины, на которой установлена БД программы, наличие UPS обязательно.

Рабочее место

Минимальные требования к рабочему месту среднего фитнес клуба (гостиницы до 100 номеров):

Центральный процессор Intel Core i3 2.4 GHz или AMD эквивалент.

Оперативная память - минимум 4 Gb.

Если данное рабочее место используется как касса быстрой продажи, то рекомендуется установить компьютер с Touch-экраном. Например, вот такой моноблок HP 24-g038ur All-in-One < X0Z57EA#ACB >  (i3 6100U / 8 / 1TbSSHD / DVD-RW / WiFi / BT / Win10 / 23.8") – данная конфигурация является примером и может варьироваться от нужд и средств заказчика.

Сама СУБД FireBird в особых технических изысках не нуждается. Но, как правило, на рабочем месте установлены другое ПО (офисный пакет, браузер, почтовые программы, и т.д.), соответственно, данный компьютер должен иметь необходимое количество оперативной памяти и размер жесткого диска.

Видеокарта и монитор с поддержкой разрешения  минимум 1366х768 (рекомендовано 1920х1080).

Клавиатура, мышь.

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

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

·         На сервере (где установлена БД программы) устанавливается USBi ключ – ключ защиты.

·         Программа подразумевает подготовку различной документации (регистрационные карты гостей, печать отчетности, счетов…), соответственно необходимо предусмотреть возможность подключения принтера формата A4. Обычно современные лазерные принтеры подключаются по интерфейсу USB. Возможно использование сетевого принтера.

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

·         Идентификация гостей может осуществляться с помощью различных информационных идентификаторов (магнитная карта, бесконтактная карта, iButtons…) как правило, данные считыватели подключаются по протоколу RS232i, соответственно данный компьютер должен быть оборудован COM портом. Некоторые считыватели подключаются информационным каналом в RS232, а питание получают через PS\2i.

·         Подключение фискальных регистраторов. Большинство ФР подключаются к компьютеру по протоколу RS232. При одновременном использовании считывателя и ФР необходимо наличие как минимум 2 СОМ портов. Возможно использование PCI плат расширения.

·         В программе информацию о клиентах (анкетные данные) чаще всего вносятся вручную с использованием клавиатуры. Если подключается внешняя клавиатура к ноутбуку не имеющего PS\2 интерфейс, то клавиатура должна быть USB, а на компьютере должен быть свободный USB порт. Если оператору не удобно использовать Touch Pad ноутбука, то возможно подключить мышь, так же через USB.

·         Программа работает в полноэкранном режиме при разрешении не ниже 1280х1024. Как правило, монитор установленный на стойки администратора спрятан от глаз клиента и соответственно находится на некотором расстоянии от глаз администратора, соответственно для удобства работы диагональ монитора должна быть не менее 19 дюймов.

 

Необходимое количество COM и USB для подключения дополнительных устройств.

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

Управление лицензиями. Работа с ключом защиты Shelter

Работа с ключом защиты Shelter и Абонемент происходит одинаково и используются одни и те же утилиты. Информацию можно посмотреть тут 

Замковые системы

Настройка интеграции с замковой системой iLocks/YGS

 

 

Настройка интеграции с замковой системой  iLocks/YGS

 

Для настройки данной интеграции требуется Shelter 2 версии 2.12.122.2390 или новее.

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.

Для настройки интеграции необходимо скачать sdmiLocks.dll и архив Demo.rar с FTP

Необходимо распаковать содержимое архива в каталог с  ПО замковой системы, после чего запустить Demo.exe. В появившемся окне необходимо нажать кнопку Read.  В этот момент на энкодере должна находиться специальная AuthCard карта. Эта карта выдается сотрудниками замковой системы.

Должен появиться Авторизационный код, который необходимо будет скопировать в текстовый документ, этот код понадобится в дальнейшем.
Далее необходимо скопировать ВСЕ библиотеки из ПО замковой системы, ILockSoft.ini и скаченный ранее sdmiLocks.dll в каталог с shelter.exe
В shelter.ini необходимо добавить следующие данные :

 

[BOOT]

BOOT_1 = C:\Shelter\sdmiLocks.dll

 

[HARDWARE]

LockCard = ILOCKS

 

[hardware.ILOCKS]
DLLName = C:\Shelter\LockSDK.dll
SerialNumber = 86FF8E3201000000
;DoCheckOut - Если 1, то перед изготовлением ключа, предыдущая информация на ключе стирается. Функция CancelCard. 0 — не стирается.
DoCheckOut = 1
;DefBuilding - корпус по умолчанию — Не изменять
DefBuilding = 1
;DefFloor - эта по умолчанию — Не изменять 
DefFloor = 1
;DefOpenAllTime = 1- выпуск карт в гостиничном режиме, 0 - выпуск карт в режиме "Офис" (для закрытия замка необходимо прикладывать карту повторно)
DefOpenAllTime =1
;
MASK - маска для преобразования из 16-ной в 10-ную систему 
MASK = $FFFFFFFF
;Port=5 - номер COM-порта энкодера 
Port=5
;DoorType=5 - тип двери
DoorType=5
LOG.LEVEL = 100
LOG.DEBUGLEVEL =100
 
[ILOCKS.ERRORS]
-1000 = Не найдена DLL
-1    = No card found
-2    = No card reader found
-3    = Invalid card
-4    = Card type error
-5    = Read/write error
-6    = COM port is not opened
-7    = Finish reading data card
-8    = Invalid parameter
-9    = Invalid operation
-10   = other error
-11   = COM port is occupied
-12   = Communication error
-13   = Recover Authorization code from reader successfully!
 
 
В DLLName указать путь до библиотеки LockSDK.dll
 
В SerialNumber необходимо ввести значение из Demo.exe
 
Далее необходимо зайти в Shelter - Настройки - Справочники - Ресурсы - Номерной фонд:

 

 

 

  • Для выбранного номера установить чек-бокс "Номер (ресурс) оборудован эл.замком"
  • Указать "Номер устройства" в соответствии с нумерацией в замковой системе
 
 
 
 
 
 

Настройка интеграции с замковой системой Bonwin 2 (энкодер BWE773)

Настройка интеграции с замковой системой  Bonwin 2

Для настройки данной интеграции требуется Shelter 2 версии 2.12.122.2390 или новее.

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.
ВНИМАНИЕ!!! При работе в Shelter, ПО BonWin должно быть закрыто.

Версия замковой системы : 


Модель энкодера : 
(в диспетчере устройств энкодер определяется как "Устройство HID")

Содержимое папки замковой системы :

Для интеграции необходимо скачать sdmBonwin2.dll и скопировать в папку с shelter.exe, а так же скопировать все библиотеки и bwapireg.lic из дистрибутива замковой системы в папку Shelter 2.
В shelter.ini необходимо добавить : 

 

 

[BOOT]

BOOT_1=sdmBonwin2.dll

[HARDWARE]

LockCard=Bonwin2

[HARDWARE.Bonwin2]

HOTELCIPHER=11611951

DOCHECKOUT=1

DEFBUILDING=1

DEFFLOOR=1

LOG.NAME=BONWIN.LOG

LOG.LEVEL=100

LOG.DEBUGLEVEL=100

 

 

В параметр HOTELCIPHER добавить код отеля. Для получения кода отеля необходимо войти в BWHLM8.01.exe :
Логин : BonWin
Пароль : Tasman
И перейти по следующим вкладкам :

Запускаем Shelter, переходим в "Настройки" - "Справочники" - "Ресурсы" - "Номерной фонд" и перейти в карточку номера :

В поле "Номер устройства" необходимо указать ID (код) номера из ПО замковой системы.
Так же необходимо обратить внимание на сопоставление кодов этажей в ПО замковой системы и в Shelter. 
Код этажа в Bonwin = номер этажа в Shelter. Особенность протокола BonWin - он работает только с числами в диапазоне 0-99
С общими/внутренними дверьми, согласно протоколу, работа не реализована.

 

 

Настройка интеграции с замковой системой Vingcard через Visionline

 

 

Интеграция Shelter и VingCard через ПО Visionline 

 



Для настройки данной интеграции требуется Shelter 2 версии 2.12.122.2390 или новее.

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.

Для настройки интеграции необходимо зайти в Shelter - "Сервисы и оборудование" :

2. Выбрать драйвер VingCard :
 
3. Перейти в "Настройки" :

4. В поле "Хост" указать IP-адрес ПК, на котором запущен интерфейс Visionline, в поле "Порт" указать порт, на котором работает Visionline, в поле адрес PMS указать числовое значение из настроек замковой системы :

Настройки в Shelter :

4. После выполнения предыдущих пунктов нажать "Сохранить".

5.Далее перейти в "Настройки" - "Справочники" - "Номерной Фонд" и выбрать номер для настройки

Необходимо установить чек-бокс "Номер (ресурс) оборудован эл.замком" :

6. Для работы с дополнительными дверьми необходимо в поле "Дополнительные номера" указать номер двери (либо через запятую несколько дверей) из ПО замковой системы :
 

7. Результат выпуска ключ-карты из Shelter :

Для проверки работоспособности замковой системы можно воспользоваться тестовой утилитой от производителей замковой системы.

 

Настройка идентификации гостя в RK (Считыватель Z-2)

Карты данной замковой системы можно использовать для идентификации гостя в RK7 и закрытия на номер по выпущенной карте из shelter.

Данный механизм тестировался для карт Mifare и следующего выдаваемого трека в Putty:
 
Mifare [9A603D32] 061,24730 1K (0004,08)
 
При изготовлении ключ-карты из shelter будет прикреплен следующий идентификатор
 
В логе shelter возвращается следующий трэк 9A603D32FFFFFFFF:
 
VisionlineClient.ReadLn: CCA;EA15;RC0;SR9A603D32FFFFFFFF; 
 
Для настройки декодирования данного трека в RK необходимо  использовать следующий MCR алгоритм:
 
function MCR1000767(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
                                var RestCode: integer;
                                i, j, S: integer;
                                res1, t1, t2: int64;
                                hex, res: string;
                          begin
                                Result := false;
                                if pos('Mifare[',Parameter)>0 then
                                     begin
                                          i := pos('[',Parameter);
                                          j := pos(']',Parameter);
                                          hex := 'FFFFFFFF';
                                          Parameter := copy(Parameter,i+5, j-i-5);
                                          if length(Parameter) > 0 then begin
                                          Result := true;
                                          res:= Parameter + hex;
                                          res:= int64tostr(strtoint64('$'+res));
                                          Parameter:=res;
                                     end;
                          end;
                          end;
 
После чего можно закрывать на номер по изготовленным картам замковой системы.
 
Настройка идентификации гостя в shelter (Считыватель Z-2)
 
Для идентификации и поиска гостя в shelter необходимо настроить TcpCardreader и декодирование, версия decodecards.dll - 1.29.0.3.
 
В decodecards.ini :
                                                              [frf]
                                                              fsUnit=fsdecodecard.upas
 
                                                              [general]
                                                              usemask=1
 
                                                              [mask]
                                                              card_mif= ifare*
                                                            
                                                              [cards.Card_mif]
                                                              excludedprefix=ifare[
                                                              CardDecodeType = FastScript
                                                              code=2
 
Далее необходимо настроить скрипт декодирования, который настраивается в fsdecodecard.upas
 
                                                              function fsUnitVersion:integer;
                                                              begin
                                                              result := 1;
                                                              end;
                                                              function DecodeCard(Track:string; var Code:integer):string;
                                                              var hex, res1 : string;
                                                              begin
                                                              Code:=2; 
                                                              hex := 'FFFFFFFF';
                                                              res1:=('$'+copy(Track,5,4))+ hex;
                                                              result:=inttostr(strtoint64(res1)); 
                                                              end;
                                                              begin
                                                              end.
 
После перезапуска TcpCardReader и при считывания карты из shelter будет произведен поиск гостя по идентификатору и выведен данный гость.
 
 
 
 
 

Настройка интеграции с замковой системой MF S70

 

 

 

Настройка интеграции с замковой системой  MF S70

 

Для настройки данной интеграции требуется Shelter 2 версии 2.12.122.2390 или новее.

 

Для интеграции вам необходимы NewICdll.dll и set.ini . Данные файл необходимо скопировать в папку с shelter.exe

Скачать их можно тут

В файле set.ini, в параметре "Com=" указать номер Com-порта, к которому подключен энкодер.

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.
 

1. Для настройки интеграции необходимо зайти в Shelter - "Сервисы и оборудование" (рис.1) :

                                                                    

(рис.1)
 

2. Выбрать драйвер MF S70 (рис.2) :

(рис.2)

3. После чего необходимо нажать "Сохранить" (рис.3)

(рис.3)

4. Далее перейти в "Настройки" - "Справочники" - "Номерной Фонд" и выбрать номер для настройки (рис.4)
Необходимо установить чек-бокс "Номер (ресурс) оборудован эл.замком" и в поле "Номер устройства" указать значение параметра "Room ID" из управояющего ПО замковой системы
(MF_System.exe) - (рис.5)

 

(рис.4)

 

(рис.5)

 

ВНИМАНИЕ! У данной замковой системы есть особенность : после выпуска ключ-карты из ПО замковой системы, карта сможет открыть дверь в номер спустя какое-то время (на тестовом стенде открытие происхоидло спустя 1-2 минуты после выпуска ключ-карты). 
Так как приложение (Shelter/
MF_System.exe) с энкодером работает через COM-порт, то одновременно запустить 2 программы не получится.

Настройка интеграции с замковой системой BE-TECH

 

 

 

 

 

 

 

 

Настройка интеграции с замковой системой  BE-TECH

 

Для настройки данной интеграции требуется Shelter 2 версии 2.12.122.2390 или новее.
 

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.

 

Версия замковой системы :

Содержимое папки с замковой системой :

Модель энкодера : 

Модель замка :

Для настройки интеграции необходимо скачать sdmBeTech.dll с ftp и скопировать в папку с Shelter 2, а так же скопировать все библиотеки из дистрибутива замковой системы в папку Shelter 2.
В shelter.ini необходимо добавить :

 

[BOOT]
BOOT_1=sdmBeTech.dll

[HARDWARE]
LockCard=BE-TECH

[HARDWARE.BE-TECH]
AuthCode=    - 
В параметре прописать код отеля (system_code), который вы можете получить у установщиков Be-Tech (*6ти значный код)
DoCheckOut=1
DefBuilding=1
DefFloor=1
UseTimeDelta=0
TimeKind=0
TimeValue=3

LOG.NAME=BE-TECH.LOG
LOG.LEVEL=100
LOG.DEBUGLEVEL=100

UseTimeKind=0 (0/1 - не использовать/использовать настройку для изменения времени заезда, при записи на карту)
TimeKind=0 (0/1 часы/минуты)
TimeValue=3 (значение)

Пример 1 : 

UseTimeDelta=1

TimeKind=0

TimeValue=3

Время начала действия карты на 3 часа раньше времени в системе при записи ключ-карты.
Пример 2 : 

UseTimeDelta=1

TimeKind=1

TimeValue=15

Время начала действия карты на 15 минут раньше времени в системе при записи ключ-карты.
Пример 3 : 

UseTimeDelta=0

TimeKind=0

TimeValue=3

Время начала действий карты = время в системе при записи ключ-карты.

 

В параметре AuthCode прописать код отеля(system_code), который вы можете получить у установщиков Be-Tech (*6ти значный код)

На тестовом стенде UCS, с данной версией ПО замковой системы, параметр AuthCode оставляли пустым.

 
Запускаем Shelter, переходим в "Настройки" - "Справочники" - "Ресурсы" - "Номерной фонд" и перейти в карточку номера :

Необходимо поставить чек-бокс "Номер (ресурс) оборудовани эл.замком", в поле номер устройства указать значение параметра Guest SN из ПО замковой системы, с увеличением на 1.

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

Для работы с дополнительными замками (внутренние двери и общие) необходимо в поле "Дополнительные номера", через запятую указать общие/внутренние группы дверей.
Для примера указал 4,3 в "Дополнительные номера" - результат считывания карты :

Коды возможных ошибок : 

255: Failure
1: Open serial com port error
2: No card error
3: Card type error
4: Read card error
5: Hotel password error
6: Write card error
 

 

 

 

 

Настройка интеграции с замковой системой SALTO

 

 

 

Настройка интеграции с замковой системой  SALTO

 

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются

 

 

Данная инструкция написана для замковых систем SALTO с версией программного обеспечения HAMS 100 v6.6.0.33 (Рис 1.) и Ethernet энкодером (Рис 2.).

Версия Ethernet v 01.02, версия Reader v02.43.

 

(Рис. 1)

 

(Рис. 2)

 

 

Заведение номерного фонда в программном обеспечении SALTO и ее настройка осуществляется системным администратором гостиницы

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

 

Список доступных энкодеров и их настройки можно посмотреть в «Список периферии» на вкладке «Периферия» (Рис 3).

 

(Рис. 3)

 

 

Интеграция данной замковой системы осуществляется через PMS интерфейс, который включается в «Основные опции» на вкладке «Инструменты» (Рис. 4)

 

(Рис. 4)

 

 

 

В «Параметры связи» необходимо ввести IP адрес и номер порта компьютера, на котором будет запускаться ПО замковой системы

с включенным PMS интерфейсом.

 

Интеграция данной замковой системы с Shelter производилась на следующей версионности:

  • версия библиотеки SdmTesa.dll 1.50.0.124 (библиотеку можно скачать тут)
  • версия shelter 2.12.123.2420

 

После скачивания файлов с ftp, библиотеку SdmTesa.dll необходимо расположить в директории с shelter.exe.

 

Далее переходим в настройки Shelter, добавляем модуль для замковой системы (TESA HT28_TCP) и выставляем необходимые параметры (Рис 5).

 

(Рис. 5)

 

 

После чего, данные параметры продублируются в shelter.ini:

 

[HARDWARE.HT28-TCP]

;HOSTIP адрес, на котором запущена замковая система с включенным PMS интерфейсом

HOST=172.22.5.115

 

;PORT – порт подключения к PMS интерфейсу

PORT=5010

 

;DEVICEADDR – 1 если используется USB или RS232 энкодер, 2 если используется Ethernet энкодер.

DEVICEADDR=2

 

;USEPMSTRACK – использовать PMS трек для связки с RK и закрытия на номер. Если 0, то на вторую дорожку идентификатор записываться не будет.

Если 1, то будет.

USEPMSTRACK=1

 

;USEPMSTRACK – длина PMS трека

PMSTRACKMAXLEN=40

 

;DOCHECKOUT - Если 1, то перед изготовлением ключа, предыдущая информация на ключе стирается. Функция CancelCard. 0 — не стирается.

DOCHECKOUT=0

 

;DORESET, NEEDENQACK , ACTION - данные настройки в классической (базовой) реализации связи не менять!

DORESET=1

NEEDENQACK=1

ACTION=E

 

;DEFADDROOM2=101, DEFADDROOM3=102, DEFADDROOM4=103 - при данных настройках все ключи изготовленные из shelter будут

дополнительно открывать двери 101,102 и 103. Данные параметры можно оставить пустыми.

DEFADDROOM2=

DEFADDROOM3=

DEFADDROOM4=

IsLockMakeMultiKeys=0
; Файлы с логами будут создаваться в папке TESALogs, она создаедтся автоматически в каталоге с Shelter.

 

[BOOT]

BOOT_2=sdmTESA.dll

 

[HARDWARE]

LockCard=HT28-TCP

 

 

 

Далее заходим в shelter и для номерного фонда, в котором будут использоваться двери с электронами замками,

включаем опцию «Номер (ресурс) оборудован эл. замком». 

Для замковой системы SALTO в поле «Номер устройства» необходимо выставить значение 0. (Рис 6).

 

(Рис. 6)

 

Для выпуска карты и проверки корректности настроек переходим на шахматку и в проживающем госте нажимаем на модуль замковой системы (Рис 7),

на котором будет представлена информация по заезду/выезда гостя.

 

(Рис. 7)

 

 

 

После изготовления ключей (основного/дополнительного) в shelter, корректность записи можно проверить в программном обеспечении замковой

системы, считав его на вкладке «Ключи» (Рис 8).

 

(Рис. 8)

 

 

 

Анализ основных ошибок

 

1. Несоответствие даты/времени выезда/заезда. Возвращается ошибка Bad checkout date and/or time или ErrorMessage= -1. (Рис. 9)

 

(Рис. 9)

 

В логе замковой системы:

4 06.04.2018 12:32:26> TESA card writting failured, error=1, OS error=0; ParamStr=&CMD=ISEXTRAROOMS

 

 

2. Нет связи с PMS интерфейсом (не настроен PMS интерфейс) или не запущено программное обеспечение замковой системы.

Возвращается ошибка ErrorMessage= -10. (Рис. 10)

 

(Рис. 10)

 

В логе замковой системы:

E2 06.04.2018 12:58:52> Transmit() (Exception): Can't connect socket; WSAError=10061

w3 06.04.2018 12:58:52> DoCommand failured. Result=-10, Win32 error code=0

4 06.04.2018 12:58:52> TESA card writting failured, error=-10, OS error=0;

 

 

3. Нет связи с энкодером или неверно указан параметр DEVICEADDR. Возвращается ошибка ErrorMessage= -3. (Рис. 11)

 

(Рис. 11)

 

В логе замковой системы:

5 06.04.2018 13:06:38> DoCommand finished with Answer=NF, Full answer=NFі1і, Result=-3

4 06.04.2018 13:06:38> TESA card writting failured, error=-3, OS error=0;

 

 

Важно!!! Замечена следующая симптоматика в работе энкодера:

При установленом в shelter.ini параметре «USEPMSTRACK = 0» при записи ключа энкодер пытается записать карту 2 раза (в итоге пищит два раза):

   1. Записывает на дорожку замковой системы.

   2. Пытается записать идентификатор на вторую дорожку для закрытия на номер, но т.к. параметр отключен, записать не дает, однако энкодер все равно пищит.

 

 

 

 

 

Настройка интеграции с замковой системой ADEL (A90)

 

 

 

 

Настройка интеграции с замковой системой ADEL (A90)

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.

Для настройки интеграции необходимо скачать инсталлятор PMS v7.3 замковой системы с FTP (На случай, если специалисты замковой системы его не предоставили)

Cкачиваем сборку для интеграции Shelter с ADEL так же с FTP

 

 

 

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

 

ВНИМАНИЕ!!! Номера созданные в ПО замковой системы должны совпадать с нумерацией номерного фонда в Shelter

 

 

Важно! Для функционирования интерфейса ADEL необходимо активировать его лицензионный код. Для этого запустите программу ADEL A90.

Щелкните меню «System» и выберите «Multi-function card». (Рис. 1)

 

(Рис. 1)

 

 

В открывшемся окне щелкните вкладку «License» и введите лицензионный код интерфейса в поле «Interface License Code». (Рис. 2)

 

(Рис. 2)

 

 

 

Установка серверной и клиентской части

 

 

1. На сервер ADEL необходимо установить интерфейс взаимодействия PMS v7.3 скачанный нами раннее, запустив файл setup.exe (Рис. 3)

 

(Рис. 3)

 

 

2. У вас откроет окно инсталлятора в котором нужно выполнить следующие шаги:

  • Create Datasource (Рис. 4)

 

(Рис. 4)

 

  • Устанавливаем подключение к базе данных (Рис. 5)

 

(Рис. 5)

 

  • Build Database (В базу добавляются данные необходимые для работы интерфейса) (Рис. 6)

 

(Рис. 6)

 

 

  • Install ADEL Lock Interface Server V7.3 (Инсталляция PMS интерфейса) (Рис. 7)

 

(Рис. 7)

 

 

3. Переходим на компьютер, где установлен энкодер и скачиваем на него установщик PMS v7.3, чтобы установить клиентскую часть PMS.

  • Запускаем файл setup.exe для установки клиентского PMS интерфейса.
  • Выбираем - Install ADEL Lock Interface CLIENT V7.3 (Рис. 8)

 

(Рис. 8)

 

 

4. Далее возвращаемся на наш сервер и запускаем установленный PMS сервер. Вы увидите нечто похожее (Рис. 9)

 

(Рис. 9)

 

Внимание!!! Если в интерфейсах отображаются знаки вопросов (??) вместо слов, необходимо переименовать файлы C:\Program Files (x86)\ADEL\LockInterface\Client V7.3\CLIENT.CHS и C:\Program Files (x86)\ADEL\LockInterface\Server V7.3\NPMS.ENU в CLIENT.RUS и NPMS.RUS соответственно. 

 

5. Переходим во вкладку «System(S)» → «System Parameter», по умолчанию должны быть следующие настройки (Рис. 10):

 

(Рис. 10)

 

 

6. Далее нажимаем на кнопку «Network». (Рис. 11)

 

 

(Рис. 11)

 

 

7. У нас открываются настройки подключения энкодеров. (Рис. 12)

 

(Рис. 12)

 

8. Для добавления необходимо указать «Encoder Port»(Com-port на котором работает энкодер) и «Host Name»(Имя компьютера, на котором подключен энкодер).

 

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

 

10. Копируем в корень папки с Shelter следующие файлы:

  • ADELCARDISSUER.dll
  • ADELCARDISSUER.ini
  • ADELCARDISSUER.udl
  • COMLIB32.DLL
  • KDT43_32.DLL
  • sdmADEL.dll

 

11. После настроить ADELCARDISSUER.udl, нажимаем «Проверить соединение», если все данные введены верно,

получаем «Проверка соединения выполнена» (Рис. 13)

 

(Рис. 13)

 

 

12. В shelter.ini необходимо добавляем следующие данные:

 

[HARDWARE.ADEL-TCP]
TCPHOST=192.168.1.50   -    IP-адрес компьютера, где расположен PMS сервер
TCPPORT=1024                 -   Порт на котором работает PMS сервер
ANSWERTIMEOUT=10000
DEVICEADDR=02
PMSADDR=0
USEPMSTRACK=0
USEPMSTRACKASNAME=0
AIUSEADELIDENT=0
AIADELROOMLENGTH=3
TIMEWHENISSURECARD=1
ADOPROVIDER=SQLOLEDB.1
ADOCONNECTIONSTRING=Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=appleseed;Initial Catalog=Adel9200;Data Source=SERVER-PC\SQLEXPRESS;Connect Timeout=5
LOG.NAME=ADEL-TCP.log
LOG.LEVEL=100
LOG.DEBUGLEVEL=100
 
[HARDWARE]
LockCard=ADEL-TCP
 
[BOOT]
BOOT_1=sdmADEL.dll

 

13. Возвращаемся на комьютер, где установлен PMS сервер, открываем интерфейс и нажимаем кнопку «Rooms». (Рис. 14)

 

(Рис. 14)

 

 

14. У нас выпадет список номерного фонда. (Рис. 15)

  • Левая колонка - нумерация заведенная в замковой система.
  • Правая колонка - нумерация номерного фонда в Shelter.

 

(Рис. 15)

 

15. Теперь необходимо правую колонку привести к верному значению, которая будет соответствовать нумерации номерного фонда в Shelter.

В моем случае нумерация в Shelter трех-значная (201, 202, 203 и тд...). По этой причине мне нужно убрать лишние 3 цифры из правой колонки,

чтобы получился правильный список номеров в Shelter.

Сверху над списком номеров мне нужно выставить значение «3» и нажать кнопку «Apply», правая колонка примет трех-значную нумерацию. (Рис. 16)

 

(Рис. 16)

 

16. Далее необходимо зайти в Shelter  «Настройки»  «Справочники»  «Ресурсы»  «Номерной фонд»

Для выбранного номера установить чек-бокс «Номер (ресурс) оборудован эл.замком» (Рис. 17)

 

(Рис. 17)

 

17. Запускаем PMS клиент на рабочем месте с энкодером.

18. Выпускаем ключ в Shelter, после успешной записи мы увидим всплывающее уведомление от PMS клиента, что запись прошла успешно. (Рис. 18)

 

(Рис. 18)

 

19. Так же информация записанная на карту после записи ключа отображается в PMS клиенте и в PMS сервере. (Рис. 19, 20)

 

(Рис. 19)

(Рис. 20)

 

 

 

 

 

Настройка интеграции с замковой системой BioQin PWV

Настройка интеграции с замковой системой BioQin PWV

 

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.

 

Версия Shelter - 2.12.129.3000

Версия BioQin - v11-170829 (Natural)

 

 

Модель энкодера:

 

 

1. Скачать файлы для интеграции можно тут

2. Все файлы из архива необходимо скопировать в корень папки Shelter.

3. Далее в Shelter.ini добавляем параметры:

 

[BOOT]

BOOT_1=sdmBioqin.dll
 
[HARDWARE]
 
LockCard=BIOQIN
 
 
[HARDWARE.BIOQIN]
DefCardType=11 
DefBuilding=1
DefFloor=-1
DoCheckOut=
DeltaExpireDate=0
CardToLog=1
HotelKey=131089 - код отеля гостиницы из замковой системы. 
Log.Name=BIOQIN.LOG
Log.Level=30
Log.DebugLevel=30
ComPort=COM6 - порт, на котором работает энкодер
 
 
Код отеля можно узнать, выпустив карту из ПО BioQin и прочитав карту через тестовую утилиту, которая находится в скачанной ранее сборке (Project1_ForM1_Sector1.exe)
 
 
 
4. Далее необходимо зайти в Shelter, перейти в «Настройки» - «Справочники» - «Номерной Фонд» и выбрать номер для настройки:
 
 
 
 
  • Устанавливаем чек-бокс «Номер (ресурс) оборудован эл. замком»
  • ID корпуса в Shelter у номера должен совпадать с «Building ID» в ПО BioQin
  • Номер этажа в Shelter у номера должен совпадать с «Floor No.» в ПО BioQin
  • Номер устройства в Shelter = «Room ID» в ПО BioQin
 
 
 
 
 
 

 

Описание ошибок

 

 

ErrorMessage = -1  —  не видит карту или энкодер

 

В логе замковой системы:

 0 18.04.2019 17:19:22> TBioqin.CheckIn END: -1 Error: 
 0 18.04.2019 17:19:22> TBioqin.IssueCard END: -1
 0 18.04.2019 17:19:22> TARTBioqin.Write END Result: -1

 

 

 

Настройка интеграции с замковой системой HUNE

 

Настройка интеграции с замковой системой HUNE (SMARTLOCK)

 

       Все необходимый файлы можно скачать  с FTP

      

 

Интерфейс программы представлен на рисунке 1.

Рис 1.

      

ВНИМАНИЕ!!! Настройкой ПО HUNE инженеры технической поддержки Shelter не занимаются.

      

 

Настройку ПО замковой системы можно посмотреть в мануале Introduction of software v20.0.PDF, который находится в сборке на FTP или обратиться к представителям замковой системы.

       Содержимое каталога distr скопировать в директорию с shelter.exe

       В shelter.ini добавить:

                  [HARDWARE.SL6000RF]

                  COMPORT=5

                  CARDNO=1

                  NBLOCK=4

                  ENCRYPT=1

                  CardPass=82A094FFFFFF

                  USEPMSTRACK=0

                  SYSTEMCODE=417BB219

                  HOTELCODE=B185A030

                  DEFBUILDING=1

                  LOG.NAME=SL6000RFChina.log

                  LOG.LEVEL=100

                  LOG.DEBUGLEVEL=100

 

                  [BOOT]

                  BOOT_2=sdmSL6000RFChina.dll

 

                  [HARDWARE]

                  LockCard=SL6000RF

 

       Обязательно заполнить параметры  CardPass, SystemCode и HotelCode. Эти параметры нужно запрашивать у специалистов по замковой системе. Они уникальны для каждого объекта. ВАЖНО!!! Если параметры CardPass, SystemCode и HotelCode отсутствуют и представители замковой системы не могут предоставить данную информацию, то интеграция с данной замковой системы будет НЕВОЗМОЖНА.

       Библиотека HUNERF.dll предоставляется разработчиками замковой системы. Именно через нее в результате изготавливается замковый ключ. В комплекте поставки предоставляются несколько вариантов HUNERF.dll (Развнодности HUNERF.dll представлены в папке distr). Необходимо проверять каждую библиотеку.

       Программы Project1.exe и Project2.exe  предоставлены разработчиками замковой системы и предназначены для тестирования HUNERF.dll без Shelter.

       Если ключ изготовлен через Shelter, а потом его считывают через ПО замковой системы, то там будет показано, как будто ключ будет работать до конца 2099 года. Но на практике (на реальном замке) ключ будет работать корректно. Данный вопрос обсуждался на  трекере 0017152.

       Возможно, что ключ-карта успешно изготавливается  из Shelter, но после записи ключ-карта не открывает замок, это связано с некорректной записью номера комнаты. Нумерация комнат в замковой системе HUNE осуществляется в рамках этажа. Например, в карточке номера в Shelter стоит номер - 37, а по факту это значит седьмой номер на третьем этаже. Чтобы номер записывался  корректно на ключ-карту из Shelter, необходимо поставить галочку "Номер оборудован электронным замком" и в поле "Номер устройства" указать номер комнаты в рамках этажа, для номера 37, например, номер устройства будет 7.

       Данный функционал проверялся на версии Shelter 2.12.124.2450 и HUNE Intelligant Card Lock System 19.60-20-2

 

 

 

Настройка интеграции с замковой системой Hafele (Dialock-HMS-XML_1_3)

Настройка интеграции с замковой системой Hefele (Dialock-HMS-XML_1_3)

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.

 

Необходимо скачать архив с ftp, распаковать sdmDiaLock.dll в папку с shelter.exe
Настройки в shelter.ini :

 

[boot]
  BOOT_1 = %exepath%\sdmDiaLock.dll 

[hardware]
  LockCard = DIALOCK_TCP

[hardware.DIALOCK_TCP]
  ;Host и Port для записи уточнить у представителей замковой системы
  Host = 127.0.0.1
  Port =10815
  ;HostIn и PortIn для чтения уточнить у представителей замковой системы
  HostIn = 127.0.0.1
  PortIn = 10815
  ;CodingStation уточнить у представителей замковой системы (обычно это имя ПК)
  CodingStation = S1
  Org = SHELTER
  Log.Name = DiaLock.log
  Log.DebugLevel=100
  Log.Level=100
 

Далее, необходимо запустить Shelter и перейти в "Настройки" - "Справочники" - "Номерной Фонд" и выбрать номер для настройки

Необходимо установить чек-бокс "Номер (ресурс) оборудован эл.замком" :


 

 

Настройка интеграции с замковой системой INHOVA

 

 

 

Настройка интеграции с замковой системой  INHOVA (PMS Server ver. 6.01)

 

Актуальную сборку можно скачать тут

 

 

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.

 

 

 

Для настройки связи гостиничной системы Shelter 2 с замковой системой INHOVA необходимо:

 

1. Настроить локальный РС (InhovaData.exe Настройки Локальный РС) (Рис. 1)

 

(Рис. 1)

 

Так же в закладке «Операторы» необходимо создать оператора с именем «UCS» и дать ему все права.

Обязательно! Необходимо для успешной авторизации при обращении к замковой системе.

 

2. Настроить PMS интерфейс. Обратите внимание, чтобы были установлены чек-боксы (Рис. 2):

 

(Рис. 2)

 

 

3. Запустить приложение «PMSServer.exe» и после запуска остановить его нажав на кнопку «Stop Comms» (Рис. 3):

 

(Рис. 3)

 

 

4. Далее открыть закладку Server Setup и настроить параметры PMS сервера (Рис. 4).

 

 

(Рис. 4)

 

 

5. Копируем в папку с Shelter файл sdmTesa.dll

6. Далее в Shelter.ini прописываем следующие настройки:

 

[HARDWARE.INHOVA-TCP]
HOST=127.0.0.1
PORT=7780
DEVICEADDR=1
OPERATORNAME=UCS
USEPMSTRACK=1
PMSTRACKMAXLEN=40
DOCHECKOUT=1
DORESET=0
NEEDENQACK=1
ACTION=EF
LOG.NAME=InHovaTCP.log
LOG.LEVEL=100
LOG.DEBUGLEVEL=100
IsLockMakeMultiKeys=0

[BOOT]
BOOT_1=sdmTESA.dll

[HARDWARE]
LockCard=INHOVA-TCP

 

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

включаем опцию «Номер (ресурс) оборудован эл. замком» и в поле «Номер устройства» указываем имя номера из номерного фонда в замковом ПО. (Рис. 5)

 

 

 

(Рис. 5)

 

 

8. ID для поля «Номер устройства» мы берем из номерного фонда в замковом ПО (Имя комнаты - Name). (Рис. 6)

 

(Рис. 6)

 

 

9. Для выпуска карты и проверки корректности настроек переходим на шахматку и в проживающем госте нажимаем на модуль замковой системы (Рис. 6),

на котором будет представлена информация по заезду/выезда гостя.

 

(Рис. 6)

 

 

После изготовления ключей (основного/дополнительного) в Shelter, корректность записи можно проверить считав ключ в программном обеспечении замковой системы.

 

 

Настройка интеграции с замковой системой Iron Logic

 

 

 

 

 

Настройка интеграции с замковой системой Iron Logic

Для настройки данной интеграции требуется Shelter 2 версии 2.12.122.2390 или новее.

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.

Shelter 2 с данной замковой системой работает через PMS-интерфейс (IronSDK.exe) версия sdkhotel_v_5_1


ВНИМАНИЕ!!!
IronSDK.exe должен быть постоянно запущен. 

Скачать актуальную библиотеку и настройки можно тут

В shelter.ini :
 

[HARDWARE.IRONLOGIC-TCP]
;
HOST - IP адрес ПК, где запущен IronSDK.exe (из настроек PMS-интерфейса)
HOST=127.0.0.1
;PORT - порт, на котором работает IronSDK.exe  (из настроек PMS-интерфейса) 
PORT=9999
;
DEVICEADDR - номер станции (из настроек PMS-интерфейса)
DEVICEADDR=1
;OPERATORNAME - Не изменять
OPERATORNAME=
;USEPMSTRACK - Использовать ли PMS-трек
USEPMSTRACK=1
;PMSMaskDDDD - Не изменять
PMSMaskDDDD = ABCD
;PMSTRACKMAXLEN - Не изменять
PMSTRACKMAXLEN=40
;DoCheckOut - Если 1, то перед изготовлением ключа, предыдущая информация на ключе стирается. Функция CancelCard. 0 — не стирается.
DoCheckOut=1
;DoReset - Не изменять
DoReset = 1
;NEEDENQACK - Не изменять
NEEDENQACK=1
;ACTION - Не изменять
ACTION=RP
;ISLOCKMAKEMULTIKEYS Не изменять
ISLOCKMAKEMULTIKEYS=0
; Файлы с логами будут создаваться в папке TESALogs, она создаедтся автоматически в каталоге с Shelter.

[IRONLOGIC-TCP.ERRORS]
   0 = OK
  -2 = Нет ответа от устройства
  -3 = Неожиданный ответ на команду
 -10 = Коммуникационная ошибка(порт закрыт; IP-адрес или порт не тот)
-100 = Неизвестная ошибка
 

[BOOT]

BOOT_3=sdmTESA.dll

 
[HARDWARE]
LockCard=IRONLOGIC-TCP
Для прикрепления "читаемого" идентификатора, необходимо в shelter.ini изменить значение параметра posprefix на 0 :

[defaults.over]
posprefix=0
pospostfix=
posguestidentsize=

Настройки (примерные) PMS-интерфейса : 

 

Далее заходим в shelter и для номерного фонда, в котором будут использоваться двери с электронами замками,
включаем опцию «Номер (ресурс) оборудован эл. замком»
В поле "Дополнительные номера" указать через запятую номера общих дверей от 1-го до 8-ми.
Особенность данной замковой системы в том, что она не поддерживает более 8 общих дверей для одного номера 

 

Выпуск ключ-карты : 

Результат считывания из ПО замковой системы : 


 

ВАЖНО!!! Параметр "Версия" автоматически переобновляется в замке после каждого прикладывания карты (новой)
Если из ПО замковой системы выпустить ключ-карту, после приложить эту карту к замку, то параметр "Версия" увеличится на единицу.
Пример : 
Изначально параметр "Версия" = 1
Выпускаем ключ-карту из Shelter, прикладываем к замку, версия изменяется на единицу
И так каждый последующий раз.
Но если выпустить ключ-карту из ПО замковой системы, приложить к замку, после чего выпустить ключ-карту из Shelter и приложить ее к замку - дверь в номер не откроется, так как разница версии в замке и в выпущенной ключ-картой не должна превышать 1.

ВАЖНО!!! При выпуске дополнительной ключ-карты (если для этого номера доп.карта была выпущена уже ранее), можем получить ошибку -3 :

В логе событий PMS-интерфейса фигурирует следующая ошибка :
"Приняли команду: CG ; Обрабатываем... Эта карта уже есть в списке копий
"

В логе от sdmTesa.dll видим следующую ошибку : 

14:15:51| DONE      | TTesa.DoCommand Result: -3
14:15:51| DONE      | TIronLogicInhovaTCP.CheckIn: Answer=E9; AnswerStr=іE9іі; (PMSTrackNo=00004732; PMSTrackNo=F0127C)
14:15:51| DONE      | TTesa.Write CMD: WRITE Result: -3 OS Error: Операция успешно завершена ParamStr: &CheckinDate=20180123&CheckinTime=2359&CheckoutDate=20180717&CheckoutTime=0800&Keys=1&GuestID=16673&JOINER=1&BUILDID=1&LOCKADDROOMS=1,3,2,6,5,8,7,4&ROOM=101&ROOMNUMBER=101&LOCKID=0&LOCKPASSID=&BUILDCODE=ГОСТИНИЦА&FLOOR=1&GUESTNAME=Суханов Иван Дмитриевич&FOLIOID=12156&CLAIMID=9801&DIARYID=0&PMSTRACK=000004732&ERROR=E9
 
 
В описании протокола ошибка E9 :

Замечание: SDK хранит информацию о всех экземплярах карт, для которых сделаны копии. Если попытаться сделать копию той карты, которая уже была добавлена в список актуальных копий карт для указанной двери, то повторного перезаписывания карты сделано не будет, а SDK выдаст в пакете ответа ошибку с кодом "E9". 

Так же, можем получить ошибку -10 :

В логе от sdmTesa.dll :
 
TTesa.Transmit.XOpenLink Error: Can't connect socket; WSAError=10061
 
Необходимо проверить доступность и работоспособность PMS-интерфейса
 

 

Настройка интеграции с замковой системой OZLocks

 

 

 

Настройка интеграции с замковой системой  OzLocks
Для настройки данной интеграции требуется Shelter 2 версии 2.12.129.300 или новее.
Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.
Версия замковой системы :


Модель энкодера : 


Для настройки интеграции необходимо скачать sdmOzLocks.dll с ftp и скопировать в папку с Shelter 2, а так же скопировать все библиотеки из дистрибутива замковой системы в папку Shelter 2.

В shelter.ini необходимо добавить :

 

[BOOT]
BOOT_1=sdmOZLocks.dll
 
[HARDWARE]
LockCard=OZLOCKS
 
[hardware.OZLOCKS]
DefBuilding=1
DefFloor=1
DoCheckOut=0
DeltaExpireDate=0
Log.Name=OZLOCKS.LOG
Log.Level=30
Log.DebugLevel=30
;значение HotelKey для каждой гостиницы индивидуально, берётся значение Hotel_Global_ID из таблицы hotels MSSQL базы замковой системы, подробности можно уточнить у представителей замковой системы
HotelKey=
OpenLocked - открывать защёлку 1-да/0-нет
OpenLocked=1
Запускаем Shelter, переходим в "Настройки" - "Справочники" - "Ресурсы" - "Номерной фонд" и перейти в карточку номера :


Необходимо поставить чек-бокс "Номер (ресурс) оборудовани эл.замком", в поле "Номер устройства", а так же указать номер двери из ПО замковой системы.
ВНИМАНИЕ!!! Номера зданий и этажей в Shelter и в OzLocks должны совпадать!

Для идентификации гостя через систему R_Keeper при помощи считывателя Z-2 USB можно использовать следующий MCR-алгоритм :
 

function MCR1000672(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
var RestCode: integer;
    i, j, S: integer;
    res1, t1, t2: int64;
    hex, resulttext: string;
begin
  Result := false;
  if pos('Mifare[',Parameter)>0 then
  begin
    i := pos('[',Parameter);
    j := pos(']',Parameter);
    Parameter := copy(Parameter,i+1, j-i-1);
    if length(Parameter) > 0 then begin
      Result := true;
      res1:=strtoint64('$'+Parameter);
      Parameter:= Int64ToStr(Res1 and $FFFFFFFF );        
    end;
  end;    

 

end;

Настройка интеграции с замковой системой Orbita

 

Настройка интеграции с замковой системой Orbita.
Версия Shelter - 2.12.124.2450
Версия Orbita -  
LockingSystem4.9
Версия Windows - Windows 10

Модель энкодера : 

Скачать дистрибутив можно тут

Так же, необходимо скопировать CLock.dll и dcrf32.dll в папку с sdmOrbita.dll

Эти библиотеки можно запросить у представителей замковой системы, либо скачать тут

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.

Для дальнейшей настройки, в shelter.ini необходимо добавить : 

[BOOT]
BOOT_1=sdmOrbita.dll
 
[HARDWARE]
LockCard=ORBITA
 
[hardware.ORBITA]
AuthCode=124536
DefCardType=11
DefBuilding=1
DefFloor=-1
DoCheckOut=0
DeltaExpireDate=0
Log.Name=ORBITA.LOG
Log.Level=30
Log.DebugLevel=30
ConvertExtIDtoNumber=1
 
[ORBITA.ERRORS]
-1=Orbita Lock. Interface error
-2=Orbita Lock. Connect encoder failed
-3=Orbita Lock. Register encoder failed
-4=Orbita Lock. Buzzer mute
-5=Orbita Lock. Not supported card type
-6=Orbita Lock. Wrong card password
-7=Orbita Lock. Wrong supplier password
-8=Orbita Lock. Wrong card type
-9=Orbita Lock. Wrong authorization code
19000=Orbita Lock. Exception on connect
19001=Orbita Lock. Exception on read
19002=Orbita Lock. Exception on disconnect
19=Orbita Lock. Exception on connect
19 =Orbita Lock. Exception on connect

Для того, чтобы получить значение параметра AuthCode, необходимо в ПО LockSystem (ORBITA) перейти во вкладку "Функции карты" и нажать кнопку "Пароль" :

Значение в поле "Пароль Отеля" необходимо скопировать в AuthCode.
Далее необходимо зайти в Shelter и 
перейти в "Настройки" - "Справочники" - "Номерной Фонд" и выбрать номер для настройки
Необходимо установить чек-бокс "Номер (ресурс) оборудован эл.замком" :


Если же в Shelter номера комнат двухзначные, а в ПО LockSystem - трехзначные, то в поле "Номер устройства" необходимо прописать номер комнаты из ПО замковой системы.
В таком случае на карту будет записываться номер комнаты из поля "Номер устройства".

ВНИМАНИЕ! Для корректной работы при выпуске ключ-карты из Shelter, ПО LockSystem должно быть закрыто.

Версия Shelter - 2.12.127.2750
Версия Orbita -  
LockingSystem 5.3.6
Версия Windows - Windows 10

Модель энкодера указана вначале статьи.
Скачать дистрибутив можно тут

Настройки для данной версии ПО замковой системы остались прежними, за исключение того, что добавилась возможность записи общих дверей на карту. Общие двери указываются в карточке номера (поле "Дополнительные номера"), через запятую, от 1-го до 8-ми.

 

Настройка идентификации гостя в RK (Считыватель Z-2)

Карты данной замковой системы можно использовать для идентификации гостя в RK7 и закрытия на номер по выпущенной карте из shelter.

Данный механизм тестировался для карт Mifare и следующего выдаваемого трека в Putty:
 
Mifare [9A603D32] 061,24730 1K (0004,08)
 
При изготовлении ключ-карты из shelter будет прикреплен следующий идентификатор
Для настройки декодирования данного трека в RK необходимо  использовать следующий MCR алгоритм:
 
                                function MCR118(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
                                      var RestCode: integer;
                                      i, j, S: integer;
                                      res1, t1, t2: int64;
                                      hex, resulttext: string;
                                begin
                                      Result := false;
                                      if pos('Mifare[',Parameter)>0 then
                                           begin
                                               i := pos('[',Parameter);
                                               j := pos(']',Parameter);
                                               Parameter := copy(Parameter,i+1, j-i-1);
                                               if length(Parameter) > 0 then
                                                      begin
                                               Result := true;
                                               res1:=strtoint64('$'+Parameter);
                                               Parameter:= Int64ToStr(Res1 and $FFFFFFFF );        
                                                      end;
                                           end;    
                                end;
     
 После чего можно закрывать на номер по изготовленным картам замковой системы.
 
Настройка идентификации гостя в shelter (Считыватель Z-2)
 
Для идентификации и поиска гостя в shelter необходимо настроить TcpCardreader и декодирование солгасно мануалу http://support.ucs.ru/ru/node/9093
 
После перезапуска TcpCardReader и при считывания карты из shelter будет произведен поиск гостя по идентификатору и выведен данный гость.

Настройка интеграции с замковой системой Xeeder

 

Настройка интеграции с замковой системой  Xeeder (V5.865-ILockSoft(Автономки), TechCrePower)

Для настройки данной интеграции требуется Shelter 2 версии 2.12.122.2390 или новее.

Версия ПО замковой системы : 

С версией 5.8.0.0 итеграция будет работать, если взять все библиотеки из дистрибутива версии 5.8.6.4
 

Необходимо скопировать все библиотеки и ILockSoft.ini из каталога с замковой системой в каталог с Shelter.exe

Сотрудники технической поддержки Shelter настройкой замковой системы не занимаются.
 

1. Для настройки интеграции необходимо зайти в Shelter - "Сервисы и оборудование" (рис.1) :

(рис.1)

2. Выбрать драйвер Xeeder (рис.2) :

(рис.2)
3. Далее перейти во вкладку "Настройка" (рис.3) :

(рис.3)

В параметре Код отеля указать значение параметра Sn из файла ILockSoft.ini

Остальные настройки можно оставить как на скриншоте. После чего нажать "Сохранить"

4. Далее нажать "Сохранить" (рис.4)

(рис.4)

5. Далее перейти в "Настройки" - "Справочники" - "Номерной Фонд" и выбрать номер для настройки (рис.5). Необходимо установить чек-бокс "Номер (ресурс) оборудован эл.замком" :

(рис.5)

Фискальные регистраторы

Подключение ФР СПАРК-115Ф через Универсальный драйвер

 

 

 

Интеграция ФР СПАРК-115Ф с Shelter 2 

Для данного вида подключения требуется Shelter 2 версии 2.12.123.2420 или новее.

Интеграция реализована при помощи FRClient2.exe и sxrServerProxy.exe, через универсальный драйвер fpSpark54.dll из дистрибутива ПО Абонемент.
Информация по настройке данных утилит :

Подключение 1 ФР на несколько рабочих мест через УДФР
 

Универсальный драйвер ФР (УДФР) в Абонемент

Работа Абонемент с налоговыми ставками и кассовыми секциями с различными ФР 

Со стороны Shelter необходимо выполнить следующую настройку :
Из дистрибутива Абонемента скопировать библиотеку sdmTcpRpcFiscReg.dll (..\FullVersionVer131\HW\POS\Uxml-rpc\Uxml-rpc\UCS
) в каталог с Shelter.exe
Запустить Shelter и перейти в список доступных модулей, выбрать и добавить XML-RPC(TCP) fiscal register :


 

Адрес 127.0.0.1 Указать IP-адрес ПК, где запущена sxrServerProxy.exe
Порт  7788 Указать порт ПК, где запущена sxrServerProxy.exe
ClientName Client_1 Указать уникальное имя клиента
ProxyFRClient UCS_FR Указать значение ClientName из sxrfrClient.ini

 

 Необходимо соблюдать последовательность запуска утилит для подключения данного ФР : 
1. SparkSrv.exe (утилита от производителя ФР)

2. srxServerProxy.exe

3. srxFRClient2.exe

4. Shelter.exe

Специфика работы данного ФР :

Всегда должна быть запущена утилита SparkSrv.exe

В закрытой смене ФР не дает распечатать Х-отчет

ФР не позволяет сделать возврат при закрытой смене, или если не хватает наличности в кассе. Так же это касается и возврата электронных денег.

При налоговой ставке 18%, ФР начисляет НДС, а не вычетает, аналогично с 10% НДС.
 

 

 

 

Интеграция ФР СПАРК-115Ф с Shelter 2 через Универсальный драйвер ФР 

 

 

 

Для интеграции ФР Спарк 115Ф (ФЗ54) с Shelter 2 потребуется добавить в каталог с Shelter.exe следующие файлы: fpSpark54.dll, fpSpark54.cfg.xml, SparkSrv.exe, config.ini, Winspark.exe. Скачать файлы можно по ссылке.

 

1. Необходимо открыть config.ini и настроить следующие параметры:

[Server]
Port = 7200 
Serial = COM9 - установить нужный ком-порт.
BaudRate = 57600 - выставить необходимую скорость, если она отличается от указанной.
Timeout = 5000
SharePort = 1
 
 
2. После нужно запустить утилиту SparkSrv.exe
 
 
3. Запускаем Shelter и переходим в Настройки → Сервисы и Оборудование
   Добавляем фискальный регистратор по аналогии:

 

 

 

После успешного добавления ФР в Shelter в утилите SparkSrv.exe вы увидите сообщение:

 

 

Подключение ФР Атол через Универсальный драйвер

 

 

 

 

 

 

 

 

 

 

 

Интеграция ФР Атол с Shelter 2

 

Для данного вида подключения требуется Shelter 2 версии 2.12.121.2375 или новее.

 

Для интеграции вам необходимы fpAtol54.dll и fpAtol54.cfg. Скачать их можно тут

 

 

Настройка фискального регистратора

 

Вам необходимо убедиться, что Ваш фискальный регистратор работает в протоколе 2.4.

    ВНИМАНИЕ! Фискальный регистратор в протоколе 3.0 в Shelter работать не будет. Вам нужно перевести его в протокол 2.4

  • Открываем тест драйвера фискального регистратора и заходим в «Свойства». (Рис. 1)
  • Выбираем Вашу модель ФР и порт на котором установлен фискальный регистратор, после нажимаете «Проверка связи». Если связь установлена переходим в «Параметры ККТ».

(Рис. 1)

 

  • Далее раскрываем вкладку «Устройства» и в строке Протокол работы проверяем в каком протоколе находится наш ФР. Если протокол оказывается 3.0, то меняем на 2.4 и нажимаем «ОК». (Рис. 2), после чего необходимо перезагрузить ФР.

(Рис. 2)

 

Настройка Shelter 2

 

1. Необходимо файлы fpAtol54.dll и fpAtol54.cfg положить в папку с Shelter 2. Скачать можно тут

2. Далее открываем Shelter 2 и переходим в «Настройки» → «Сервисы и оборудование» и нажимаем кнопку «Добавить». (Рис. 3)

 

(Рис. 3)

 

3. Откроется окно в котором сначала нам нужно выбрать «Драйвер» (Рис. 4)

 

(Рис. 4)

 

4. В открывшемся окне выбираем «Фискальный Регистратор»  «Универсальный драйвер» и нажимаем «Выбрать» (Рис. 5)

 

(Рис. 5)

 

5. После нам необходимо открыть «Настройка» (Рис. 6)

 

 

(Рис. 6)

 

 

6. Сначала нужно указать путь к библиотеке fpAtol54.dll. Для этого нажимаем кнопку в поле «Путь к библиотеке» и указываем нашу библиотеку,

    которая расположена в папке с Shelter 2. (Рис. 7)

 

(Рис. 7)

 

7. Теперь необходимо настроить фискальный регистратор. Нужно настроить следующие поля (Рис. 8) :

  • Операция возврата - «Deletion» (Return - расход, Deletion - приход)
  • Информация о кассире - «ФИО» (Можно оставить "Логин", если хотите, чтобы в чеке указывался логин под которым зашли в Shelter).
  • Уровень логирования - «5» (Данный параметр увеличивает логирование и передает больше информации в логах, что позволяет быстрее найти причину ошибок в фискальнике, в случае возникновения проблем).
  • Название порта - «COM*» (указываем ту цифру порта, на котором у вас работает фискальный регистратор).

(Рис. 8)

 

8. Следующим шагом нужно будет выбрать киоск, который будет использоваться с настраиваемым фискальным регистратором (Рис. 9)

 

(Рис. 9)

 

После вышеуказанных настроек фискальный регистратор должен работать корректно. Один из способов проверить работу попробовать сделать Х-Отчет.

 

 

Фискальные налоги

 

Для того, чтобы настроить фискальные налоги в Shelter 2 необходимо сделать следующее:

   1. Для начала заведем фискальные налоги в самом Shelter 2. Заходим в «Настройки»  «Справочники»  «Налоги»  «Фиск. налоги». (Рис. 10)

 

(Рис. 10)

 

 

   2. Чтобы завести фискальные налоги в Shelter 2 нужно узнать сопоставление кодов фискальных налогов, которые заведены в самом

       фискальном регистраторе. Для этого мы запускаем «Тест Драйвер ККМ». Переходим в «Настройка свойств».  В открывшемся окне нам следует

       указать COM-порт на котором установлен фискальный регистратор и его модель, после нажимаем «Параметры оборудования». (Рис. 11)

 

(Рис. 11)

 

     3. Открываем вкладку «Налоги». (Рис. 12)

 

(Рис. 12)

 

         Тут мы увидим два столбца, где левый столбец код налога, правый столбец ставка налога. 

 

   В моем случае это:

  • Код 1 - 18%
  • Код 2 - 10%
  • Код 3 - 18/118
  • Код 4 - 10/110
  • Код 5 - 0%

     4. Например, нам необходимо использовать несколько фискальных налогов в Shelter 2, которые будут отображаться в чеке, возьмем - 18% и 0%

         В Shelter добавляем фискальный налог через кнопку «Добавить». (Рис. 13)

 

(Рис. 13)

 

 

     5. Откроется окно настройки фискального налога, добавим налог 18%, для этого нам нужно заполнить следующие поля: (Рис. 14)

  • Код (можно указать любое значение, которое еще не используется в Shelter)
  • Наименование (влияет на то, как будет отображаться налог в Shelter)
  • Код налога в фискальном регистраторе (необходимо указать код налога из тест драйвера фиск. регистратора (Рис. 12) в моем случае это код -1)
  • Ставка (тут указываем сколько процентов налог)
  • Включение в стоимость - с версии 2.12.126.2700 («Включен в стоимость» - НДС входит в стоимость услуги, «Не включен в стоимость» - НДС начисляется поверх стоимости услуги)

(Рис. 14)

 

     Аналогично заводим налог для 0%, только теперь «код налога в фиск. регистраторе» будет 5. (Рис. 15)

 

(Рис. 15)

 

     6. Теперь заведенные фискальные налоги необходимо прикрепить к услугам,  на которых нам нужно использовать данные налоги.

         Для этого нам следует зайти в «Настройки»  «Справочники»  «Услуги и оплаты»  «Услуги». Находим нужную нам услугу 

         выбираем ее и нажимаем «Изменить». (Рис. 16)

 

(Рис. 16)

 

 

     7. Откроется окно настройки услуги в котором нам необходимо раскрыть вкладку «Налоги», выбрать «Фиск. налоги» и указать нужный нам 

         фискальный налог из заведенных нами ранее, после нажимаем «Сохранить». (Рис. 17)

 

(Рис. 17)

 

 

     8. Можно увидеть отображение фискального налога на услуге (Рис. 18)

 

(Рис. 18)

 

 

После произведенных настроек, если провести оплату по услуге, в которой вы указали фискальный налог, НДС будет отображен в чеке.

 

 

НДС при авансовой оплате

 

 

Если вам требуется отображать НДС при авансовой оплате, то нужно сделать следующее:

 

 1. Перейти в «Настройки» → «Сервисы и оборудование» и открыть настройки фискального регистратора. (Рис. 19)

 

(Рис. 19)

 

 

 2. В поле «Код налога авансовой операции» указываем код налога из таблицы в тест драйвере (Рис. 12),

     который вы хотите отображать в авансовой оплате и нажимаем «Сохранить». (Рис. 20)

 

(Рис. 20)

 

 

     После произведенных настроек при авансовой оплате в чеке будет отображен НДС, код которого вы указали при настройке.

 

Фискальные налоги (Новая реализация)

 

Для новой реализации фискальных налогов необходим Shelter версии 2.12.125.2480 или новее.

 

Ранее фискальные налоги заводились так, что код налога прописывался в «Справочники»  «Налоги»  «Фиск. налоги», но при такой реализации к базе 

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

была реализована ко всем подключеным ФР.

На текущий момент реализация такова, что теперь код фискального налога прописывается не в «Справочники»  «Налоги»  «Фиск. налоги», а

непосредственно в самих настройках ФР в «Сервисы и оборудование», такой функционал позволяет подключать к Shelter разные ФР у которых

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

 

Выглядит это следующим образом:

1. Добавляем фискальные налоги в «Справочники»  «Налоги»  «Фиск. налоги» (Рис. 21):

 

(Рис. 21)

 

Можно увидеть, что теперь отсутствует поле «Код налога в фиск. регистраторе» о чем говорилось ранее.

 

2. После того как мы добавили нужное нам количество налогов переходим в «Настройки»  «Сервисы и оборудование» и открываем ранее 

заведенный нами фискальный регистратор.

Мы можем увидеть, что фискальные налоги ранее заведенные в справочниках перенеслись в фискальный регистратор (Рис. 22):

 

(Рис. 22)

 

Теперь осталось проставить в колонке «Код налога в фиск. регистраторе» нужные нам коды налогов, которые соответствуют данному фискальному регистратору.

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

налоговой таблице.

При такой реализации, если закрепить за услугой налоговую ставку и оплачивать ее с разных ФР у которых отличаются таблицы налогов конфликтов

больше возникать не будет.

 

 

Внимание! При обновлении программы на версию 2.12.125.2480 или новее все фискальные налоги(по пути: «Справочники» → «Налоги» → «Фиск. налоги»)

добавляются во все фискальные регистраторы с теми кодами налогов («Код налога в фиск. регистраторе»), которые у них были.

 

 

Настройка системы налогообложения (СНО)

 

ВНИМАНИЕ!!! Данный функционал доступен только с версии 2.12.125.2480 или новее

 

 

Ранее система налогообложения(СНО) указывалась только в настройках фискального регистратора в «Сервисы и оборудование» и указанный СНО

присваивался ко всем услугам в Shelter.

С версии 2.12.125.2480 реализован функционал, который позволяет присваивать к каждой услуге свой СНО. В итоге мы можем пробивать услуги с

разными системами налогообложения на одном фискальном регистраторе. Это работает следующим образом:

1. Заходим в «Справочники» → «Услуги и оплаты» → «Услуги» и открываем нужную нам услугу. Нас интересует вкладка «Налоги», раскрываем ее и видим

поле «Тип налогообложения»(Рис. 23):

 

(Рис. 23)

 

 

2. Щелкаем по стрелочке справа от этого поля и получаем выпадающий список, выбираем нужную нам СНО (Рис. 24):

 

(Рис. 24)

 

Таким образом мы можем указать для каждой услуги разный СНО.

 

Внимание! На текущий момент реализована оплата услуг с одинаковым СНО за раз. Например, есть две услуги: "Халат" (УСН(доход)) и "Тапочки"(ЕНВД).

Сделать одновременно оплату по этим двум услугам не получится, мы получим окно с информацией о том, что это невозможно (Рис. 25):

 

(Рис. 25)

 

Подведем итог, на текущий момент возможно закреплять за каждой услугой свой СНО, что в свою очередь позволяет на одном фискальном

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

 

!ВНИМАНИЕ! Реализация по оплате услуг с разным СНО в разрезе одной оплаты будет реализовано позже в будущих версиях.

 

 

 

 

 

Сопоставление типа оплаты

ВНИМАНИЕ!!! Данный функционал доступен только с версии 2.12.126.2700 или новее

 

В сервисах и оборудовании в настройках фискального регистратора есть теперь таблица кодов типа оплаты фискального регистратора (Рис. 26):

 

(Рис. 26)

 

Щелкаем правой кнопкой мыши в обозначенном на скриншоте поле и нажимаем «Добавить», откроется окно для заведения типа оплаты (Рис. 27):

 

(Рис. 27)

 

В данном окне находится всего два поля для настройки: 

  • Категория - выбирается категория оплаты (наличная, кредитная, безналичная)
  • Код типа оплаты в фискальном регистраторе - указывается номер типа оплаты из фискального регистратора, который соответствует выбранной вами выше категории.

 

(Рис. 28)

 

 

Данный код берётся из настроек фискального регистратора (типы оплат), можно найти через тест драйвера (Рис. 29) :

 

(Рис. 29)

 



 

Сопоставление кодов типов оплат необходимо для корректной работы двух и более ФР, если последовательность кодов типов оплат у этих ФР отличаются.

 

 

 

Визуализация ошибок

 

Для визуализации ошибок ФР Атол необходимо скачать файл msg_rus.ini, который находится на FTP. После скачивания данного файла размещаете его

в любое удобное место (например в корень папки Shelter2). Далее запускаем Shelter и переходим в «Настройки» → «Сервисы и оборудование» 

и открываем настройки ФР. В настройках в поле «Файл сообщений» нужно указать путь до файла msg_rus.ini (Рис. 23) и так же в поле «Секция» написать - ATOL

ВНИМАНИЕ!!! Если указать путь до msg_rus.ini, но не указать название «ATOL» в поле «Секция», визуализация работать не будет!

 

 

(Рис. 29)

 

 

 

Подключение ФР Штрих-М через Универсальный драйвер

 

 

 

 

Интеграция ФР Штрих-М с Shelter 2

 

Для данного вида подключения требуется Shelter 2 версии 2.12.121.2375 или новее.

 

Для интеграции вам необходимы fpShtr54.dll и fpShtr54.cfg. Скачать их можно тут

 

 

 

Настройка Shelter 2

 

1. Необходимо файлы  fpShtr54.dll и fpShtr54.cfg положить в папку с Shelter 2.

2. Далее открываем Shelter 2 и переходим в «Настройки» «Сервисы и оборудование» и нажимаем кнопку «Добавить». (Рис. 1)

 

(Рис. 1)

 

 

3. Откроется окно в котором сначала нам нужно выбрать «Драйвер» (Рис. 2)

 

(Рис. 2)

 

 

4. В открывшемся окне выбираем «Фискальный Регистратор» - «Универсальный драйвер» и нажимаем «Выбрать» (Рис. 3)

 

(Рис. 3)

 

 

5. После нам необходимо открыть «Настройка» (Рис. 4)

 

(Рис. 4)

 

 

                                6. Сначала нужно указать путь к библиотеке fpShtr54.dll. Для этого нажимаем кнопку в поле «Путь к библиотеке» и указываем нашу библиотеку,

    которая расположена в папке с Shelter 2. (Рис. 5)

 

(Рис. 5)

 

7. Теперь необходимо настроить фискальный регистратор. Нужно настроить следующие поля (Рис. 6) :

  • Операция возврата - «Deletion».
  • Информация о кассире - «ФИО» (Можно оставить "Логин", если хотите, чтобы в чеке указывался логин под которым зашли в Shelter).
  • Уровень логирования - «5» (Данный параметр увеличивает логирование и передает больше информации в логах, что позволяет быстрее найти причину ошибок в фискальнике, в случае возникновения проблем).
  • Протокол взаимодействия - «0»
  • Физический уровень - «0» или «1» ( 0 - искать ФР по COM-порту, 1 - искать ФР по IP адресу и порту)
  • Название COM-порта - «*» (указываем ту цифру порта, на котором у вас работает фискальный регистратор).
  • Пароль оператора - «30»

 

(Рис. 6)

 

 

 

8. Следующим шагом нужно будет выбрать киоск, который будет использоваться с настраиваемым фискальным регистратором (Рис. 7)

 

(Рис. 7)

 

 

После вышеуказанных настроек фискальный регистратор должен работать корректно. Один из способов проверить работу попробовать сделать Х-Отчет.

 

 

Фискальные налоги

 

Для того, чтобы настроить фискальные налоги в Shelter 2 необходимо сделать следующее:

   1. Для начала заведем фискальные налоги в самом Shelter 2. Заходим в «Настройки» «Справочники» «Налоги» «Фиск. налоги». (Рис. 8)

 

(Рис. 8)

 

 

   2. Чтобы завести фискальные налоги в Shelter 2 нужно узнать сопоставление кодов фискальных налогов, которые заведены в самом

       фискальном регистраторе. Для этого мы запускаем «Тест Драйвера ФР». Переходим в «Настройка свойств».  (Рис. 9)

 

(Рис. 9)

 

 

   3. В открывшемся окне нам следует указать COM-порт на котором установлен фискальный регистратор, после нажимаете «Проверка связи». 

       Если связь установлена переходим в «Таблицы». (Рис. 10)

 

(Рис. 10)

 

   4. Далее открываем таблицу «Налоговые ставки». (Рис. 11)

 

(Рис. 11)

 

 

   5. Тут мы видим три столбца, но нужно ореинтироваться на два первых - «Ряд» и «Величина налога».

       В столбе «Ряд» указан код налога с помощью которого мы будем сопостовлять налог с Shelter.

       В столбе «Величина налога» указан процент НДС, заполняется следующим образом: значения в данной таблице нужно умножить на 100

  • НДС 18% - 18*100
  • НДС 10% - 10*100 

   6. Например, нам необходимо использовать несколько фискальных налогов в Shelter 2, которые будут отображаться в чеке, возьмем - 18% и 10%

         В Shelter добавляем фискальный налог через кнопку «Добавить». (Рис. 12)

 

(Рис. 12)

 

 

 5. Откроется окно настройки фискального налога, добавим налог 18%, для этого нам нужно заполнить следующие поля: (Рис. 13)

  • Код (можно указать любое значение, которое еще не используется в Shelter)
  • Наименование (влияет на то, как будет отображаться налог в Shelter)
  • Код налога в фискальном регистраторе (необходимо указать код налога из тест драйвера фиск. регистратора (Рис. 11) в моем случае это код -1)
  • Ставка (тут указываем сколько процентов налог)

(Рис. 13)

 

     Аналогично заводим налог для 10%, только теперь «код налога в фиск. регистраторе» будет 2. (Рис. 14)

 

(Рис. 14)

 

 6. Теперь заведенные фискальные налоги необходимо прикрепить к услугам,  на которых нам нужно использовать данные налоги.

         Для этого нам следует зайти в «Настройки» «Справочники» «Услуги и оплаты» «Услуги». Находим нужную нам услугу 

         выбираем ее и нажимаем «Изменить». (Рис. 15)

 

(Рис. 15)

 

 

 7. Откроется окно настройки услуги в котором нам необходимо раскрыть вкладку «Налоги», выбрать «Фиск. налоги» и указать нужный нам 

         фискальный налог из заведенных нами ранее, после нажимаем «Сохранить». (Рис. 16)

 

(Рис. 16)

 

 

 8. Можно увидеть отображение фискального налога на услуге (Рис. 17)

 

(Рис. 17)

 

После произведенных настроек, если провести оплату по услуге, в которой вы указали фискальный налог, НДС будет отображен в чеке.

 

 

НДС при авансовой оплате

 

Если вам требуется отображать НДС при авансовой оплате, то нужно сделать следующее:

 

 1. Перейти в «Настройки» «Сервисы и оборудование» и открыть настройки фискального регистратора. (Рис. 18)

 

(Рис. 18)

 

 

 2. В поле «Код налога авансовой операции» указываем код налога из таблицы в тест драйвере (Рис. 11),

     который вы хотите отображать в авансовой оплате и нажимаем «Сохранить». (Рис. 19)

 

(Рис. 19)

 

 

  После произведенных настроек при авансовой оплате в чеке будет отображен НДС, код которого вы указали при настройке.

 

 

Фискальные налоги (Новая реализация)

 

Для новой реализации фискальных налогов необходим Shelter версии 2.12.125.2480 или новее.

 

Ранее фискальные налоги заводились так, что код налога прописывался в «Справочники»  «Налоги»  «Фиск. налоги», но при такой реализации к базе 

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

была реализована ко всем подключеным ФР.

На текущий момент реализация такова, что теперь код фискального налога прописывается не в «Справочники»  «Налоги»  «Фиск. налоги», а

непосредственно в самих настройках ФР в «Сервисы и оборудование», такой функционал позволяет подключать к Shelter разные ФР у которых

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

 

Выглядит это следующим образом:

1. Добавляем фискальные налоги в «Справочники»  «Налоги»  «Фиск. налоги» (Рис. 20):

 

(Рис. 20)

 

 

Можно увидеть, что теперь отсутствует поле «Код налога в фиск. регистраторе» о чем говорилось ранее.

 

2. После того как мы добавили нужное нам количество налогов переходим в «Настройки»  «Сервисы и оборудование» и открываем ранее 

заведенный нами фискальный регистратор.

Мы можем увидеть, что фискальные налоги ранее заведенные в справочниках перенеслись в фискальный регистратор (Рис. 21):

 

(Рис. 21)

 

 

Теперь осталось проставить в колонке «Код налога в фиск. регистраторе» нужные нам коды налогов, которые соответствуют данному фискальному регистратору.

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

налоговой таблице.

При такой реализации, если закрепить за услугой налоговую ставку и оплачивать ее с разных ФР у которых отличаются таблицы налогов конфликтов

больше возникать не будет.

 

 

Внимание! При обновлении программы на версию 2.12.125.2480 или новее все фискальные налоги(по пути: «Справочники» → «Налоги» → «Фиск. налоги»)

добавляются во все фискальные регистраторы с теми кодами налогов («Код налога в фиск. регистраторе»), которые у них были.

 

 

 

Настройка системы налогообложения (СНО)

 

ВНИМАНИЕ!!! Данный функционал доступен только с версии 2.12.125.2480 или новее

 

 

Ранее система налогообложения(СНО) указывалась только в настройках фискального регистратора в «Сервисы и оборудование» и указанный СНО

присваивался ко всем услугам в Shelter.

С версии 2.12.125.2480 реализован функционал, который позволяет присваивать к каждой услуге свой СНО. В итоге мы можем пробивать услуги с

разными системами налогообложения на одном фискальном регистраторе. Это работает следующим образом:

1. Заходим в «Справочники» → «Услуги и оплаты» → «Услуги» и открываем нужную нам услугу. Нас интересует вкладка «Налоги», раскрываем ее и видим

поле «Тип налогообложения»(Рис. 22):

 

(Рис. 22)

 

 

2. Щелкаем по стрелочке справа от этого поля и получаем выпадающий список, выбираем нужную нам СНО (Рис. 23):

 

(Рис. 23)

 

 

Таким образом мы можем указать для каждой услуги разный СНО.

 

Внимание! На текущий момент реализована оплата услуг с одинаковым СНО за раз. Например, есть две услуги: "Халат" (УСН(доход)) и "Тапочки"(ЕНВД).

Сделать одновременно оплату по этим двум услугам не получится, мы получим окно с информацией о том, что это невозможно (Рис. 24):

 

 

(Рис. 24)

 

Подведем итог, на текущий момент возможно закреплять за каждой услугой свой СНО, что в свою очередь позволяет на одном фискальном

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

 

!ВНИМАНИЕ! Реализация по оплате услуг с разным СНО в разрезе одной оплаты будет реализовано позже в будущих версиях.

 

 

 

 

Сопоставление типа оплаты

ВНИМАНИЕ!!! Данный функционал доступен только с версии 2.12.126.2700 или новее

 

В сервисах и оборудовании в настройках фискального регистратора есть теперь таблица кодов типа оплаты фискального регистратора (Рис. 25):

 

 

(Рис. 25)

 

 

Щелкаем правой кнопкой мыши в обозначенном на скриншоте поле и нажимаем «Добавить», откроется окно для заведения типа оплаты (Рис. 26):

 

(Рис. 26)

 

 

 

В данном окне находится всего два поля для настройки: 

  • Категория - выбирается категория оплаты (наличная, кредитная, безналичная)
  • Код типа оплаты в фискальном регистраторе - указывается номер типа оплаты из фискального регистратора, который соответствует выбранной вами выше категории.

 

 

(Рис. 27)

 

 

Данный код берётся из настроек фискального регистратора (типы оплат), можно найти через тест драйвера (Рис. 28) :

 

(Рис. 28)

 

 

Сопоставление кодов типов оплат необходимо для корректной работы двух и более ФР, если последовательность кодов типов оплат у этих ФР отличаются.

 

 

Зачет аванса в чеке полного расчета в ФР с использованием ФФД 1.05

 

 

Зачет аванса в чеке полного расчета в ФР с использованием ФФД 1.05
В этой статье будет рассмотрена работа фискального регистратора (отдельно от Shelter) при зачете аванса в чеке полного расчета.
Принимаем аванс наличными на 100р. через тест-драйвера :

Признак способа расчета - АВАНС, тип оплаты - Наличными. Чек из фискального регистратора : 

Как видно, было принято 100р. наличными (признак способа расчета - АВАНС, тип оплаты - НАЛИЧНЫМИ)
Снимаем X-отчет :

Сумма НАЛИЧНЫМИ : 100р.
ВЫРУЧКА : 100р.
Далее, выполняем зачет аванса (предварительная оплата(аванс)) при помощи полного расчета:

Печатается фискальный чек : 


Снимаем X-отчет :

Что мы тут видим : 

Общая сумма оплат (ИТОГО) : 200р. (в этом поле суммируются все типы платежей за смену)

А вот ниже, есть строчка "ВЫРУЧКА" в которой указана сумма в 100р. (это тот чек, который оплачивался наличным расчетом на 100р.)

Так работает фискальный регистратор.
ФНС разработала подробные методические рекомендации для оформления чеков при разных формах аванса:

формирование чеков при предварительной оплате за собственный товар, зачете предварительной оплаты за товар, предоставлении займа для оплаты товара и при погашении займа для оплаты товара (http://www.consultant.ru/document/cons_doc_LAW_321176/)
формирование чеков при продаже товаров с использованием подарочной карты. (http://www.consultant.ru/document/cons_doc_LAW_302821/)
Источник
https://kontur.ru/ofd/news/6669

Обязательные настройки Shelter для работы с ФФД 1.05/1.1

 

 

 

 

 

 

 

 

 

Обязательные настройки Shelter для работы с ФФД 1.05/1.1
В данном мануале будут публиковаться обязательные настройки в ПО Shelter для корректной работы с ФФД 1.05/1.1
1. В версии 2.12.126.2650 для каждого пользователя необходимо прописать ИНН в карточке пользователя :

В логе универсального драйвера будет фигурировать следующая информация : 

<FiscalDocument DocType="Receipt">
  <Header>
    <Restaurant Code="" Name=""/>
    <Operator Id="1" Code="1" Name="Сазонов Алексей Владимирович" TaxPayerIdNum="504536897787898"/>
    <Station Id="0" Code="" Name=""/>
    <CustomProperties/>
    <Unfiscal Slip="0" CutAfter="0">
      <TextBlock>Комната: Киоск портье
Фолио: 501</TextBlock>
    </Unfiscal>
  </Header>
  <Receipt DocNumber="9" TaxType="0" Guid="7" Time="2018-10-30T18:18:12">
    <Order Table="">
      <Operator Code="1" Name="Сазонов Алексей Владимирович"/>
    </Order>
    <Items>
      <Item Name="Проживание" Code="100" Quantity="1000" Department="0" Value="5000" PricePerOne="5000" PriceToPay="5000" ForAdvance="0" Id="1">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="6" TaxValue="0"/>
        </Taxes>
      </Item>
    </Items>
    <Payments>
      <Payment Name="Наличный расчет" Code="910" ShortName="910" TypeIndex="1" Id="14" Value="5000"/>
    </Payments>
  </Receipt>
</FiscalDocument>

Значение параметра TaxPayerIdNum = значение ИНН в карточке пользователя
2. В версии 2.12.126.2700 реализована передача ППР (признак предмета расчета) в универсальный драйвера (УД) и оператору фискальных данных (ОФД).
Для настройки ППР необходимо : 
1. В настройках системы включить чек-бокс "Использовать ФФД 1.05" - Сохранить
2. ППР по умолчанию - Товар

2. После включения этой опции, в карточке услуги появляется новое поле "Предмет расчета" (1 на рисунке): 

 3. Данные признаки предмета расчета берутся из справочников ("Настройки" - "Справочники" - "Справочники" - "Предмет расчета"):

ВНИМАНИЕ! Данные признаки редактировать не рекомендуется!
4. Признак предмета расчета (тег 1212) в логах УД фигурирует как ItemKind. Значением этого параметра являются значения реквизита из справочника предмета расчета (см. п.3), то есть в УД мы передаем значение реквизита (от 1 до 18), а не его название.
5. Для услуг, которые были начислены из R_Keeper используется тот предмет расчета, который указан для услуги в Shelter, для модуля Медицина - аналогичная ситуация, как и с услугами R_Keeper.
6. На чеке печатаются следующие предметы расчета : 

ItemKind="1" - Товар
ItemKind="2" - Подакцизный товар
ItemKind="3" - Работа
ItemKind="4" - Услуга
ItemKind="5" - Ставка азартной игры
ItemKind="6" - Выигрыш азартной игры
ItemKind="7"* - в Shelter - Лотерейный билет, на чеке - Лотерейный билет, в ОФД - Ставка лотереи
ItemKind="8" - Выигрыш лотереи
ItemKind="9" - Предоставление РИД
ItemKind="10"* - в Shelter - Платеж, на чеке - ПЛАТЕЖ(ВЫПЛАТА), в ОФД - Выплата
ItemKind="11" - Агентское вознаграждение
ItemKind="12" - Составной предмет расчета
ItemKind="13" - Иной предмет расчета
 
7. На чеке не печатаются и не передаются следующие предметы расчета :
ItemKind="18" - Курортный Сбор
ItemKind="17" - Торговый Сбор
ItemKind="16" - Страховые взносы
ItemKind="15" - Внереализационный доход
ItemKind="14" - Имущественное право

В логе универсального драйвера будет фигурировать следующая информация : 

<?xml version="1.0"?>
<FiscalDocument DocType="Receipt">
  <Header>
    <Restaurant Code="" Name=""/>
    <Operator Id="1" Code="2147483647" Name="ucs" TaxPayerIdNum=""/>
    <Station Id="0" Code="" Name=""/>
    <CustomProperties/>
    <Unfiscal Slip="0" CutAfter="0">
      <TextBlock>Комната: 125
Фолио: 1067</TextBlock>
    </Unfiscal>
  </Header>
  <Receipt DocNumber="18" TaxType="0" Guid="112" Time="2018-12-04T19:51:20">
    <Order Table="">
      <Operator Code="2147483647" Name="ucs"/>
    </Order>
    <Items>
      <Item Name="Падение луны" Code="118" Quantity="1000" Department="0" Value="18000" PricePerOne="18000" PriceToPay="18000" ItemKind="0" PaymentKind="4" Id="1">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Падение метеорита" Code="117" Quantity="1000" Department="0" Value="17000" PricePerOne="17000" PriceToPay="17000" ItemKind="18" PaymentKind="4" Id="2">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Падение Олипма" Code="116" Quantity="1000" Department="0" Value="16000" PricePerOne="16000" PriceToPay="16000" ItemKind="17" PaymentKind="4" Id="3">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Восстание машин" Code="115" Quantity="1000" Department="0" Value="15000" PricePerOne="15000" PriceToPay="15000" ItemKind="16" PaymentKind="4" Id="4">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание машин" Code="114" Quantity="1000" Department="0" Value="14000" PricePerOne="14000" PriceToPay="14000" ItemKind="15" PaymentKind="4" Id="5">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание роботов" Code="113" Quantity="1000" Department="0" Value="13000" PricePerOne="13000" PriceToPay="13000" ItemKind="14" PaymentKind="4" Id="6">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание взрослых" Code="112" Quantity="1000" Department="0" Value="12000" PricePerOne="12000" PriceToPay="12000" ItemKind="13" PaymentKind="4" Id="7">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание взрослых младенцев" Code="111" Quantity="1000" Department="0" Value="11000" PricePerOne="11000" PriceToPay="11000" ItemKind="12" PaymentKind="4" Id="8">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание взрослых детей" Code="110" Quantity="1000" Department="0" Value="11000" PricePerOne="11000" PriceToPay="11000" ItemKind="11" PaymentKind="4" Id="9">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание детей" Code="109" Quantity="1000" Department="0" Value="10000" PricePerOne="10000" PriceToPay="10000" ItemKind="10" PaymentKind="4" Id="10">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание группы" Code="108" Quantity="1000" Department="0" Value="9000" PricePerOne="9000" PriceToPay="9000" ItemKind="9" PaymentKind="4" Id="11">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание просто" Code="107" Quantity="1000" Department="0" Value="8000" PricePerOne="8000" PriceToPay="8000" ItemKind="8" PaymentKind="4" Id="12">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание на полу" Code="106" Quantity="1000" Department="0" Value="7000" PricePerOne="7000" PriceToPay="7000" ItemKind="7" PaymentKind="4" Id="13">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание на матрасе" Code="105" Quantity="1000" Department="0" Value="6000" PricePerOne="6000" PriceToPay="6000" ItemKind="6" PaymentKind="4" Id="14">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание на раскладушке" Code="104" Quantity="1000" Department="0" Value="5000" PricePerOne="5000" PriceToPay="5000" ItemKind="5" PaymentKind="4" Id="15">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="1" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Бронирование" Code="103" Quantity="1000" Department="0" Value="4000" PricePerOne="4000" PriceToPay="4000" ItemKind="4" PaymentKind="4" Id="16">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="6" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Ранний заезд" Code="102" Quantity="1000" Department="0" Value="3000" PricePerOne="3000" PriceToPay="3000" ItemKind="3" PaymentKind="4" Id="17">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="5" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Поздний выезд" Code="101" Quantity="1000" Department="0" Value="2000" PricePerOne="2000" PriceToPay="2000" ItemKind="2" PaymentKind="4" Id="18">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="5" TaxValue="0"/>
        </Taxes>
      </Item>
      <Item Name="Проживание" Code="100" Quantity="1000" Department="0" Value="1000" PricePerOne="1000" PriceToPay="1000" ItemKind="1" PaymentKind="4" Id="19">
        <Taxes>
          <Tax RateValue="0" TaxRateIndex="2" TaxValue="0"/>
        </Taxes>
      </Item>
    </Items>
    <Payments>
      <Payment Name="Наличный расчет" Code="910" TypeIndex="1" Id="1" Value="182000"/>
    </Payments>
  </Receipt>
</FiscalDocument>

3В версии 2.12.126.2700 реализована передача ПСР (признак способа расчета) в универсальный драйвера (УД) и оператору фискальных данных (ОФД).
Для настройки ПСР необходимо : 
1. В настройках системы включить чек-бокс "Использовать ФФД 1.05" - появляются дополнительные настройки.
2. ППР для авансовых платежей - Платеж
ПСР для частичной предоплаты - ПРЕДОПЛАТА
ПСР для полной предоплаты - ПРЕДОПЛАТА 100%

ПСР для полного расчета установлено по умолчанию и не настраивается - ПОЛНЫЙ РАСЧЕТ
3. 
В настройках подключения ФР в Shelter (Сервисы и оборудования) выставить необходимое значение в "Код типа платежа предоплаты(аванса)" - данный код будет передаваться при "закрытии" оплаты (ПОЛНЫЙ РАСЧЕТ) :

Данный код берётся из настроек фискального регистратора (типы оплат), можно найти через тест драйвера 
На тестовом ФР Retail-01K код типа платежа предоплаты (аванса) - 14 :

На тестовом ФР АТОЛ - 3 : 

ВНИМАНИЕ!!! Коды типов оплат необходимо смотреть через тест-драйвера, указанные выше коды - это примеры.
Каждому ПСР соответствует свой PaymentKind в логах УД : 
а) При ПРЕДОПЛАТА 100% передается 
PaymentKind="1"
б) При ПРЕДОПЛАТА  передается PaymentKind="2"
в) При АВАНС передается PaymentKind="3"
г) При ПОЛНЫЙ РАСЧЕТ передается PaymentKind="4"
4
В версии 2.12.126.2700 реализована печать чека коррекции
Для настройки возможности печати чека коррекции необходимо : 
1. В настройках системы включить чек-бокс "Использовать ФФД 1.05" 
2. В настройках системы включить чек-бокс "Использовать чек коррекции"

3. В "Сервисы и оборудование", для каждого подключенного через УД фискального регистратора, необходимо выставить "Код ФФД" (теги) для каждого кода налога в фиск.регистраторе. Коды тегов ФФД можно запросить у ЦТО, либо воспользоваться этой ссылкой

В логе универсального драйвера будет фигурировать следующая информация после печати чека коррекции : 

<FiscalDocument DocType="CorrectionReceipt">
  <Header>
    <Restaurant Code="" Name=""/>
    <Operator Id="1" Code="2147483647" Name="ucs" TaxPayerIdNum=""/>
    <Station Id="0" Code="" Name=""/>
    <CustomProperties/>
  </Header>
  <FFD Code="31">
    <TLV Tag="1173" Value="0"/>
    <TLV Tag="1054" Value="1"/>
    <TLV Tag="1055" Value="4"/>
    <TLV Tag="1020" Value="13000"/>
    <TLV Tag="1031" Value="13000"/>
    <TLV Tag="1081" Value="0"/>
    <TLV Tag="1215" Value="0"/>
    <TLV Tag="1216" Value="0"/>
    <TLV Tag="1217" Value="0"/>
    <TLV Tag="1102" Value="1983"/>
    <TLV Tag="1103" Value="0"/>
    <TLV Tag="1104" Value="0"/>
    <TLV Tag="1105" Value="0"/>
    <TLV Tag="1106" Value="0"/>
    <TLV Tag="1107" Value="0"/>
    <TLV Tag="1021" Value="ucs"/>
    <TLV Tag="1203" Value=""/>
    <STLV Tag="1174">
      <TLV Tag="1177" Value="test"/>
      <TLV Tag="1178" Value="2018-12-07T00:00:00"/>
      <TLV Tag="1179" Value="test1"/>
    </STLV>
  </FFD>
</FiscalDocument>

5. Необходимо сопоставить коды типов оплат в ФР и в "Сервисы и оборудования" : 

Коды типов оплат фискального регистратора можно посмотреть через тест-драйвера. Примеры для АТОЛ и для Retail (ШТРИХ) есть выше по мануалу (см. п.3). Сопоставление кодов типов оплат необходимо для корректной работы 2-х и более ФР, если последовательность кодов типов оплат у этих ФР отличаются.
Например, для СПАРК код оплаты наличными - 8, электронными - 1, а для АТОЛ наличнымы - 1, электронными - 2. 

Тестирование выполнялось на фискальных регистраторах : АТОЛ 22Ф, Retail-01K, СПАРК-115Ф
Версия библиотек фискального драйвера : 
fpAtol54.dll - 7.48.166.0
fpShtr54.dll - 7.47.91.0
fpSpark54.dll - 7.46.49.0

Данные библиотеки можно скачать тут

Важно!!! 
ФР СПАРК не печатает чек коррекции, не открывает смену через открытие фискальной смены, а так же плохо воспринимает некоторые признакми предмета расчета - ФР СПАРК не рекомендуется к использованию
ФР ШТРИХ на чеке может не печатать признаки предмета расчета (зависит от прошивки и настроек ФР), однако данные в ОФД передает верные.

Переход на НДС 20%

 

 

 

Переход на НДС 20%

 

На сегодняшний день (8.11.2018) ситуация по данному моменту исполнения законодательства РФ обстоит так:

Производители ФР Спарк, Штрих и Атол уже реализовали прошивки для автоматического изменения налоговой ставки при открытии первой смены 01.01.2019г.

Переход на новые значения ставки в ней реализован следующим образом: заранее в настройках ФР задается дата изменения налога

(для Спарк 115-Ф, для  Атол и Штрих - предопределено 01.01.2019г).

При закрытии смены указанного числа ставка налога автоматически меняется. Таким образом, дополнительных операций с перенастройкой ФР в Shelter / Абонемент

делать не потребуется.

Но для корректной работы отчетности и выгрузок в 1С в ПО Shelter / Абонемент потребуется изменить значение налоговой ставки в справочнике вручную.

Предприятиям, находящимся на договорном обслуживании по продуктам Shelter / Абонемент, сотрудники ТП накануне предоставят соответствующую

инструкцию по настройке.

 

Моменты, на которые нужно обратить внимание:

 

Момент 1.

Оплатили бронь гостиницы/услугу/абонемент с НДС 18%, а потом оказалось необходимым вернуть предоплату, но уже в период действия НДС 20%

В ПО Shelter / Абонемент возврат будет произведён с фискальной налоговой ставкой 20%, поскольку ставка НДС 18% перестаёт существовать.

 

Момент 2.

Если оплата услуги будет производиться 2-мя частями – предоплата с НДС 18% и окончательный расчет при НДС 20%?

Если в ПО Shelter / Абонемент оказанная услуга уже начислена фолио со старым налогом (до 1.1.2019), а оплата этой оказанной услуги будет осуществляться

в новом периоде

(после 1.1.2019), то у данной услуги в программе Shelter / Абонемент расчет налога произойдет по старой налоговой ставке. А в фискальном чеке уже будет указан

налог по новой ставке.

 

Для исключения такой возможности можно предложить 2 варианта решения:

1) не иметь неоплаченных услуг к 1.1. 2019
2) скриптом пересчитать сумму налога у неоплаченных услуг. Заказчики, находящиеся на договоре ТП смогут получить необходимые консультации в ТП Shelter / Абонемент.
По ссылке находится скрипт для автоматического перевода НДС в программе Shelter 2, а так же инструкция по "ручному" переводу. Данный скрипт подходит для большинства баз Shelter 2, однако, если стандартные настройки в базе отличаются, автоматический перевод НДС не выполнится. Необходимо тщательно проверить настройки в БД Shelter (Налоги и Фиск.налоги).
Скрипт выполнится после выполнения процедуры ночного аудита (когда дата в БД станет 01.01.2019 00:00)

 

 

Подключение ФР MITAC MF2351 через Универсальный драйвер

 

Подключение ФР MITAC MF2351 к Shelter 2

 

Для данного вида подключения требуется Shelter 2 версии 2.12.124.2450 или новее.

Для интеграции вам необходимы fpMF2351.cfg, fpMF2351.dll и sqlite3.dll. Скачать их можно с FTP
 
ВНИМАНИЕ! Инженеры технической поддержки shelter не осуществляют настройку самого фискального регистратора. 

Для проверки доступности фискального регистратора MITAC MF2351 можно использовать командную строку с командой telnet 192.168.3.64 9191. (Рис. 1). 

Рис. 1
 
После чего, должен быть успешный или неуспешный коннект к фискальному регистратору (Рис 2).
Рис. 2
 
 
 
 
 
Настройка Shelter 2
 
 
1. Необходимо файлы fpMF2351.cfg, fpMF2351.dll и sqlite3.dll положить в папку с Shelter 2. Скачать можно тут
2. Далее открываем Shelter 2 и переходим в «Настройки» - «Сервисы и оборудование» и нажимаем кнопку «Добавить». 
3. Откроется окно в котором сначала нам нужно выбрать «Драйвер».
4. В открывшемся окне выбираем «Фискальный Регистратор» - «Универсальный драйвер» и нажимаем «Выбрать» (Рис. 3)
 Рис. 3
 
5. После нам необходимо открыть «Настройка». 
6. Сначала нужно указать путь к библиотеке fpMF2351.dll. Для этого нажимаем кнопку в поле «Путь к библиотеке» и указываем нашу библиотеку, которая расположена в папке с Shelter 2.  
7. Теперь необходимо настроить фискальный регистратор. Нужно настроить следующие поля (Рис. 4 и Рис. 5):
  • Операция возврата - «Deletion» (Return - расход, Deletion - приход)
  • Информация о кассире - «ФИО» (Можно оставить "Логин", если хотите, чтобы в чеке указывался логин под которым зашли в Shelter).
  • Уровень логирования - «5» (Данный параметр увеличивает логирование и передает больше информации в логах, что позволяет быстрее найти причину ошибок в фискальнике, в случае возникновения проблем).
  • Код отдела – задается в соответствии с заведенными отделами в самом фискальном регистраторе.
  • IP адрес – ip адрес фискального регистратора, задается в самом ФР.
  • IP порт – порт фискального регистратора, задается в самом ФР.
  • Пароль – пароль доступа к фискальному регистратору, задается в самом ФР.

 

Рис. 4
 
Рис. 5
 
8. После нажатия кнопки «Сохранить» необходимо выбрать киоск, который будет использоваться с настраиваемым фискальным регистратором.
9. Далее необходимо перейти в «Справочники» -> «Справочники» -> «Пользовательские поля» и завести пользовательское поле GENARMADG (Рис. 6).
Рис .6
 

10. Последним этапом необходимо для каждой услуги в созданное пользовательское поле shelter (GENARMADG) ввести код ADG. Код ADG для каждого фискального регистратора уникален, в нашем примере 56.10 (Рис. 7).

Рис. 7

После вышеуказанных настроек фискальный регистратор должен работать корректно и для проверки работы можно снять краткий/полный отчет за определенную дату (Рис 8).
 
Рис. 8
 
Для сопоставления типов оплат, необходимо в "Сервисы и оборудование" добавить "Наличная оплата" с кодом оплаты из ФР, в нашем случае 0 и "Кредитные карты" с кодом 2 (Рис 9).
 
Рис 9.
 
Если не сделать сопоставление, то при оплате через киоск по карте или по наличке, будет возвращаться ошибка:
[06.02.19 16:16:38.520] [ERR] leave SendAndReceive() LogicError - FR error 190 - Payment is not accessible in fDBStoreNewReceipt()
[06.02.19 16:16:38.520] [ALW]  
[06.02.19 16:16:38.520] [ERR]  FiscalDocument(Status[]) = LogicError - FR error 190 - Payment is not accessible in fDBStoreNewReceipt()
[06.02.19 16:16:38.520] [TLK]  
 
 
 
   

ShelterOnlineServer

 

 

 

ShelterOnlineServer

 

Описание и настройки модуля ShelterOnlineServer (версия 2.12.115.2275 и выше)

 

 

 

Служба ShelterOnlineServer является посредником между модулем бронирования UCS Shelter-Online и программным продуктом Shelter 2.

Передача данных между посредником и модулем UCS Shelter-Online осуществляется в реальном времени в формате XML

через определенный IP - TCPHost и порт - TCPPort.

 

Для установки данной службы необходимо:

1. Проверить наличие в ключе защиты модуля 5, проект 3 (Интернет-бронирование)

 

2. Запустить shelter.exe, перейти в модуль настроек (Рис. 1)

(Рис. 1)

В окне ввода пароля ввести служебный пароль (ucs-shelter), в следующем окне нажать кнопку «Настройки».

 

3. В открывшемся окне (рис. 2) необходимо найти секцию Shelter Online Server и настроить по аналогии с (рис. 2)

 

(Рис. 2)

 

 

ВНИМАНИЕ!!! Параметры : Адрес для прослушивания (рекомендуется 0.0.0.0), Максимальное количество потоков - Не менять!

В поле «Адрес для прослушивания» указывается ip-адрес, с которого будет ожидаться запрос к Online-Server. 

Если указать в этом поле 0.0.0.0 — то, подключение к Online-Server будет доступно для всех адресов.

 

 

4. Далее необходимо сохранить настройки, нажав кнопки в следующем порядке : «Применить» - «ОК»

5. Cоздать отдельную директорию в каталоге с ПО Shelter (обычно папка называется Online);

6. Cкопировать в директорию ../Online/ следующие файлы :

 

 

В shelter.ini добавить следующие секции:

 

[INI]

Path=%EXE_PATH%\shelter.ini

 

[Log]

Path=%EXE_PATH%\Logs\

name=

level=100

debuglevel=100

fileage=0

maxlogsize=20

 

Секция [INI] нужна для того, чтобы файл с настройками «читался» из директории, где находится shelter.exe

7. Создать ярлык для shelter.exe, в свойствах ярлыка, в поле «Объект» добавить следующий ключ :

 

 

8. Далее необходимо запустить ярлык от имени администратора. Должно появиться сообщение о успешной установке службы.

9. Запустить службу

10. Создать еще один ярлык для shelter.exe с ключом :

 

 

Запустить данный ярлык, в появившемся окне открыть список «Система» - «Список отелей» - нажать «Выполнить (F9)»,

в окне 3 должен появиться результат выполнения функции. (Рис. 3)

(Рис. 3)

 

Так же, стоит обратить внимание на права доступа в Windows. Желательно назначить максимальные права для папки Shelter.

 

 

 

 

 

Shelter-Online (Интернет-Бронирование)

 

 

 

 

Shelter-Online

Актуальную версию модуля можно скачать тут

описание модуля v2.44

 

О модуле

В программный продукт «Shelter» входит модуль «Shelter-Online», который даёт возможность КЛИЕНТУ управлять своими персональными данными,

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

 

Модуль «Shelter-Online» работает с программой «Shelter» через посредника shelter-online. Это служба, которая устанавливается запуском

Shelter.exe с ключом -online_server -install. Передача данных между посредником и модулем «Shelter-Online» осуществляется в реальном времени

в формате XML через определенный IP – TCPHost и порт – TCPPort.

 

Программа «Shelter» установлена во внутренней сети гостиницы. Сайт с модулем «ShelterOnline» размещен у провайдера.

Задача безопасной передачи данных из WEB сайта гостиницы на сервер Shelter и обратно, решается использованием в гостинице

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

Она обеспечивает выход в интернет и внешнее присутствие в нём, скрывая при этом внутреннюю сеть организации и предотвращая прямое

обращение к ней. На данном компьютере должен быть установлен FireBird клиент и программа «shelter-online-server», которая слушает tcp порт

внешнего IP адреса. Именно на этот адрес и в этот порт отправляют команды скрипты, находящиеся у провайдера. Если команды пришли,

программа «shelter-online-server» выполняет определенные запросы к БД «Shelter» через внутренний интерфейс, и результат передает обратно,

т.е. на web страницу пользователя. Для просмотра и тестирования работы функций используется программа testShelteronline-server.exe

 

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

модуля «Shelter-Online» и программы «Shelter».

 

Для интеграции с уже существующим сайтом, модуль «Shelter-Online» устанавливается на сервер в то же место, где расположен сайт

и настраивается в соответствии с указанными в инструкции по установки требованиями.

 

Демо-версию данного модуля можно посмотреть на сайте http://shelter-online.ucs.ru/

 

Структурная схема работы с модулем

 

Возможности

  Для клиентов

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

              - просмотр и изменение личной информации в системе;

              - просмотр забронированных номеров;

              - оплата брони;

              - редактирование брони;

              - удаление брони.

Для организаций включаются возможности клиентов, дополнительно

  • возможность выбора контракта организации для бронирования номера;
  • личный кабинет

              - просмотр забронированных номеров;

              - оплата брони;

              - редактирование брони;

              - удаление брони;

              - поиск броней по различным параметрам

Настройка модуля онлайн-бронирования

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

              - минимального количества номеров;

              - минимального количества человек в номере;

  • возможность проверки доступности номерного фонда на весь период проживания;
  • настройка отображения всего номерного фонда или номеров за исключением квот;
  • возможность формирования заездов при выборе номера;
  • возможность привязки изображения к категории гостя для страницы Выбор номера;
  • возможность редактирования параметров поиска на странице Выбор номера;
  • установка вывода возможных тарифов;
  • возможность использования тарифов с фиксированной стоимостью;
  • установка границ заливки ячеек в таблице свободных номеров;
  • возможность отображения количества свободных номеров в результатах поиска;
  • возможность конвертации цен в иностранную валюту для России, Украины и Европейских стран, выбор списка валют для конвертации;
  • установка минимального количества дней заезда;
  • возможность работы с данными о кредитной карте;
  • формирование привязки типов оплаты к выводу формы заполнения данными о кредитной карте;
  • возможность вывода дополнительных услуг;
  • возможность вывода дополнительных пакетов услуг;
  • возможность установки обязательного заполнения ФИО гостей для каждого заезда;
  • возможность установки обязательного заполнения даты рождения для гостя;
  • установка обязательного ввода защитного кода при бронировании;
  • установка обязательного подтверждения правил отеля при бронировании;
  • возможность предоставления раннего заезда и позднего выезда;
  • установка максимального количества заездов при формировании брони для клиентов и организаций;
  • установка статусов брони для клиентов и организаций;
  • возможность установки проверки на обязательное заполнение основных мест перед заполнением дополнительных;
  • возможность автоматического распределения номеров внутри типа номера при бронировании;
  • установка разрешения самостоятельной отмены бронирования

              - для разных типов пользователей;

              - в зависимости от статуса брони;

              - за определенное количество дней до заезда;

  • возможность введения запрета на создание новых броней для определенных организаций;
  • проведения онлайн-платежей

              - установка возможности проведения онлайн-платежей;

              - задание минимального процента оплаты номера;

              - выбор платежной системы (Ассист, РобоКасса, Яндекс.Касса, Uniteller, United Card Services, Банк Русский Стандарт, РезервМастер,APPEX)

  • установка основного языка для отображения информации;
  • установка фильтров

              - отображаемых категорий гостей;

              - отображаемых отелей;

              - вывода типов номеров;

              - вывода тарифов;

              - вывода дополнительных услуг;

  • гибкая настройка интерфейса для любого дизайна веб-сайта.

Требования

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

  • операционная система Linux 2.6;
  • версия Apache 2.2.17;
  • версия PHP 5.3;
  • возможность использования модулем библиотеки jQuery;
  • установленные модули: cUrl, Sessions, Sockets, Xml, SimpleXML, GD, iconv, DOM, а также предоставлять возможность установки дополнительных модулей по требованию.

Проверить необходимые модули можно с помощью встроенного модуля check server. Для этого необходимо перейти в визуальные настройки

и открыть ссылку check server. Далее выбрать модуль для тестирования, задать параметры для подключения к программе connecter.

Для правильной работы необходимо обновить shelter-online-server до последней версии.

 

Установка

Предоставляемый модуль разделен на 2 части:

    1. шаблон сайта;

    2. модуль Shelter-Online (находится в директории «shelter»).

 

Если у Вас сайт уже есть, значит, Вам понадобится только модуль.

 

Для демонстрации данный модуль бронирования можно развернуть, используя пакет WEB-разработчика Denwer. Скачать его можно на сайте denwer.ru

После его установки папку HotelOnline\hotel\ скопировать в C:\WebServers\home\localhost\www\. Настроить модуль по описанию ниже.

Из WEB-браузера вызывать http://127.0.0.1/hotel/

 

Настройка модуля

Закрытые настройки модуля представлены в разделе /shelter/ файл config.php.

Открытые настройки доступны по адресу http://127.0.0.1/hotel/shelter/settings/

 

Рассмотрим закрытые настройки для первоначального запуска модуля.

В файле config.php представлены настройки

  • TCPHost и TCPPort для подключения к shelter-online-server;
  • пароль для выполнения запросов;
  • описания для номеров и тарифов;
  • настройки платежных систем.

​Сохранять файл config.php необходимо с кодировкой UTF-8 (без BOM). В качестве программы для редактирования файла воспользуйтесь Notepad++.

 

Для запуска модуля необходимо установить параметры в файле config.php

XML_PATH – параметр TCPHost для shelter-online-server. Посмотреть можно в shelter.ini

XML_PORT – параметр TCPPort для shelter-online-server. Посмотреть можно в shelter.ini

KEY_SECURITY_SHELTER – ключ проверки передаваемой информации, указывается в программе Shelter

(Настройка/Системные настройки/Shelter Online Server)

 

Оплата

ВНИМАНИЕ! За подключением платежных систем, необходимо обратиться в техническую поддержку UCS.

Настройки оплаты находятся в отдельном файле. Настройка платежных систем находится в файле config.php

 

Языковые настройки

Языковые настройки модуля содержаться в разделе /inc/ в файле lang.php

 

Стилистика модуля

Основной шаблон находится в файле /template.php, в котором подключаются JavaScript, стили и задается структура html страницы.

Стили CSS находятся в файле style.css В разделе /template/ находятся шаблоны страниц, отображающие информацию определенной страницы.

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

В разделе /template/inc/ находятся шаблоны выполнения определенных функций, названия файла соответствует либо названию страницы, либо функции.

 

Описание для номеров во всплывающем окне

Файлы в разделе /about/rooms/ необходимы для отображения краткой информации о номере при выборе номеров. Каждый файл соответствует

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

 

Описание для тарифов во всплывающем окне

Файлы в разделе /about/rates/ необходимы для отображения краткой информации о тарифах при выборе номеров.

Каждый файл соответствует значению в переменной $ LINK_RATE.

 

Почтовые шаблоны

Все шаблоны находятся в разделе /mail/. Название шаблона соответствует названию страницы, в котором он используется,

кроме дополнительных шаблонов. Текст шаблона отправляется в формате «html». Переменная, которая будет заменена на значение, з

аключается между символами «#». Текст будет отправлен также как и указано в шаблоне, только вместо переменных будут конкретные значения.

Если требуемый шаблон отсутствует, модуль письмо не отправит.

Дополнительные шаблоны

  • Header – шапка письма, настраивается для всех писем;
  • Footer – подвал письма, в котором указываются контакты отеля или отелей, заполняется один раз для всех писем;
  • ForMenegerReservation – отправка информации менеджерам о бронировании номеров;
  • ForMenegerPayment – отправка информации менеджерам об оплате брони;
  • ForMenegerReservationDelete – отправка информации менеджерам об удалении брони;
  • Reservation – отправка информации зарегистрированному пользователю при бронировании номеров;
  • ReservationNR – отправка информации незарегистрированному пользователю при бронировании номеров со ссылкой для отмены брони;

На данный момент модуль работает с 2 типами текстовых шаблонов: статичными и динамичными.

Статичный шаблон содержит текст, в котором модулю достаточно изменить требуемые элементы. Пример статичного шаблона:

Результат подстановки шаблона:

 

Для добавления новых элементов в шаблон требуется доработать соответствующий шаблон и файл в разделе /controller/.

Для добавления новых элементов достаточно в массив $arData (рядом с комментарием отправка письма) добавить элемент массива:

 

Динамичный шаблон содержит как элементы, требующие замены, так и списки, формирующие автоматически при создании шаблона.

Заменяемые программой элементы заключаются символами «#», как указано в примере. Пример динамичного шаблона:

Результат подстановки шаблона:

 

Для создания списка в данных шаблонах, необходимо перечисляемые элементы заключить между символом «^», как указано в примере.

Сами элементы заключаются также как и в статичном примере символом «#».

 

В модуле возможно создавать несколько списков в шаблоне, при этом они не должны содержаться друг в друге.

 

Для добавления новых элементов и списков в шаблон требуется доработать соответствующий шаблон и файл в разделе /controller/.

Для добавления новых элементов достаточно в массив $arData (рядом с комментарием отправка письма) добавить элемент.

Для создания списка, необходимо добавить элемент, содержащий перечисление значений через разделитель «;».

 

Настройка платежных систем

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

 

 

После проведения оплаты клиента можно переадресовать на страницу личного кабинета или специально заготовленные шаблоны PaymentExecution,

PaymentFail и PaymentSuccess, описанные в разделе Шаблоны.​

 

Робокасса

Зарегистрируйтесь и откройте главную страницу «Личного кабинета», выберите магазин в центре окна.

Рис. 1 - администрирование в Робокассе

Заполните информацию на вкладке «Регистрация» и перейдите на вкладку «Технические настройки».

Рис. 2 - настройка отправки данных в Робокассе

«Идентификатор магазина» должен соответствовать «ROBOKASSA_MrchLogin» в файле config.php

 

«Пароль 1» и «Пароль 2» соответственно «ROBOKASSA_mrh_pass1» и «ROBOKASSA_mrh_pass2» в файле config.php.

 

В «Success Url» и «Fail Url» ссылка на страницу «Личный кабинет» модуля бронирования.

Либо можно задать страницы модуля бронирования PaymentSuccess и PaymentFail соответственно.

 

Ассист

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

Перейдите по адресу https://account.paysecure.ru/ и введите логин и пароль. Далее кликнуть «Настройки мерчантов».

На вкладке «Настройки платежей» ввести URL_RETURN и URL_RETURN_OK. В данном случае ссылка на страницу «Личный кабинет» модуля бронирования.

 

На вкладке «Настройка отправки результатов платежей» поставить галочку «Отправка результатов оплат» и задать остальные параметры.

Путь к разделу с платежными файлами в настройках модуля бронирования (PAY_URL) должен совпадать с параметром «URL для отправки результатов».

Отличие в том, что в параметре «URL для отправки результатов» указывается конкретный файл.

 

Uniteller

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

Перейдите по адресу https://test.lk.uniteller.ru/ и введите логин и пароль. Далее кликнуть «Договоры» и выбрать «Настройки».

В поле «URL для уведомления сервера интернет- магазина об изменившемся статусе счёта/оплаты» внести полный путь до файла оплаты,

название которого указано в файле config.php. Из личного кабинета Uniteller также перенести следующие настройки в файл config.php:

  • UNITELLER_SHOP_ID – Shop_ID, страница «Договоры»;
  • UNITELLER_LOGIN – Login, страница «Параметры Авторизации»;
  • UNITELLER_PASS – Password, страница «Параметры Авторизации»;
  • UNITELLER_URL_SEND – страница для оплаты заказа;
  • UNITELLER_URL_CHECK – страница для проверки статуса заказа.

​Адреса страниц зависят от режима платежей – тестовый или реальный. Изначально указаны страницы для тестовых платежей на тестовом сервере.

 

United Card Services

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

Необходимо дополнительно указать в технической поддержке процессингового центра:

  • IP-адрес веб-сервера, с которого будет осуществляться переход в процессинговый центр;
  • Язык программирования PHP;
  • Адрес отправки данных об успешном платеже, будет известен после установки модуля.

Название и расположение скрипта для оплаты после возврата клиента в файле config.php. Настройки в config.php:

  • UCSPAY_URL_MODULE – адрес сайта;
  • UCSPAY_LOGIN – логин для тестовой среды в процессинговом центре;
  • UCSPAY_PASS – пароль для тестовой среды в процессинговом центре;
  • UCSPAY_SHOPID – shop_Id в процессинговом центре;
  • UCSPAY_URL_PAY – адрес отправки данных в процессинговый центр;

Банк Русский Стандарт

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

Перед тестированием необходимо установить на веб-сервер сертификаты и ключи банка. Также указать в технической поддержке адрес

возврата после платежа. Название и расположение скрипта для оплаты после возврата клиента в файле config.php. Настройки в config.php:

  • BANK_RS_URL_TRANSACTION – адрес для получения транзакции;
  • BANK_RS_URL_REDIRECT – адрес отправки параметров заказа для оплаты;
  • BANK_RS_UNIX_PATH_KEYS – абсолютный адрес хранения сертификатов и ключей;
  • BANK_RS_TSP_ID – Идентификатор магазина.

 

В личном кабинете платежной системы страница отправки результатов должна быть:    <...>\shelter\inc\pm\rs5ogvu5hf.php

РезервМастер

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

Настроек в модуле онлайн бронирования не требуется, необходимо настроить в программе Shelter.
APPEX (протокол E-POS)

Перед тестированием платежной системы необходимо отправить заявку на подключение.
// ВНИМЕНИЕ! Адрес для запроса со стороны Appex на подтверждение проведения операции указать /shelter/inc/pm/ap1ufe93i_confirm.php
Название и расположение скрипта для оплаты после возврата клиента в файле config.php. Настройки в config.php:

  • APPEX_ACCOUNT – Идентификатор личного кабинета APPEX
  • APPEX_KEY_1 – Создаются в личном кабинете APPEX;
  • APPEX_KEY_2 – Создаются в личном кабинете APPEX;
  • APPEX_PAY_URL – URL для отправки платежа;

 

Шаблоны отображения информации

Шаблоны разделяются на две категории:

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

 

​В разделе /template/ находятся шаблоны страниц, отображающие информацию определенной страницы. Для изменения вывода определенных данных,

необходимо изменить файл соответствующий изменяемой странице.

В разделе /template/inc/ находятся шаблоны выполнения определенных функций, названия файла соответствует либо названию страницы, либо функции.

 

Шаблоны страниц:

  • AboutReserv – просмотр информации о брони;
  • AboutUser – просмотр личной информации пользователя;
  • CheckConnect – тестирование соединения с Shelter;
  • CreateUser – регистрация пользователя;
  • Find – поиск номеров;
  • ForgetPassword – восстановление пароля;
  • LoginFirm – авторизация для организаций;
  • LoginUser – авторизация для пользователей;
  • PaymentFail – платеж не проведен;
  • PaymentSuccess – платеж успешно проведен;
  • PaymentExecution – платеж принят к исполнению;
  • Reservation – бронирование номеров;
  • ReservationNR – страница, на которую переадресовывается пользователь после бронирования номеров, если регистрации не предусмотрена. Также на данной странице предусмотрена оплата и отмена бронирования;
  • ReservationPay – оплата номера;
  • Result – результат поиска номеров с возможностью формирования заездов;
  • SResult - результат поиска номеров с возможностью выбора тарифа;
  • Rules – правила отеля;
  • SResult – результат поиска номеров без формирования заездов;
  • UserCabinet – список броней пользователя;

 

Шаблоны функций:

  • About – шаблон, в котором формируются выбранные параметры поиска номеров, отображается при условии, если заезды не формируются;
  • Contracts – шаблон, в котором формируется возможность выбора контракта для организации;
  • FirmCabinet – шаблон, в котором содержится фильтр для личного кабинета организации;
  • ReservForm – шаблон, в котором содержатся формы для авторизации и регистрации на странице Бронирования;
  • Step – шаблон, в котором формируется отображение цепочки выполнения действий при бронировании номера.

 

Модуль «Личный кабинет гостя»

Модуль «Личный кабинет гостя» позволяет заселенному гостю просматривать информацию о заезде и добавленных дополнительных услугах,

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

 

Модуль устанавливается во внутренней сети на веб-сервер гостиницы. Подключение к модулю с мобильного устройства гостя необходимо сделать

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

Логин – телефон гостя, указанный при заселении, пароль генерирует программа Shelter отдельно для каждой брони.

 

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

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

 

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

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

номер телефона и пароль. Данный QR-код можно распечатать у стойки администратора и написать краткую инструкцию по работе с модулем.

Внешний вид модуля после авторизации гостя

 

 

 

Настройка отправки сообщений через Shelter

 

В настройках модуля онлайн-бронирования возможна настройка способа отправки сообщений подтверждения бронирования и тд:

 

 

Предлагается два варианта отправки сообщений:

  • С помощью PHP
  • С помощью Shelter

 

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

С помощью Shelter - настройка почты производится в настройках модулей Shelter. Рассмотрим именно его.

 

Необходимо зайти в настройки модулей Shelter и найти там настройки SMTP-сервера, настраиваем по примеру ниже:

 

 

После выполненных настроек перезапускаем службу OnlineServer. При корректной настройке все письма будут успешно доставляться с помощью Shelter.

 

 

 

 

 

 

 

 

Описание настроек модуля онлайн-бронирование (Черновик)

 

 

 

1

 

Основные настройки

 

Описание

1.1 Страница отображения модуля Необходимо скопировать адрес страницы Вашего сайта, где будет размещен модуль
1.2 Абсолютный адрес для модуля Прямой адрес для отображения модуля
1.3 Экранировать модуль для адресов с/без www Если отметить параметр, модуль не будет жестко привязан к адресу, а будет доступен также на поддомене www
1.4 Перед отображением модуля проверять соединение Указать количество секунд до обрыва соединения (0 - не проверять)
1.5  

 

2

 

Отправка писем

2.1 Способ отправки сообщений Для отправки с помощью Shelter необходимо настроить SMTP в файле shelter.ini
2.2 E-mail отеля Ответное письмо клиента будет приходить на данный адрес
2.3 Менеджеры, которые получат уведомление о новой брони Указать E-mail менеджеров

 

3

 

Пользователи

3.1 Личный кабинет для пользователя Обязательная регистрация и авторизация перед бронированием
3.2 Минимальная длина пароля для пользователя Указывается минимальная длина пароля для личного кабинета пользователя.
3.3 Ввод защитного кода (captcha) при регистрации и напоминании пароля Используется совместно со встроенной защитой от роботов
3.4 Используются только знак "+" и цифры +XXXXXXXXXXX или XXXXXXXXXXXX
3.5 Отображать брони сделанные в Shelter Работает совместно с личным кабинетом пользователя. Если бронирование было сделано через Shelter, то бронь так же отобразится в личном кабинете гостя в модуле бронирования.

 

4

 

Организации

4.1 Разрешить авторизацию и бронирование для организаций  
4.2 Использовать бронирование на сайте от ОПРЕДЕЛЕННОЙ организации Указать id из функции Список организаций (0 - не использовать)
4.3 Использовать ДОГОВОР при бронировании на сайте от ОПРЕДЕЛЕННОЙ организации Указать id из функции Список договоров организаций (0 - не использовать)
4.4  
4.5 Отображать сумму комиссии  

 

5

 

Поиск номера

5.1 Указать id первого отображаемого отеля Если используется несколько отелей, то с помощью данной настройки можно выбрать какой отель будет первым отображаться при открывании модуля бронирования
5.2 Фильтр отображаемых отелей Если в одной базе данных 2 или более гостиниц, но вы хотите использовать одну гостиницу для бронирования или же несколько, перечислите ID необходимых гостиниц
5.3 Предлагать дату заезда в форме поиска Выбор даты по умолчанию при поиске номера
5.4 Минимальное количество дней заезда Указывается минимальной количество дней проживания при бронировании
5.5 Разница между датой въезда и выезда в форме поиска Указывается разница в количестве дней между датой заезда и выезда при поиске номера
5.6 Ввод количества НОМЕРОВ в форме поиска ОБЯЗАТЕЛЬНО отметить Ввод количества бронируемых номеров в одном заезде
5.7 Ввод количества ЧЕЛОВЕК в форме поиска По умолчанию в поиске заполняется один взрослый

 

6

 

Выбор номера

6.1 Страница с результатом поиска свободных номеров  
6.2 Отображать только одну страницу с результатом поиска Свободные номера и тарифы или Формирование заездов
6.3 Возможность изменения параметров поиска  
6.4 Отображение номерного фонда  
6.5 Граница среднего значение количества номеров для заливки цветом на странице Выбор номера Если будет указано, например, 3. Тогда категории, где свободных номеров больше 3, окрашиваются одним цветом, меньше трех - другим цветом. Категории, где нет номеров остаются без заливки.
6.6 Отображать количество свободных номеров  
6.7 Валюта для отображения Изменить подписи к валюте можно в языковых настройках /inc/lang.php
6.8 Просмотр цены за номер в другой валюте на странице Выбора номера Необходимо заполнить пункт "Список иностранных валют для конвертации"
6.9 Список иностранных валют для конвертации Если оставить пустым, конвертация выполняться НЕ будет.
Для России указать CharCode из
http://www.cbr.ru/scripts/XML_daily.asp?date_req=11/11/2014
Для Украины указать ccy из https://api.privatbank.ua/p24api/pubinfo?exchange&coursid=3
Для Европы указать currency из http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
6.10  
6.11 Отображаемые категории гостей Перечислить id из функции Список возрастных категорий
6.12 Отображать информацию о дополнительно возможных тарифах с условиями Если клиент выбирает период заселения, отличный от условий тарифа, тогда данный тариф будет выводится в качестве информации
6.13 Коды НОМЕРОВ, которые выводить НЕ нужно  
6.14 Коды ТАРИФОВ, которые выводить НЕ нужно  

 

7

 

Бронирование

7.1 Бронировать только свободные номера без переездов ОБЯЗАТЕЛЬНО запретить Возможность редактирования параметров заезда и отметить Отображать только одну страницу с результатом поиска
7.2 Распределять бронь по номерам выбранной категории ОБЯЗАТЕЛЬНО отметить пункт выше Бронировать только свободные номера без переездов
7.3 Ввод данных о кредитной карты  
7.4 Сделать привязку заполнения данных о кредитной карте к определенным типам оплат Указать id из функции Типы оплат
7.5 Выбор дополнительных услуг Указать коды операций которые нужно вывести, отображаются в функции Список операций
7.6 Возможность редактирования параметров заезда Даты заезда и выезда, типа номера и тарифа
7.7 Возможность добавления заезда ОБЯЗАТЕЛЬНО включить "Возможность редактирования параметров заезда"
7.8 Обязательное присутствие взрослого в заезде  
7.9 Заполнение ФИО гостя при бронировании Недоступно при вводе количества бронируемых номеров в одном заезде
7.10 Фамилия, Имя, Отчество гостя по умолчанию
Если ОТКЛЮЧЕНО "Заполнение ФИО гостя при бронировании"
7.11 Дата рождения гостя при бронировании ОБЯЗАТЕЛЬНО включить "Заполнение ФИО гостя при бронировании"
7.12 Ввод защитного кода (captcha) при бронировании Рекомендуется ставить, если РЕГИСТРАЦИЯ НЕОБЯЗАТЕЛЬНА
7.13 Ввод количества бронируемых номеров в одном заезде ОБЯЗАТЕЛЬНО снять отметку "Заполнение ФИО гостя при бронировании"
7.14 Подтверждение правил отеля при бронировании Текст указать в файле /shelter/template/Rules
7.15 Предоставлять возможность раннего заезда и позднего выезда Позволяет выбирать кроме даты, еще и время заезда
7.16 Максимальное количество заездов для физ.лиц  
7.17 Максимальное количество заездов для юр.лиц  
7.18 Статус брони для ПОЛЬЗОВАТЕЛЕЙ  
7.19 Статус брони для ОРГАНИЗАЦИЙ  
7.20 Проверка на обязательное заполнение основных мест перед заполнением дополнительных  
7.21 Отображать гостей изображениями на странице Выбор номера Создать для каждого типа гостя изображение в разделе /images/guest/ в формате PNG
Название файла соответствует id гостя из функции Список возрастных категорий
7.22 Код типа оплаты Указать из функции Типы оплат
7.23 Разрешенное количество символов для комментария к бронированию  
7.24 Возможность ввода дисконтной карты для бронирования со скидкой  

 

8

 

Пакеты услуг

8.1 Использовать пакеты услуг при бронировании  
8.2 Использовать фильтр услуг Разрешить или запретить вывод услуг из списка ниже
8.3 Перечислить КОДЫ услуг в соответствии с выбранным фильтром выше Если список пуст - доступны все услуги

 

9

 

Отмена бронирования

9.1 Самостоятельная отмена бронирования Указать количество дней до заезда, при которых разрешено отменить бронь
(0 - не предоставлять для всех)
9.2 Отмена бронирования для ПОЛЬЗОВАТЕЛЕЙ В зависимости от статуса созданной брони
9.3 Отмена бронирования для ОРГАНИЗАЦИЙ в зависимости от статуса созданной брони

 

10

 

Оплата

 
10.1 ВНИМАНИЕ! За подключением платежных систем необходимо обратиться в техническую поддержку UCS
10.2 Используемая валюта при платеже Зависит от настроек платежной системы
10.3 Минимальная сумма первого платежа Указан процент от стоимости брони
10.4 Используемая платежная система  

 

11

 

Язык

11.1 Язык по умолчанию  
11.2 Отображаемые языки Перечислить, если несколько.
Доступны RU;EN;LT;BG. Порядок отображения будет соответствовать

 

Описание API ShelterOnlineServer

Описание API ShelterOnlineServer можно скачать тут (формат pdf)

Модули

Настройка интеграции Shelter с системой САНАТОРИУМ

 

Интеграция Shelter и САНАТОРИУМ

 

Для настройки данной интеграции требуется Shelter 2 версии 2.12.122.2390 или новее.
Сотрудники технической поддержки Shelter настройкой системы САНАТОРИУМ не занимаются. Данная интеграция со стороны UCS не лицензируется и распространяется свободно.

Для настройки интеграции необходимо выполнить скрипт от пользователя пользователя SYSDBA :

Открыть IBExpert 

В настройках подключения к БД указать пользователя: SYSDBA, пароль masterkey;

Подключиться к БД;

Открыть редактор скриптов (Ctrl+F12) и выполнить скрипт ;

На основании внесенных данных о заселившихся гостях в PMS «Shelter» в МИС «Санаториум» создаются сущности пациентов в статусе «Проживание без ИБ» для дальнейшего создания историй болезни. Интеграция выполняется посредствам добавления представления (View) в БД PMS «Shelter». Данное представление должно иметь следующее имя - VGUESTS_SANATORIUMINTERGRATION. Перечень полей представления, который необходим для правильной работы интеграции, представлен ниже:
 
PATIENTID идентификатор пациента
LASTNAME фамилия
FIRSTNAME имя
MIDDLENAME отчество
SEX пол (в формате M или F)
BIRTHDATE дата рождения
PHONE контактный телефон
SOCIALSTATUS социальный статус
TICKETSTARTDATE дата начала лечения по путевки
TICKETENDDATE дата окончания лечения по путевке
ROOMNUMBER номер комнаты, в которой проживает пациент
ROOMTYPE тип комнаты, в которой проживает пациент (нужен код)
CODE уникальный код гостя
DOC_TYPE тип документа, удостоверяющего личность
DOCUMENTNAME наименование документа, удостоверяющего личность
DOCUMENTSERIES серия документа
DOCUMENTNUMBER номер документа
DOCUMENTISSUER документ выдан
DOCUMENTISSUEDATE дата выдачи документа
OCCUPATION занимаемая должность
WORKPLACE место работы
COUNTRYNAME страна проживания пациента
SETTLEMENTNAME наименование поселения
SETTLEMENTTYPEID идентификатор типа поселения
AREANAME наименование области
STREETNAME наименование улицы
STREETTYPEID идентификатор типа улицы
HOUSENO номер дома
FLATNO номер квартиры
BUILDINGNO номер строения
FLATLITERA  буква квартиры
ARRIVALDATE дата приезда
DEPARTUREDATE дата отъезда
GUESTSTATUS статус гостя (код данного статуса 50, 52, 300, 400)
GUESTGLOBALID глобальный уникальный идентификатор гостя (пациента), этот идентификатор совпадает у пациента в рамках повторных приездов (идентификатор профиля гостя), по данному идентификатору будет осуществляться привязка предыдущих приездов.
LASTUPDATEDATETIME дата и время последнего апдейта записи гостя
RATECODE код тарифа пациента
RATENAME имя тарифа пациента

 

Данные в систему САНАТОРИУМ попадают после заселения гостя в Shelter:

UCS Service Monitor Server

 

 

 

UCS Service Monitor Server

 

Описание настройки модуля UCS Service Monitor Server (ver. 2.12.115.2275 и выше)

 

UCS Service Monitor Server предназначен для отслеживания зависаний служб ShelterOnlineServer, ShelterTravelLineServer, ShelterWuBookServer,

отправку на e-mail сообщения о не корректности работы, а так же перезапуск этих служб.

 

1. Необходимо создать отдельную директорию в папке с Shelter (MonitorServer к примеру)

2. Скопировать в эту папку :

  • shelter.exe
  • shelter.dll
  • gds32.dll
  • bass.dll
  • borlndmm.dll
  • libeay32.dll
  • ssleay32.dll
  • shelter.ini

3. Далее создать ярлык для shelter.exe из папки MonitorServer и ярлыку прописать ключ : -service_monitor_server -install

4. Запустить ярлык с правами администратора, должно появиться сообщение о успешной установке службы.

5. Перейти во вкладку «Сервисы и оборудование» добавить модуль Online Server. (Рис. 1)

 

(Рис. 1)

 

 

6. Настроить по аналогии с Рис. 2

 

(Рис. 2)

 

 

7. Добавить модуль из Рис. 3

 

 

(Рис. 3)

 

 

8. Заполнить параметры подключения к почтовому серверу: (Рис. 4)

  • 1. Адрес почтового сервера.
  • 2. Порт почтового сервера.
  • 3. Логин почты на которую будут приходить сообщения.
  • 4. Пароль почты на которую будут приходить сообщения.
  • 5. Логин почты с которой будут приходить сообщения.

 

(Рис. 4)

 

 

9. Перейти к настройкам модуля Online Server из п.6

10. Указать e-mail адрес на который будут приходить уведомления для всех полей секции «Email уведомление» и сохранить. (Рис. 5)

 

 

(Рис. 5)

 

 

11. Запустить службу UCSServiceMonitorServer.

 

Данная настройка описывает настройку мониторинг службы ShelterOnlineServer и отправку уведомлений на почту.

Если необходимо мониторить службы ShelterWuBookServer, ShelterTravelLineServer, то добавляем модуль GDS Checker (Рис. 6)

 

(Рис. 6)

 

 

 

Переходим в настройки GDS Checker и настраиваем по аналогии с рис. 6 (заполнить поля в «Email уведомление»)

В поле «Имя службы» прописать имя службы, которую необходимо опрашивать ShelterWuBookServer или ShelterTravelLineServer

и перезагружать автоматически, если нет ответа.

После этого запустить службу UCSServiceMonitorServer

 

(Рис. 7)

 

 

 

Схема работы

ShelterOnlineServer

 

Каждую минуту формируется запрос к службе ShelterOnlineServer :

 

TRY:  SendShelterRequestEx

000000213<?xml version="1.0" encoding="utf-8"?><hotelslist

sign="2df33htujuoi7456432435rg" gds="BOOKING" version="3"/>

 

Возвращается ответ от ShelterOnlineServer :

 

<?xml version="1.0" encoding="windows-1251"?>

<hotelslist gds="BOOKING" version="3" langcode="RU">

Список отелей (пример)

</hotelslist>

 

Количество попыток : 3

 

Если после 3-х запросов hotelslist ShelterOnlineServer не вернет ответ, то будет отправлено уведомление на указанную почту и служба будет перезапущена.

 

 

ShelterWuBookServer/ShelterTravelLineServer

 

Начиная с версии 2.12.115.2275 у служб появился HTTP-сервер, который принимает запросы от UCSServiceMonitorServer.

HTTPсервер работает с портом 7799. Каждые 10 минут формируется запрос :

 

TRY: TServiceMonitorGDS.CheckServiceAvailable GET http://127.0.0.1:7799/status :

 

 

Ответ :

DONE: TServiceMonitorGDS.CheckServiceAvailable Result = 200 OK; Status=1

 

Количество попыток : 3

 

Если после 3х запросов hotelslist ShelterWuBookServer/ShelterTravelLineServer не вернет ответ,

то будет отправлено уведомление на указанную почту и служба будет перезапущена.

 

Служба UCSServiceMonitorServer формирует собственный лог-файл, который находится в папке, указанной в Shelter.ini

 

 

 

Настройка интеграции с терминалом Сбербанк

 

 

Настройка интеграции с терминалом Сбербанк

ВНИМАНИЕ!

Мы не гарантируем работоспособность терминалов других банков после настройки по данному мануалу!

 

1. Специалистами Сбербанка настраивается подключение терминала к ПК и установка Pilot_NT

 

Сотрудники технической поддержки Shelter настройкой терминала не занимаются

 

2. Запускаем Shelter и сразу переходим в настройки. Переходим в «кредитные карты», выбираем пин-пад(SBERBANK2), нажимаем добавить.

    Устройство добавляется в загружаемые модули. Далее указываем путь вручную до библиотеки pilot_nt.dll, которая расположена в папке с Pilot_NT.

 

                           3. Необходимо в Shelter.ini добавить следующую секцию : 

[CREDITCARD]
;заголовок (можно не писать, тогда оставить 1=)
1=SHELTER ПРИМЕР ТЕКСТА
 
; печать заголовка отдельно
header_print_separately=0
 
;раздельная печать (для универсального должна быть выключена! Иначе с двух сторон каждой строчки будет ДОБРО                                       ПОЖАЛОВАТЬ! ... СПАСИБО ЗА ПОКУПКУ!)
;Для ШТРИХ-ФР-К, который подключен не через универсальный драйвер поставить separate_print=1
separate_print=0
 
;количество пустых строк в начале чека
empty_lines_before=0
 
;количество пустых строк в конце чека
empty_lines_after=0
 
; строка определяющая отрезку чека
cut_cmd=~S
 
;по умолчанию (при отсутствии в shelter.ini) header_convert_utf8_to_ANSI=0. Если файл shelter.ini сохранен в кодировке UTF-8, то ;для корректного отображения кириллицы в параметре значения заголовка (1=SHELTER русский текст), при возврате и сверке ;итогов (терминал сбербанк), необходимо параметр header_convert_utf8_to_ANSI выставить в значение единица
;(header_convert_utf8_to_ANSI=1)
header_convert_utf8_to_ANSI=1
 
 
 
Параметры добавленные с версии 2.12.125.2480
 
refund_receipt_count = 1  - При таких настройках, при возврате (терминал сбербанк) количество копий слипа будет 2. При увеличении значение параметра refund_receipt_count на единицу количество копий слипа при возврате увеличится вдвое.
 
preauth_receipt_count = 1 - При таких настройках, при предавторизации количество копий слипа будет 2. При увеличении значение параметра preauth_receipt_count на единицу количество копий слипа при предавторизации увеличится вдвое.
 

   Следует обратить внимание на параметр cut_cmd. Значением этого параметра является символ отрезки чека из настроек терминала.

4. Далее заходим в Shelter → «Настройки системы»→ «Касса»→ «Кредитная карта»→ Использовать авторизационный сервер, например ABG

    ставим галочки на «Использовать авторизационный сервер»«Применять схему прямая продажа» 

и «Делать возврат через сервер кредитных карт независимо от кассовой смены».

 

 

5. После проверяем работу связки Shelter и пин-пада. Заходим в работу с кассой, выбираем киоск, после нажимаем смена → сверка кредитных карт.

    Если запускается процесс сверки итогов, значит все работает корректно.

 

 

Настройка символа отрезки чека

 

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

символ и его приходится искать в слепую. 

Однако рекомендуем начать именно с этого способа:

 

1. Заходим в Shelter.ini, находим секцию [CREDITCARD] и удаляем, либо комментируем параметр «cut_cmd = ».

2. Далее переходим в папку с ПО Сбербанка, обычно располагается по пути: C:\sc552. Находим в этой папке Pinpad.ini.

3. Открываем Pinpad.ini и комментируем параметр «PrinterEnd = » (Если такой параметр присутствует).

    Чтобы закомментировать строку перед нужным параметром поставьте « »

4. Следующим шагом будет проведение тестовой оплаты, либо снятие сверки итогов через Shelter.

5. После успешной оплаты или сверки итогов нам нужно открыть лог Shelter в котором фигурирует платеж или сверка итогов.

6. Находим в логе образ слип-чека и нас интересует строка над самым первым образом в логе:

 

7. Выделенное на скриншоте это информация, которая содержится в слип-чеке, только в виде запроса, который отправляется на терминал.

8. Нас интересует конечные данные этого запроса, поэтому пролистываем блокнот вправо, чтобы увидеть конец запроса. 

    В конце запроса как правило передается: /E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E/E#13;#10; #13;#10; #13;#10; #13;#10; #13;#10;

9. Символ отрезки чека, который нас интересует обычно располагается после символов указанных выше.

 

В нашем случае это символ « | », но может быть и другой.

10. Этот символ, который мы обнаружили в логе и есть символ отрезки чека.

11. Нам остается только зайти в Shelter.ini и в секцию [CREDITCARD] прописать «cut_cmd = | ». После этой настройки слипы будут отрезаться корректно.

 

 

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

Символ отрезки чека настраивается в двух местах - это shelter.ini и pinpad.ini (Pinpad.ini вы можете найти в корне папки с Pilot_nt.dll)

В shelter.ini в секции [CREDITCARD] указываем: cut_cmd = |

В pinpad.ini необходимо указать: PrinterEnd=~S

 

 

 

Работа автономного и интегрированного терминала в рамках Shelter

 

 

Иногда возникают ситуации, когда помимо интегрированного терминала нужно использовать еще автономный.

Включая настройку «Использовать авторизационный сервер ABG» при любой оплате по категории кредитных карт идет обращение к интегрированному терминалу.

Соответственно, вы не сможете проводить фискальные оплаты по кредитным картам проведенным по автономным терминалам.

Для этого в Shelter есть настройка, которая позволит использовать автономные терминалы совместно с интегрированными.

 

1. Заходим в Shelter → «Справочники»→ «Услуги и оплаты»→ «Оплаты»→ Переходим в категорию «Кредитные карты». 

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

для автономного терминала. 

3. Создаем новую оплату по аналогии и устанавливаем чек-бокс «Не использовать ABG»

 

 

 

В дальнейшем, если проводить оплату по этому типу оплаты, то вы будете получать только фискальный чек, а обращение к терминалу происходить не будет.

 

 

 

Интеграция Shelter 2 с системами авторизации WIFI-сетей

 

 

Интеграция Shelter 2 с системами авторизации WIFI-сетей

Проект 2 Модуль 4.

 

Для работы модуля требуется Shelter Online Server версии 2.12.119.XXXX или новее. Лицензия на сам Shelter Online Server не требуется.

Схема работы модуля:

Принцип работы:

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

проживает ли этот гость в гостинице сейчас.

Установка модуля:

Устанавливается служба Shelter Online Server.

Далее, в OnlineServer.xml, перед закрывающим тегом </xml>, добавляется содержимое GetGuestReserv.xml. Ссылка для скачивания

После запуска службы, представителям WIFI, сообщается адрес и порт Shelter Online Server.

 

Интеграция осуществляется со следующими системами:

https://wifinow.ru

https://www.aquivalabs.com/

https://global-hotspot.ru

https://www.connectone.ru/

 

Модуль "Выгрузка в XML"

 

 

 

 

 

 

 

Модуль «Выгрузка в XML» - проект 3 модуль 7              

 Модуль можно скачать тут
Примеры выгрузки гостей из Shelter находятся тут

ВНИМАНИЕ!!! В Москве и Московской области, Контур.ФМС предлагает только один тариф для подключения - "ФМС.Лайт", который не позволяет отправлять данные в МВД в режиме online. Отправка возможна только на бумажном носителе.
 

 

                                       Порядок установки модуля:

                                                      1. Выполняем xmlexport.sql на базе данных.

                                                      2. Далее выполняете еще один скрипт, вы можете его взять тут

                                                      3. И следом выполняем еще один, берем его тут

                                                      4. Прописываем путь к БД и параметры подключения к серверу блокировок в xmlexport.ini.

                                                      5. Запускаем модуль.

                                                      6. Создаем новый шаблон.

 

 

                                 7. Заполняем поля «Наименование шаблона» и «Каталог выгрузки» на вкладке «Основные настройки»Остальные параметры заполняются по желанию.

 

 

                                 8. Добавляем запрос на вкладке «SQL-запрос».

 

                                                                                                

 

 

                                  9. Добавляем xml-шаблон на вкладке «XML-шаблон» и проставляем в нужных местах имена полей из запроса.

 

                                                     

 

        

                                 10. После чего можно сохранить шаблон нажатием кнопки «Сохранить».

                           Далее, если шаблонов несколько, ставим указатель на нужный шаблон и нажимаем кнопку «Выгрузить». Данные выгрузятся в указанный в шаблоне

                              каталог выгрузки:

 

                             

 

                                Необязательные параметры выгрузки:

                                      1. «Группировать файлы...» - указанное значение должно соответствовать наименования поля из запроса. Если соответствие есть, файлы выгрузки                                          будут сортироваться по каталогам вида «каталогвыгрузки\имяполя_значениеполя».

                                      2. «Именование файлов …» - указанное значение должно соответствовать наименованию поля из запроса. Если соответствие есть, файлы выгрузки                                        будут именоваться по значению этого поля. Если в качестве поля указано «FULLNAME» из запроса, то файлы будут вида «Иванов_Иван_Иванович.xml».   
                          К файлам с одинаковым именем добавляется инкрементное значение «Иванов_Иван_Иванович(4).xml».

                                      3. «Удалять декларацию …» - в выгруженных файлах будет отсутствовать <?xml version="1.0"...?>

                                      4. «Удалять пустые элементы …» - в выгруженных файлах будут отсутствовать пустые элементы (<node/> или <node></node>).

                                      5. «Открывать каталог выгрузки …» - после завершения выгрузки будет открыт каталог, указанный в поле «Каталог выгрузки».

                                      6. «Дата выгрузки с» и «по» - параметры даты, которые могут учитываться в запросе. Для этого нужно использовать в запросе параметры                                                        «:STARTDATE» и «:ENDDATE». Дата передает в формате Double (число с плавающей точкой).

 

 

Настройка выгрузки, если две гостиницы находятся в одной базе данных
 

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

(файлы sql_ino.txt sql_rus.txt, находятся в разных папках Russian и Foreigner).

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

Заккоментированное условие вы можете найти в конце запросов, выглядит условие абсолютно одинаково для  российских и иностранных граждан:

 

1. В файле sql_rus и sql_ino условие выглядит так:     -- and H.ID = 1.

2. Вам необходимо раскомментировать строку убрав вначале "--". Далее нужно установить нужное значение в условии. H.ID - обозначает ID отеля из которого

мы хотим выгружать данные.

3. Чтобы узнать ID отеля нужно с помощью программы IBExpert выполнить запрос: "select * from hotels", после выполнения данного запроса вы увидите

список заведенных гостиниц в базе данных.

4. Вам необходимо из нужного вам отеля взять цифру из поля "ID" и вставить ее вместо цифры в условии H.ID = 1.

5. После этого выгрузка будет происходить только из гостиницы ID которой вы указали в запросе.

 

По тому же принципе в программе "XmlExport" настраивается выгрузка для второй гостиницы из БД, где будет просто указан другой ID отеля.

 

 

 

 

Интеграция Shelter 2 с релейным блоком управления светом

 

 

Интеграция Shelter 2 с релейным блоком управления светом

 

Для работы модуля требуется Shelter 2  и Shelter 2 Lite версии 2.12.119.2350 или новее.

 

 

 

Схема работы модуля :

 

Принцип работы :

При выполнении операции заезда/выезда/аннулирования/восстановления, Shelter отправляет команду библиотеке Shelter2gkHub.dll, с указанием

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

 

Установка модуля :

  • Обновить Shelter на версию 119.2350 или выше.
  • Скачиваете сборку тут

 

Прописываете в AbonHost.ini параметры подключения к контроллеру, где:

[Devices]

DeviceIP  —  IP-адрес контроллера

 

Далее, в каталоге shelter2gkhub настраиваете ShGkHubCtrl.ini :

[Server]

IP = 127.0.0.1

Port = 5561

Local = 0

 

Где IP-адрес и порт, параметры запущенного AbonHost, а :

[Light_0]

Id = 1

Hub = 32

Device = 1

Relay = 0

 

[Light_1]

Id = 2

Hub = 32

Device = 1

Relay = 1

 

Параметры реле на контроллере, где :

  • ID — уникальный ID, который указываете в карточке ресурса в Shelter.
  • Hub — 3 часть IP-адреса контроллера, в явном виде.
  • Device — 4 часть IP-адреса контроллера, в явном виде.
  • Relay — номер реле (от 0 до 7).

 

Далее, в карточке ресурса устанавливается чекбокс «Номер (Ресурс) оборудован устройством управления светом» и указываем ID реле

из соответствующей секции [Light_*].

После копируем файлы Shelter2gkHub.dll, Shelter2gkHub.ini, ShGkHubCtrl.ini в каталог с Shelter на рабочих местах и проверяем работу.

 

Корректность настройки, можно проверить утилитой TestDLL в каталоге shelter2gkhub, подложив под нее указанные выше файлы и запустив. 

Далее, указываем ID устройства и нажимаем bLightOn (для включения реле) и bLightOff (для выключения).

 

 

Интеграция Shelter 2 с системой платного телевидения Hoteza

 

 

 

Интеграция Shelter 2 с системой платного телевидения Hoteza

Для работы модуля требуется Shelter2 и Shelter Online Server версии 2.12.118.2325 или новее.

 

 

 

Схема работы модуля:

 

Принцип работы:

При операциях в Shelter 2:

Shelter 2 отправляет идентификатор (ID) поселения в SrvIPTV_XE, далее SrvIPTV_XE запрашивает информацию по данному поселению 

через Shelter Online Server, формирует команду и отправляет ее в Hoteza.

 

Поддерживаемые функции:

  • Заезд гостя
  • Выезд гостя
  • Переезд гостя
  • Отправка сообщений гостю

При операциях Hoteza:

Hoteza отправляет идентификатор поселения (гостя) в SrvIPTV_XE, далее SrvIPTV_XE формирует команду и отправляет через Shelter Online Server, 

полученные данные отправляются обратно в Hoteza.

 

Поддерживаемые функции:

  • Синхронизация базы данных
  • Просмотр баланса гостя
  • Начисление услуг на фолио

 

​Внешний вид модуля при просмотре счета гостя (фолио поселения):

 

Установка модуля:

Скачиваем дистрибутив SrvIPTV_XE по ссылке и распаковываем в любой каталог на сервере, где установлен Shelter 2.

 

Создаем ярлык SrvIPTV_XE_Service.exe  и прописываем в нем ключ: /install

 

 

Запускаем ярлык от имени администратора. Получите информационное сообщение: "Service installed successfully". 

В службах появится - UCS Shelter IPTV Service

 

Далее, настраиваем SrvIPTV_XE.ini

[Shelter_Intermediate] - параметры подключения к Shelter Online Server

TCPHost = 127.0.0.1

TCPPort = 7779

TCPTimeout = 5000

 

[Shelter] - порт, на который будет отправлять команды Shelter.

TCPHost = 0.0.0.0

TCPPort = 51000

 

Дополнительно требуется прописать этот порт в настройках Shelter.

Должен указываться внутренний адрес сервера сети

 

[IPTV] - порт, на который будет отправлять команды Hoteza

RTCPPort = 52000

 

Порядок запуска:

    1. Shelter Online_Server

    2. SrvIPTV_XE

    3. Shelter 2

Возможная проблема с отображением кодировки в логах ShelterOnlineServer связана с тем, что лог-файл пишется с кодировкой Windows-1251, а в логе строка с UTF-8.
Пример : 

name1="Сазонов " name2="Алексей " name="Сазонов РђР»РµРєСЃРµР№"
При этом в логе SrvIPTV и в HOTEZA имя и фамилия гостя будет отображаться корректно.

 

 

 

 

 

Сканер паспортов Cognitive

 

 

Сканер паспортов Cognitive

 

1. Устанавливаем ScAPI;

2. На всю папку Сognitive даем полный доступ;

3. В Shelter заходим в  «Настройки» - «Сервисы и оборудование» жмем «Добавить», выбираем драйвер «Сканер» - «Cognitive Scanify API» (рис. 1)

 

(рис. 1)

 

4. Далее нужно указать путь до библиотеки Cognitive (...\Cognitive\ScanifyAPI\Scanify\Bin32\) (рис.2)

(рис. 2)

 

5. На Windows 8.1 требуется так же прописать этот путь в Path в переменные среды.

Интеграция Модуля управления турникетами с Shelter

 

 

 

 

Интеграция Модуля управления турникетами с Shelter

Цель

Автоматизация прохода гостя в гостиницу после заселения

Схема обслуживания

Гостя заселяют на ресепшене, выдают карту (прикрепляют идентификатор) по которой гость проходит на территорию гостиницы:

Рис.1 Прикрепление идентификатора к фолио гостя

При работе с некоторыми замковыми системами, данная карта может использоваться и как ключ от номера. В данном примере, это отдельный идентификатор для доступа в гостиницу. Турникет оборудован двумя считывателями и двумя контроллерами (одна пара на вход, одна на выход). Осуществить вход может только поселенный гость. Если гость уже прошел, то войти второй раз он не может. Это приравнивается к передаче карты другому гостю. Сначала нужно выйти.  Осуществлять вход/выход гость вправе любое кол-во раз на протяжении всего проживания. Если наступило время выезда, но из Shelter гость еще не выселен, то гость может выйти, а на вход турникет его уже не пропустит. Требуется продлить период проживания (допустим на 1 час). 

Если гость не может войти, то он подходит к администратору. Администратор находит гостя в системе Shelter, заходит на его фолио открывает отчет "Отчет по проходам" (см. Рис.2). В данном отчете отображаются все проходы, включая неудачные с причиной отказа. Данный отчет устанавливается отдельно. Печатная форма приложена к статье. Чтобы гость мог самостоятельно проверить почему турникет его не пускает, можно установить модуль "Инфоплазма" (требуется доработка внешнего вида под требования Заказчика).

 

 

Рис.2 отчет "Отчет по проходам"

 

Протестирована работа в следующих случаях:

1) Поселение
Проход по идентификатору работает корректно. Два раза зайти по одному идентификатору нельзя, два раза выйти по одному идентификатору нельзя;
 
2) Аннуляция поселения
Идентификатор открепляется. Использовать идентификатор для прохода нельзя;
 
3) Сделан идентификатор по брони
Использовать идентификатор для прохода нельзя;
 
4) Для брони сделан идентификатор, сделан заезд по брони
Повторно прикреплять идентификатор не требуется. Идентификатор будет работать для поселения;
 
5) После выезда Гостя воспользоваться идентификатором нельзя;
 
6) При переезде идентификатор работает (корректно переприкрепляется во 2-ую часть Поселения);
 
7) При восстановлении выехавшего поселения идентификатор не восстанавливается. Воспользоваться им нельзя.
 
 

Программное обеспечение

- Shelter 2.12.127.2750 (Шелтер-полная версия, проект 3, модули 1, 2, 3);

- Gkhostconnect 1_95_0_7 (Интерфейс-турникет, проект 4 модуль 2);
 
- TCPCardReader 1_30 (Утилита для работы со считывателями);
 
XX_ACCESS_SH2.sql (Во вложении, специализированный скрипт, необходимо применить на базе SHELTER.FDB, см. http://support.ucs.ru/ru/node/8732);
 
- Отчет взаимодействия с оборудованием "Отчет по проходам" (LOGIN_REPORT.FR3, во вложении, Для всех проходов/попыток прохода).
 
 

Оборудование

- Турникеты (Триподы, см. http://support.ucs.ru/ru/node/8920);

- Контроллеры UCS (http://support.ucs.ru/ru/node/8742);

- Считыватели IronLogic Matrix III RD-ALL (для Турникетов), IronLogic Z-2 USB (Рецепция).

 

Настройка

Shelter

1. Добавляем тип ресурса на вкладке "Справочники"-"Типы ресурсов":

 

Рис.3 Добавление типа ресурса

2. Добавляем ресурс на вкладке "Справочники"-"Ресурсы":

 

Рис.4 Добавление ресурса

 

GKHost

Смотрим статью http://support.ucs.ru/ru/node/8737

GKHostConnect

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

 

Рис.5 Настройки в модуле управления турникетами

После применения скрипта (XX_ACCESS_SH2.sql) необходимо установить параметры в модуле GkHostConnect секция Действия и проверки по SQL-запросам:

Запрос для проверки доступа:

select * from XX_ACCESS_FOR_SH2(:par)
 
Запрос для фиксации прохода:

select * from XX_CHECK_A_FOR_SH2(:par)

 

TCPCardReader

Содержимое decodecards.ini (пример настройки для использования карт Mifare и Em-Marine):
 
[general]
usemask=1
TrackResultLog=

[mask]
card_mif=ifare*
card_em =arine*

[cards.card_em]
ExcludedPrefix=arine[
code=200
CardDecodeType = MASK
mask=****dddddddddd

[cards.card_mif]
excludedprefix=ifare[
CardDecodeType=MASK
mask=hhhhhhhh
code=200

Содержимое tcpcardreader.ini:

[application]
AutoStart = 1
AutoHide = 1

[TCP]
PORT=7760
IP=0.0.0.0

[READER1]
COMPORT=5
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1
;Параметр Prefix задаёт строку, которая передаётся клиентам перед первым прочтенным символом
Prefix=;
;Параметр Postfix задаёт строку, которая передаётся клиентам после последнего прочтенного символа
Postfix=?

;Использовать decodecards.dll
useDecodeCards=1
StartTermChars=M
FinishTermChars=?#13;#10;#0;

;Файл логирования треков
TrackLogFile=
ConvertTrackLog=0
IncludeTypeStartTermChar=0
IncludeStartTermChar=0
NeedCheckAndReopenCom=1

[log]
level=30
debuglevel=30
showlog=1
ВложениеРазмер
xx_access_sh2.zip1.37 КБ
login_report.zip3.48 КБ

Выгрузка платежей из банк-клиента в Shelter2 через Translater1C

 

 

Translater1C

 

Программа загрузки платежных операций в Shelter2.

Рис. №1. Общий вид Translater1C

 

Рассмотрим на примере банк клиента 1С.

 

Скачать необходимую сборку можно тут

 

Пример настройки Translater1C.ini

 

DBName  = 127.0.0.1/3080:D:\Base\SHELTER.FDB  - Путь к БД Shelter

SaveToLog = 1  - Сохранять лог или нет (1 - да, 0 - нет)

TrSourceDir = D:\SHELTER\Translater1C\source\  - Путь к папке, где искать файлы

TrTargerDir = D:\SHELTER\Translater1C\Target\  - Папка, в которую складываются обработанные файлы

TrErrorDir = D:\SHELTER\Translater1C\error\  - Папка, в которую складываются ошибочно обработанные файлы

ScanInterval = 5000  - Интервал сканирования (в милисекундах)

WhereSeek = НазначениеПлатежа  - Строка в файле, в которой содержится необходимая для Shelter информация

WhatSeek = BR  - Подстрока, которую искать в строке WhereSeek. После «BR» символы являются номером счета.

BeginOfBlock = СекцияДокумент=  - Часть строки, определяющая начало блока

EndOfBlock = КонецДокумента  - Строка, определяющая конец блока

OperCode = НАЛ  - Код платежа, который регистрирует на фолио

AutoStart = 1  - Начало обработки документов при запуске программы: (1 – да, 0 – нет)

 

 

 

Схема работы

 

В программе Shelter выставляются счета на оплату по безналичному расчету. Номер счета формируется следующим образом:

<Номер брони>BR<номер счета>

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

файл экспорта данных.

Пример данного фала 20120125132950.txt

Программа Translater1C обрабатывает все файлы, находящиеся в директории TrSourceDir.

Обработка файла производиться по блочно. Начало блока указывает параметр BeginOfBlock. Конец блока параметр EndOfBlock. С начала блока до его конца в файле ищется строка из параметра WhereSeek.

Далее в этой строке ищется позиция параметра WhatSeek. Далее набор цифр после параметра WhatSeek является «номером счета».

Далее по номеру счета ищется «номер брони» и на фолио начисляется сумма денежных средств указанные после слова «Сумма»

 

 

Описание схемы работы Shelter

 

1) Регистрируется бронь.

2) Производится выставление счета.

3) Производится отправка клиенту счета.

4) Клиент оплачивает счет и в банк клиент 1С приходят средства.

5) Приложение 1CClientBankExchange обрабатывает данные и формирует файлы, представленные в примере 20120125132950.txt

6) Программа обрабатывает файл и выдает следующий результат. (см. Рис. №2)

 

Рис. № 2 Результат работы программы Translater1С

 

7) Если после зайти на фолио гостя, то там будет указан платеж указанный в файле. (Рис. № 3)

 

Рис. № 3 Вид фолио брони

 

 

 

 

 

Интеграция Shelter 2 с системой платного телевидения NetUp

 

Интеграция Shelter 2 с системой платного телевидения NetUp
Для работы модуля требуется Shelter2 и Shelter Online Server версии 2.12.118.2325 или новее, а так же версия SrvIPTV_XE_Service 1.0.0.9

 

Схема работы модуля:
 


 

Принцип работы:

При операциях в Shelter 2:

Shelter 2 отправляет идентификатор (ID) поселения в SrvIPTV_XE_Service, далее SrvIPTV_XE_Service запрашивает информацию по данному поселению 

через Shelter Online Server, формирует команду и отправляет ее в NetUp.

Поддерживаемые функции:

  • Заезд гостя
  • Выезд гостя
  • Переезд гостя
  • Отправка сообщений гостю

 

При операциях NetUp:

NetUp отправляет идентификатор поселения (гостя) в SrvIPTV_XE, далее SrvIPTV_XE формирует команду и отправляет через Shelter Online Server, 

полученные данные отправляются обратно в NetUp.

 

Поддерживаемые функции:

  • Просмотр баланса гостя
  • Просмотр неоплаченных услуг

 

 

Установка модуля:

Скачиваем дистрибутив SrvIPTV_XE_Service по ссылке и распаковываем в любой каталог на сервере, где установлен Shelter 2.
Для передачи флага FD и его значения, необходимо, чтобы рядом с 
SrvIPTV_XE_Service находился SQL_GetFolio.sql, который можно скачать по ссылке выше.
В 
SQL_GetFolio.sql находится запрос, который возвращает список неоплаченных услуг.

Создаем ярлык SrvIPTV_XE_Service.exe  и прописываем в нем ключ: /install

Запускаем ярлык от имени администратора. Получите информационное сообщение: "Service installed successfully". 

В службах появится - UCS Shelter IPTV Service

 

Далее, настраиваем SrvIPTV_XE.ini

[Shelter_Intermediate] - параметры подключения к Shelter Online Server

TCPHost = 127.0.0.1

TCPPort = 7779

TCPTimeout = 5000

 

[Shelter] - порт, на который будет отправлять команды Shelter.

TCPHost = 0.0.0.0

TCPPort = 51000

 

Дополнительно требуется прописать этот порт в настройках Shelter.

Должен указываться внутренний адрес сервера сети

 

 

[IPTV] - порт, на который будет отправлять команды NetUp

TCPPort = 52000

 

Порядок запуска:

    1. Shelter Online_Server

    2. SrvIPTV_XE

    3. Shelter 2

Возможная проблема с отображением кодировки в логах ShelterOnlineServer связана с тем, что лог-файл пишется с кодировкой Windows-1251, а в логе строка с UTF-8.
Пример : 

name1="Сазонов " name2="Алексей " name="Сазонов РђР»РµРєСЃРµР№"
При этом в логе SrvIPTV и в NetUp имя и фамилия гостя будет отображаться корректно.

 

Модуль "Выгрузка в StoreHouse4"

 

 

 

Модуль «Выгрузка в StoreHouse4»

 

Модуль можно скачать тут

 

Порядок установки модуля:

1. Выполняем скрипты из архива exportdata_1_7_0_1.rar на базе данных Shelter в следующем порядке:

  • exportdata.sql
  • exportdata_D_INTEGER.sql
  • exportdata_D_1KMEMO.sql

2. Создаем папку ImportToSH4.

3. Копируем все содержимое папки с ImportRK.exe и переносим в созданную папку ImportToSH4

4. SHTR.dll и Shelter.ini из архива exportdata_1_7_0_1.rar копируем с заменой в новую папку ImportToSH4 с заменной.

!!!ВАЖНО! Обязательно заменять вышеуказанные файлы в новой созданной папке с ImportRK.exe!

5. ExportData.exe и ExportData.ini переносим в папку ImportToSH4.

6. В ExportData.ini указываем путь до БД Shelter.

7. Открываем ExportData.exe. (Рис. 1)

(Рис. 1)

 

Для того, чтобы войти в ExportData нужно, чтобы в Shelter был пользователь с правами «R» и цифровым паролем

или завести такого, в случае его отсутствия.

 

8. Добавляем условие выгрузки (Рис. 2)

 

 (Рис. 2)

 

 

Настройка условий выгрузки.

 

(Рис. 3)

 

Описание полей

Код

Уникальный код для данного условия выгрузки. В SH4 не передается.
Наименование Наименование товарной группы в справочнике товаров SH4. Данная товарная группа будет автоматически добавлена в группу «Меню ресторана». (Рис 4). Будет создано «Место реализации» с таким названием. См. рис 5
Место реализации Код места реализации См. рис 5
Префикс для элементов Префикс для кодов товаров. См.рис 6
Префикс Префикс группы товаров см.рис 6
Внешний ID Номер группы товаров. Объединение Префикса и Внешнего ID даст код группы. ВНИМАНИЕ! Важно чтобы данный ID не пересекался с другими Внешними ID.
Тип экспорта Возможны 3 варианта: «Услуги», «Номерной фонд», «Номерной фонд и корпуса»
Доп. опции экспорта Задает аналитику выгрузки. Предопределенные варианты.
Включен Если данный флаг установлен, то условие выгрузки активно

 

(Рис.4)

(Рис. 5)

(Рис. 6)

 

 

Тип экспорта «Услуги»

 

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

что Внешний ID не должен пересекаться с Внешним ID у групп услуг.

На рис.7 максимальный внешний ID у групп выгружаемых услуг 900, а Внешний ID - 1000.

Для типа экспорта «Услуги» дополнительные опции недоступны.

 

(Рис. 7)

 

После экспорта данных в SH4, создана группа верхнего уровня «Реализация услуг» в которой дерево товаров такой же структуры,

как и в Shelter. (Рис.8)

Если в данную смену были реализованы отмеченные услуги, то в SH4 будет сформирован документ расхода.(рис.9)

 

(Рис. 8)

 

(Рис. 9)

 

 

 

Тип экспорта «Номерной фонд»«Номерной фонд» и корпуса

 

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

Если делать выгрузку без доп. опций, то каждый выезд из номера дает кол-во «единица», при этом не важно сколько гостей проживало в номере.

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

в этом номере. Уникальными считаются гости, на которого заведена регистрационная карта гостя. См. рис 10. При выселении данной заявки в выгрузку

попадет кол-во 2. Доп. место учитываться не будет.

 

(Рис. 10)

 

Например, если мы хотим выгружать выезд из номеров только первого корпуса, то нужно настроить условие выгрузки, аналогично тому,

как показано на рис.11.

(Рис. 11)

 

 

После успешного экспорта данных в SH4 появится товарная группа, список товаров и документы расхода. См. рис.12

 

(Рис. 12)

 

 

 

Не отображаются иконки в ExportData

 

Если вы столкнулись с проблемой, что при входе в ExportData у вас не отображаются иконки, вам нужно сделать следующее:

   1. Скачать архив skins.rar с FTP

   2. Папку skins из архива помещаем в любое удобное место.

   3. Файл ShelterIB.ini необходимо поместить по пути C:\Windows

   4. В ShelterIB.ini нужно прописать путь до файла skins.ini, который распологается в ранее разорхивированной папке skins. (Рис.13)

 

(Рис. 13)

 

После проделанных настроек иконки в ExportData должны отобразиться.

 

 

 

 

Модуль "Выгрузка в StoreHouse5"

 

 

 

 

Выгрузка данных в SH5 с помощью QUSH

Для выгрузки данных из Shelter в StoreHouse5 используются утилиты ExportData (из поставки ПО "Абонемент") и QUSH (SH5).

Для работы с QUSH, на базе Shelter необходимо применить скрипт export_to_storehouse5.sql из поставки утилиты ExportData.

Данный функционал тестировался на версиях ПО "Shelter" 2.12.125.2480 и ExportData 1.9.0.2.

Утилиту ExportData можно найти в поставке Абонемент в папке FullversionVerxxx\util\ExportData\

 

Настройка условий выгрузки

В файле ExportData.ini указать путь БД Shelter.
В программе ExportData.exe добавляются условия выгрузки. См. рис.1.

 

Код

уникальный код для данного условия выгрузки. 

Наименование

Наименование товарной группы в справочнике товаров SH5

Место реализации

Наименование места реализации См. рис 3

Префикс для элементов

Для SH5 не актуально

Префикс

Для SH5 не актуально

Внешний ID

Для SH5 не актуально

Тип экспорта

«Услуги», «Номерной фонд»

Доп. опции экспорта

Задает аналитику выгрузки. Предопределенные варианты.

Включен

Если данный флаг установлен, то условие выгрузки активно.

Выгружать место реализации как группу услуг Для SH5 данный флаг должен быть снят.

 

 

 

Рис.1

 

Рис.3

Рис.4

 

Тип экспорта «Услуги»

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

В данной интеграции связь сущностей ПО "Shelter" и ПО SH5 происходит по уникальному идентификатору - guid.

Для типа экспорта «Услуги» дополнительные опции недоступны.

После экспорта данных в SH5, номенклатура и группы услуг ПО Shelter будут ипортированы в SH5 (рис.6.), корневую группу товаров необходимо выбрать в настройках модуля QUSH на вкладке Справочники. (Рис.7.)

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

Рис.6

Рис.7

Рис.8

 

Тип экспорта «Номерной фонд»

Рис.9

Рис.10

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

Если делать выгрузку без доп. опций, то каждый выезд из номера дает кол-во «единица», при этом не важно сколько гостей проживало в номере.

Для типа экспорта «Услуги» дополнительные опции недоступны.

После экспорта данных в SH5, номенклатура и группы услуг ПО Shelter будут ипортированы в SH5 (рис.11), корневую группу товаров необходимо выбрать в настройках модуля QUSH на вкладке Справочники. (Рис.12) 

Рис.11

Рис.12

Настройка транспорта

 

В ПО QUSH необходимо создать связку с Shelter (файл->Связки с "Абонемент"->правая кнопка мыши->создать, На момент написания статьи пункт "Связки с Shelter" отсутствовует).
В настройках необходимо выбрать товарную группу на вкладке "Справочники"  и настроить связь с БД SH5 и БД Shelter (рис.13). Прим.: Для подключения QUSH к БД ПО Shelter необходим провайдер LCPI OLE DB Provider for InterBase [v3] (можно скачать в интернете или взять на нашем ftp в папке /rk7/INSTALL/OTHER/IBProvider/).

 

 

Рис.13

 

Не отображаются иконки в ExportData

 

Если вы столкнулись с проблемой, что при входе в ExportData у вас не отображаются иконки, вам нужно сделать следующее:

   1. Скачать архив skins.rar с FTP

   2. Папку skins из архива помещаем в любое удобное место.

   3. Файл ShelterIB.ini необходимо поместить по пути C:\Windows

   4. В ShelterIB.ini нужно прописать путь до файла skins.ini, который распологается в ранее разорхивированной папкеskins. (Рис.14)

 

Рис. 14

 

После проделанных настроек иконки в ExportData должны отобразиться.

Модуль CSV Импорт

 

 

 

Модуль CSV Импорт 

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

Данный модуль не лицензируется, предоставляется на бесплатной основе.

Скачать модуль можно тут.

В файле CSVParser.xml указать путь до БД Shelter.

Рабочее окно программы : 

ВНИМАНИЕ!!! Сотрудники комании UCS не занимаются выгрузкой списка гостей из других гостиничных систем. Так же, рекомендуем все последующие действия вначале выполнять на тестовой БД Shelter2.

Структура выгруженного файла должна быть следующего формата : 

"Иванов";"Иван";"Иванович";"Иванов Иван Иванович";"7374";"178910";"УВД Заволжского р-на";"г.Ульяновск";" 702-013";"Россия";"testivanov@yandex.ru";"7859125"

Разделитель - ;

Формат даты/времени - числовой

Содержимое полей должно быть обернуто в апострофы (")

Далее, в выгруженном файле, в самой первой строке, мы "сопоставляем" значения с полями в БД Shelter (для сопоставления рекомендую использовать Notepad++):

NAME;NAME1;NAME2;FULLNAME;DOC_SERIES;NOGUEST;NOCONTENT;BIRTH_LOCALITY;DOC_CODEDEPAT;;EMAIL;PHONES

Где :

 
NAME - фамилия гостя

NAME1 - имя гостя

NAME2 - отчество гостя

FULLNAME - ФИО гостя

DOC_SERIES - серия паспорта

NOGUEST - номер паспорта

NOCONTENT - кем выдан

BIRTH_LOCALITY - город рождения

DOC_CODEPAT - код подразделения

EMAIL - почта гостя

PHONES - номер телефона гостя

Если в выгруженном файле присутсвутют поля, которые в Shelter не имеют аналогов, то их можно пропустить, указав над соответствующим полем разделитель - ;

После соответствующих настроек, *.csv файл выглядит так : 

NAME;NAME1;NAME2;FULLNAME;DOC_SERIES;NOGUEST;NOCONTENT;BIRTH_LOCALITY;DOC_CODEDEPAT;;EMAIL;PHONES
"Иванов";"Иван";"Иванович";"Иванов Иван Иванович";"7374";"178910";"УВД Заволжского р-на";"г.Ульяновск";" 702-013";"Россия";"testivanov@yandex.ru";"7859125"
"Петров";"Петр";"Петрович";"Петров Петр Петрович";"5367";"758631";"ОУФМС России по Сар. обл.";"г.Балаково";" 650-121";"г.Балаково";"testpetrov@yandex.ru";"9311254"
"Сидоров";"Георгий";"Александрович";"Андреев Вячеслав Александрович";"4004";"194177";"14о.м.Кировского р-на г.Санкт-";"г.Санкт-Петербург";"601-088";"г.Тверь";"testsidorov@yandex.ru";"84958006332101"
 
Необходимо нажать "Запустить" и в появившемся окне выбрать сформированный ранее *.csv файл - программа начнет предварительную загрузку в область memo (утилита не загружает данные в БД Shelter, а только "парсит" выбранный файл)
На выходе мы получаем готовый скрипт для загрузки в БД Shelter 2 :
Значение ID берется из базы данных Shelter автоматически, с добавлением единицы, значение GUESTTYPE по умолчанию 2.
Далее скопировать сформированный скрипт в IBExpert (через ctrl+F12) и выполнить (F9)
ВНИМАНИЕ!!! Записи, которые вернулись с ошибкой после выполнения скрипта, в БД не попадут
Если неверно сопоставить поля, то можно получить следующую ошибку : 

Содержимое *.csv файла : 

NAME;NAME1;NAME2;FULLNAME;DOC_SERIES;NOGUEST;NOCONTENT;BIRTH_LOCALITY;DOC_CODEDEPAT;;EMAIL;PHONES
"Иван";"Иванович";"Иванов Иван Иванович";"7374";"178910";"УВД Заволжского р-на";"г.Ульяновск";" 702-013";"Россия";"testivanov@yandex.ru";"7859125"
"Петров";"Петр";"Петрович";"Петров Петр Петрович";"5367";"758631";"ОУФМС России по Сар. обл.";"г.Балаково";" 650-121";"г.Балаково";"testpetrov@yandex.ru";"9311254"
"Сидоров";"Георгий";"Александрович";"Андреев Вячеслав Александрович";"4004";"194177";"14о.м.Кировского р-на г.Санкт-";"г.Санкт-Петербург";"601-088";"г.Тверь";"testsidorov@yandex.ru";"84958006332101"
 
Как видно, в первой строке отсутсвуте фамилия гостя, из-за чего нарушается общая структура файла, после чего мы получаем ошибку, как на скриншоте выше.
ВНИМАНИЕ!!! После загрузки гостей в БД Shelter2, в обязательном порядке необходимо изменить значение генератора G_GUETS_ID через IBExpert, иначе при создании гостя в Shelter появится такая ошибка :

Необходимо через IBExpert выполнить следующий запрос (F12) : 
select max(id) from guests
Который вернет максимальное значение поля ID для таблицы Guests. В моем случае это 367190 : 

Далее, в строке поиска IBExpert, вводим 
G_GUETS_ID и ищем :

Открыв этот генератор, изменяем значение на то, что вернул предыдущий запрос и сохраняем (F9)

После этого можно создавать новые карточки гостя в Shelter.
Результат сохранения гостей через утилиту CSV импорт : 

 

 
 
 
 

 

Модуль Выгрузка в 1С

 

 

Руководство пользователя

по работе с обработкой переноса данных из Shelter в 1С:Бухгалтерия (редакции 2.0) 1С:Предприятия 8.2, 1С:Бухгалтерия (редакции 3.0) 1С:Предприятия 8.2 (8.3) и в 1С:Бухгалтерия (редакции 4.5) 1С:Предприятия 7.7

 

Дистрибутив и необходимые обработки находятся тут

ВНИМАНИЕ!!! При работе с ФФД 1.05, при проведении полного расчета после принятий платежей с ПРЕДОПЛАТА/ПРЕДОПЛАТА 100% и зачета аванса (предварительная оплата(аванс)) после принятия платежа с признаком АВАНС, в 1С информация по этим признакам способа расчета передаваться не будет, так как данные признаки способа расчета не являются операцией приема денежных средств от клиента.

 

Описание программного комплекса.

 

Программа предназначена для загрузки данных из Shelter в 1С:Бухгалтерию (редакции 3.0) 1С:Предприятия 8.2(8.3), 1С:Бухгалтерию (редакции 2.0) 1С:Предприятия 8. (Важно! Если 1.6, то обновить до 2.0) и в 1С:Бухгалтерию (редакции 4.5) 1С:Предприятия 7.7. Программа загружает все наличные и безналичные платежи и реализацию услуг. Все типы платежей и реализации услуг переносятся опционально. Что позволяет использовать программу совместно с клиент-банком и другими обработками для 1С:Предприятия. Программа является обработкой, написанной на языке «1С» с открытым исходным кодом, что позволяет пользователю самостоятельно вносить изменения в порядок загрузки данных.

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

 

Описание поставки программного комплекса.

Установочный диск (архив):

Firebird_ODBC_2.0.0.148_win32.exe — ODBC драйвер для FireBird

GDS32.DLL – клиентская библиотека FireBird.

UCSimportFromShelterTo1C8_BUX_3_0_709.epf – Обработка 1С:Предприятия 8.2 (8.3) Конфигурация Бухгалтерия предприятия, редакция 3.0. Работает с версиями Shelter 709 и выше, Абонемент 68.

UCSimportFromShelterTo1C8_BUX_3_0_709_ИзФайла.epf – Обработка 1С:Предприятия 8.2 (8.3) Конфигурация Бухгалтерия предприятия, редакция 3.0. Работает с версиями Shelter 709 и выше, Абонемент 68.

UCSimportFromShelterTo1C8_BUX_3_0_709_ВыборОтеля.epf – Обработка 1С:Предприятия 8.2 (8.3) Конфигурация Бухгалтерия предприятия, редакция 3.0. Работает с версиями Shelter 709 и выше, Абонемент 68.

UCSimportFromShelterTo1C8_2_BUX_709.epf – Обработка 1С:Предприятия 8.2 Конфигурация Бухгалтерия предприятия, редакция 2.0. Работает с версиями Shelter 709 и выше, Абонемент 68.

UCSimportFromShelterTo1C8_2_BUX_709_ЧастноеЛицо.epf - Обработка 1С:Предприятия 8.2 Конфигурация Бухгалтерия предприятия, редакция 2.0. Все контрагенты — частные лица заменены одним контрагентом Частное Лицо. Работает с версиями Shelter 709 и выше, Абонемент 68.

UCSimportFromShelterTo1C8_2_BUX_709_Загрузка_ИЗ_Файла.epf - Обработка 1С:Предприятия 8.2 Конфигурация Бухгалтерия предприятия, редакция 2.0. Данные при выгрузке в 1С берутся не из базы Shelter непосредственно, а из файлов, созданных в базе Shelter.

UCSimportFromShelterTo1C8_2_BUX_709_ВыборОтеля.epf – Обработка 1С:Предприятия 8.2 Конфигурация Бухгалтерия предприятия, редакция 2.0. Работает с версиями Shelter 709 и выше, Абонемент 68.

UCSimportFromShelterTo1C8_BUX.epf - Обработка 1С:Предприятия 8. Конфигурация Бухгалтерия предприятия, редакция 2.0. Работает с версиями Shelter ниже 709.

UCSimportFromShelterTo1C8_BUX_Казахстан.epf - Обработка 1С:Предприятия 8.2 Конфигурация Бухгалтерский учет для Казахстана, редакция 2.5. Работает с версиями Shelter ниже 709.

UCSimportfromShelterTo1C77_Complex_709.ert – Обработка 1С:Предприятия 7.7. Комплексная конфигурация ред. 4.5. Работает с версиями Shelter 709 и выше, Абонемент 68.

UCSimportfromShelterTo1C77_BUH_709.ert - Обработка 1С:Предприятия 7.7. Конфигурация Бухгалтерский учет, редакция 4.5. Работает с версиями Shelter 709 и выше, Абонемент 68.

UCSimportfromShelterTo1C77_USN_ЧастноеЛицо_709.ert - Обработка 1С:Предприятия 7.7. Конфигурация Упрощенная система налогообложения, ред. 1.3. Все контрагенты — частные лица заменены одним контрагентом Частное Лицо. Работает с версиями Shelter 709 и выше, Абонемент 68.

UCSimportfromShelterTo1C77_USN_709.ert - Обработка 1С:Предприятия 7.7. Конфигурация Упрощенная система налогообложения, ред. 1.3. Работает с версиями Shelter 709 и выше, Абонемент 68.

 

Описание установки программного комплекса.

Проверить наличие лицензии (проект 4, модуль 12)

Установить ODBC драйвер (Firebird_ODBC_2.0.0.148_win32.exe) для 32-битной ОС.

Либо установить драйвер (Firebird_ODBC_2.0.0.151_x64.exe) для 64-битной ОС.

Скопировать библиотеку GDS32.DLL в Windows\System32 (если ее там нет) для 32-битной ОС, либо в Windows\sysWOW64 и Windows\System32 для 64-битной ОС

ВАЖНО!!! Иногда бывают случаи, когда необходимо использовать модифицированную версию библиотеки gds32.dll - зависит от разрядности 1С. Скачать ее можно тут
ВАЖНО!!! На актуальной версии Shelter 2 можно использовать стаднартный сервер блокировок для подключения(UCS Shelter Lock Server). Убедиться, что в папке UDF на сервере Shelter присутствует sh2_udf.dll

Из 1С-Бухгалтерии v8.1 ред. 2.0 запустить UCSimportFromShelter.epf или из 1С-Бухгалтерии v7.7 ред. 4.5 запустить UCSimportFromShelter.ert.

Если используется v8.2, предварительно открыть обработку в конфигураторе для конвертации.

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

 

Проверить подключение можно следующим образом:

Если запустить ODBC из директории SYSTEM32, настроить по аналогии с рисунком 1 и нажать "Проверка соединения", то получим ошибку, что GDS32.dll не загружена. Также эта ошибка может возникать из-за версионности библиотеки (x32/x64).

Рис 1

Если запустить ODBC из директории SYSWOW64 и по аналогии настроить, то ошибок не будет и соединение с БД пройдет корректно

Рис 2.

Также неоходимо проверить корректность директории SYSWOW64 и SYSTEM32, т.к может быть установлено несколько ОС и библиотека скопирована в не тот экземпляр windows.

 

 

Описание настройки программного комплекса.

 

[LOCK.SERVER]

TCPHost: ip адрес или dns имя сервера блокировок.

TCPPort: tcp порт сервера блокировок.

Проверить настройки сервера блокировок можно кнопкой «Проверить».

DbName: ip адрес или dns имя сервера FireBird и путь к файлу БД.

Кнопка «Сформировать список отелей»: при её нажатии считывается информация из Абонемента(Shelter) по отелям и организациям-собственникам. Заполняются: поле списка «Наименование отеля», поле списка выгруженных значений «Наименование организации».

«Наименование отеля»: тот отель, по которому будут заполнены и загружены данные из Абонемента(Shelter).

«Наименование организации: та организация, по которой будут заполнены и загружены данные из Абонемента(Shelter).

Организация: Организация в 1С:Предприятие для создания документов.

Группа контрагентов: Группа контрагентов в 1С:Предприятие. В эту группу будут заноситься новые контрагенты из Shelter с указанием их адреса и паспортных данных (если клиент - физ.лицо).

Группа услуг: группа справочника номенклатура в 1С:Предприятие. В эту группу будут заноситься новые услуги из Shelter, т.е номенклатура с признаком услуг в Shelter.

Группа товаров: группа справочника номенклатура в 1С:Предприятие. В эту группу будет заноситься новый товар из Shelter, т.е номенклатура с признаком товара в Shelter.

Склад: Место Хранения (Склад) в 1С:Предприятие. Для подстановки в документы. Необязательный параметр, так как номенклатура Shelter — суть услуги.

Банковский счет (кк): Банковский счет в 1С:Предприятие. Для отражения операций оплаты по кредитным картам.

Платежные карты

Банковский счет (бп): Банковский счет в 1С:Предприятие. Для отражения операций оплаты банковскими переводами.

Флажок «Загружать реализации услуг». Указывает, загружать ли документы «Реализация товаров и услуг». При загрузке документов реализации если сумма указана отрицательная, то вместо документа "Реализация товаров и услуг" формируется документ "Возврат товаров от покупателя". Этот документ только записывается (не проводится), т.к. в колонку "Номенклатура" из Shelter может переноситься не только товар, но и услуга. Поэтому (на усмотрение бухгалтера) можно сделать изменения в конфигурации, которые позволят провести этот документ, или перевыбрать услугу на товар и тоже провести.

Флажок "Группировка услуг по контрагенту". При включенном флаге суммируются по контрагентам количество и суммы услуг за день. Т.е., если по контрагенту за день введена какая-либо услуга и она же прошла как возврат(отсторнирована) на эту же сумму, то при включении этого флажка не будут формироваться документы  "Реализация товаров и услуг" и "Возврат товаров от покупателя". При этой группировке не учитываются даты начала и окончания оказания услуг.

Флажок «Загружать оплаты наличными». Указывает, загружать ли документы «Приходный кассовый ордер» и «Расходный кассовый ордер». Если сумма указана отрицательная, то вместо документа "Приходный кассовый ордер" формируется документ "Расходный кассовый ордер".

Флажок «Загружать оплаты кредитными картами (кк)». Указывает, загружать ли оплаты кредитными картами.

Вид загрузки КК: «Оплата платёжной картой» либо «Операция БУ». Если выбрать значение «Оплата платёжной картой», при загрузке будут сформированы документы «Оплата платёжной картой». Если выбрать значение «Операции БУ» будут формироваться два вида документа «Операция БУ» (Проводки: Дт 57.03  Кт 62.02) и «Поступление на расчетный счет» (Проводки: Дт 51  Кт 57.03).

Флажок «Загружать оплаты банковским переводом (бп)». Указывает, загружать ли документы «Поступление на расчетный счет в банке».

Флажок «Выгрузка услуг в последний день месяца». Указывает, выгружаются ли услуги в последний день месяца независимо от того, выехал ли гость.

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

Флажок «Формировать счета - фактуры». Указывает, формировать ли на основании созданного проведенного документа "Реализация товаров и услуг" счет-фактуру выданную. По кнопке "Печать методом подстановки" можно увидеть печатную форму счета-фактуры, сформированную методом "подстановки". Если в этой печатной форме в колонке оказанных услуг необходимо вместе с наименованием услуги указывать даты заезда-выезда гостя, то в списке кодов, вызванных по кнопке "Коды услуг", необходимо отметить эти коды. Коды совпадают с кодами услуг из Shelter.

Флажок «Загружать счета». Показывать/Загружать ли выставленные счета на оплату покупателю. Счет выставляется только юридическому лицу.

Флажок «Частное лицо»(Только для Бухгалтерия 3.0). Указывает, формировать ли все документы частных лиц на одного контрагента «Частное лицо».

Рис.1

 

P.S.: Образцы всех настроек показаны на рис.1

Рис.2

 

Загрузка данных.

 

После того, как все настройки сделаны. Нужно их сохранить, нажав кнопку «Сохранить параметры» .

Потом нажать кнопку «Заполнить». Просмотреть и отметить нужные документы. Нажать либо кнопку «Загрузить» на каждой нужной закладке либо «Загрузить все». См. Рис.2

Рис.3

На командной панели имеются 4 кнопки:

 

Кнопка «Коды услуг», по которой заносятся в список код услуги из Shelter. При печати счет - фактуры методом «подстановки» эти услуги печатаются с датой проживания. См. Рис.3

Рис.4

 

 

Кнопка «Соответствие контрагентов 1С и Shelter» показывает наличие (выделено зеленым цветом) или отсутствие (показано в таблице «Соответствие не найдено»)

контрагентов, которые будут участвовать в создании документов. Если нажать кнопку «Заполнить», то для всех строк списка внизу формы будут добавлены новые элементы в справочник Контрагенты в группу контрагентов, которая указана в настройках. См. Рис.4

 

 

Кнопка «Соответствие номенклатуры 1С и Shelter» показывает наличие (выделено зеленым цветом) или отсутствие (показано в таблице «Соответствие не найдено») номенклатуры, которые будут участвовать в создании документов. Если нажать кнопку «Заполнить», то для всех строк списка внизу формы будут добавлены новые элементы в справочник Номенклатура в группу услуг либо группу товаров, указанных в настройках в зависимости от вида номенклатуры.См. Рис.5

 

См. Рис.5

 

Кнопка «Печать Запроса». По ней в удобной форме можно посмотреть результат запроса из Shelter (Абонемента). Данная печатная форма используется в случайх, когда необходимо выяснить какие-либо несоответствия данных , полученных из Shelter. Данные запроса могут группироваться различным способами для удобства чтения информации. При необходимости форму можно распечатать. Пример формы печати запроса см. на рис.6

Рис.6

 

Возможные ошибки при подключении к базе данных SHELTER( Абонемент) и методы их решения

 

 

  1. Сообщение в 1С об ошибке при вызове метода контекста (Execute): «Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver][Firebird]invalid request BLR at offset 63

function CHKLIC is not defined
module name or entrypoint could not be found»

Причина ошибки: в базе данных не найдена функция, отвечающая за нахождение лицензии выгрузки в 1С.Метод исправления ошибки: в папку UDF необходимо поместить файл sh_licudf.dll . И кроме того необходимо выполнить скрипт script_1c.sql.

 

 

  1. Сообщение в 1С об ошибке при вызове метода контекста (RecordCount)

Если НаборЗаписей.RecordCount() <> 0

По причине: Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт. В той же задаче сообщение об ошибке SQL error code = - 104. Причина ошибки: возможные ошибки в SQL запросе, в том числе использование некоторых функций. Например, использование функции Iif, с которой firebird 1.5 ещё не знаком.

 

 

  1. Сообщение в 1С об ошибке при вызове метода контекста (Open)

​По причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Driver): [ODBC Firebird Driver] File Database is not found. Причина ошибки : некорректно заполнено поле «DbName». Пример  правильного заполнения поля указан ниже:     127.0.0.1/3080:C:\КакаяТоПапка\SHELTER.FDB

 

 

  1. Сообщение в 1С об ошибке при вызове метода контекста (Open

По причине: Произошла исключительная ситуация: SQLCODE = - 902: I/O error during «@1» operation for file «@2». Error while trying to open file. Причина ошибки: см.пункт 3

 

 

  1. Сообщение в 1С об ошибке при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]unavailable database

Не удалось подключиться к FireBird.

Причина ошибки : некорректно заполнено поле «DbName. См. п. 3

 

 

  1. Сообщение в 1С об ошибке при вызове метода контекста(EOF) по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver] [Firebird] Error reading from the connection

​Причина ошибки : некорректная установка необходимых драйверов Firebird (для 32 либо 64-битной системы) .

Информация о выгрузке из Абонемент в 1С находится тут

 

 

Модуль сканирования документов Regula

 

 

Распознавание документов с помощью ПО и сканера документов Regula

Используется программа распознавания документов DocumentReader, разработанная компанией Regula (https://regulaforensics.com/) поставляемая со сканерами документов Regula. (Дополнительное лицензирование от Regula не требуется. Достаточно приобрести и подключить сканер)

Внимание!!! Для работы с модулем требуется версия Shelter не ниже 2.12.126.2480

Стоимость и условия приобретения

Для данной интеграции рекомендуется использовать 2 модели сканеров. На территории РФ все считыватели поставляются с  полным SDK :
«Регула» 7017 - розничная стоимость ~700€
«Регула» 7027 - розничная стоимость ~845€ (Модель «Регула» 7027 комплектуется считывателем бесконтактных идентификационных микросхем (в Shelter данный функционал не тестировался))
 
Дилеры компании UCS могут приобрести считыватели документов Regula с партнерской скидкой в 20%
Для получения специальных цен нужно обращаться к представителям Regula (при обращении сообщите, что являетесь дилером UCS):
 
«Офисная Полиграфия Плюс». Москалионов Дмитрий - генеральный директор, d.moskalionov@offpoly.ru, тел. +7 (495) 925-00-97.
 
«Регула Русь». Гапотченко Леонид – генеральный директор, regula-rus@mail.ru, тел. +7 (916) 140-63-98.
 
Служба поддержки: support@regulaforensics.com или через сайт https://regulaforensics.com/ru/support/.

 

Установка и настройка программы DocumentReaderSDK

Достаточно скачать актуальную версию DocumentReaderSDK с сайта производителя и установить её. Или же установить версию, поставляемую в комплекте со сканером документов, если невозможно получить актуальную версию. (Тестирование производилось на версии SDK 4.12)

После установки требуется подключить сканер к ПК, дождаться установки драйверов на устройство, добавленных при установке SDK. (Тестирование производилось на считывателе документов «Регула» 7017, «Регула» 7027), виды протестированных документов: Паспорт РФ (с МЧЗ и без), Загранпаспорт РФ, Водительское удостоверение РФ, Паспорт Беларусь, Водительское удостоверение Беларусь, Паспорт Украина, Водительское Удостоверение Украина, Паспорт Казахстан, Паспорт США, Паспорт Латвия, Водительское удостоверение Латвия.

Теперь необходимо запустить программу Document Reader, проверить работоспособность сканера и модуля распознования, подобрать настройки сканирования для улучшения качества распознования. (Для значительного улучшения качества сканирования рекомендуется откалибровать сканер перед использованием)

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

Рис. 1 Пример настроек Document Reader

Pic. 2 Example for Results tab in Document Reader Options

Рис. 3 Пример настроек Document Reader

Pic. 4 Example for Results tab in Document Reader Options

 

Настройка Shelter

Проверка проходила в Shelter ver. 2.12.126.2480.

Из папки «..\FullVersionVerXXX\Fullversion\_INTERFACE\HW\Scan\Regula\» в папку «Shelter» скопировать следующие файлы:

regula.js
ScRegulaRecog.dll
ScRegulaRecog.ini

 

Пример файла настроек ScRegulaRecog.ini:

[Main] 
;Кодировка возвращаемой строки: 0-ANSI (по умолчанию) 1-UTF8 
UseUtf8=0 
;Сообщение при сканировании 
ScanningStr = Приложите документ к сканеру... 

;Скрипт, в котором реализована процедура запуск сканера. По умолчанию regula.js 
JSFile=regula.js 
;Функция из JSFile, которая запускает сканирование. По умолчанию regulaReaderScan() 
EValCode=regulaReaderScan() 
;Функция из JSFile, которая останавливает сканирование. По умолчанию stopFileFileCreate() 
StopCode=stopFileFileCreate() 

[LOCK.SERVER] 
TCPHost= 
TCPPort = 
AbonementOnly=0 
[Localization] 
CurrentLanguage=default

Лицензирование

Модуль распознования защищён проектом 4, модулем 11 в ключе (аналогично системе распознавания Cognitive).

Работа в Shelter

 Вы можете использовать сканер при добавлении клиента:

Важно!!!

Shelter использует APIi функции программы Document Reader SDK и за качество распознавания компания UCS ответственности не несет.

(Например, устройство на котором производилось тестирование (Регула 7017Регула 7027 ) не имело лицензии на распознавание документов без Машиночитаемой зоны (МЧЗ). Исправлено тех. поддержкой Регула по нашему запросу.)

 

 

Настройка интеграции Shelter2 с телефонным тарификатором PhoneTariff

 

 

 

 

 

 

Настройка интеграции Shelter2 с телефонным тарификатором PhoneTariff

 

Актуальную сборку можно скачать на FTP

 

 

Этапы тарификации звонков

 

Классическая схема подключения АТС через COM-порт. АСТ настроена на передачу данных по протоколу RS232, подключена нульмодемным кабелем в COM-порт.

 

1. RS232Reader слушает COM порт и формирует файлы в директории WorkDir. WorkDir это папка которая может находиться на любом компьютере в сети.

    Имя файла имеет вид типа 000012FA.$qi.

2. SPCServ забирает из WorkDir этот файл и анализирует парсером commonparser.dll (для настройки см. раздел Настройка Commonparser.ini), определяет

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

    содержать в себе стоимость и направление. В этом случае пункт 2.1 не выполняется, а в настройках SPCServ.ini за место PhoneCalc.dll

    прописываем "-" без ковычек.

2.1. Срабатывает PhoneCalc.dll (для настройки см. раздел Настройка PhoneCalc.ini и PhoneTariff.ini), которая из базы ShelterPhone.fdb определяет

направление звонка и стоимость. PhoneCalc.dll подключается к серверу блокировок v1.4. Backup базы ShelterPhone.fdb сделан под FireBird 1.5,

можно не переводить базу под FireBird 2.5.

2.2. Затем, SCNAS.dll (для настройки см. раздел Настройка SCNAS.ini) передает информацию о звонке в NAS базу (база данных всех телефонных

звонков – копия пустой empty базы Shelter.fdb, любой версии). В этой базе храниться информация обо всех исходящих звонках.

При необходимости по информации в этой базе можно строить отчёты с использование программы shphone.exe.

2.3. Срабатывает ShelterConnect.dll (для настройки см. раздел Настройка ShelterConnect.ini) и информация о звонке поступает в базу данных

программы Shelter.

 

 

Данная схема является классической. Если АТС работает по TCP/IP, то используется программа TelnetLogger.exe

 

 

Программа PhoneTariff.exe

 

Программа PhoneTariff предназначена для настройки тарифов телефонных звонков по всему миру в разное время суток.

После копирования программы на диск необходимо сделать restore базы ShelterPhone.fbk. В ней хранится все информация о тарифах, зонах,

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

Загрузка осуществляется из DBF файла, следущего формата:

 

формат DBF файла из которого происходит выгрузка данных в ShelterPhone.fdb (Рис. 1)

 

В файле PhoneTariff.ini(для настройки см. раздел Настройка PhoneCalc.ini и PhoneTariff.ini) необходимо прописать путь к базе ShelterPhone.fdb

и запустить программу phonetariff.exe.

 

Вид программы PhoneTariff.exe (Рис. 2)

 

На рисунке 2 в окне 1 отображаются зоны, например, SNG – СНГ, AFRICA – Африка. Можно создавать свои зоны. В окне 2 для каждой зоны

формируется тариф. Окно 3 предназначено для присваивания телефонным кодам определенной зоны. Можно присвоить всему континенту одну зону,

а можно для каждого города разные зоны.

Все незаполненные промежутки времени в определении тарифов наполняются значениями. Если не заполнены временные промежутки в тарифе рабочего

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

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

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

Если существует необходимость звонки в определенные населенные пункты тарифицировать по особым ценам (например, они должны быть бесплатными),

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

У зоны есть два ключевых параметра: округление и чувствительность. Если продолжительность звонка меньше указанной чувствительности,

то данный звонок будет игнорироваться. (Например, звонки до 5 сек. бесплатно).

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

 

 

Соответственно для правильной тарификации звонков необходимо настроить префиксы. В программе PhoneTariff используются международная

система телефонных префиксов. Настройка префиксов осуществляется на соответствующей закладке. Например телефонный тарификатор установлен 

в г.Кемерово, код города 3842, но при звонке по городу гости отеля из своего номера набирают просто шестизначный номер телефона, а для того чтобы

привести его к международной системе необходимо завести префикс «пусто» - подстановка «73842».

В программе PhoneTariff существует проверка расчета стоимости звонка. Для удобства можно ограничиться четырьмя зонами: 1 - по городу; 2 - по области;

3 - по стране; 4 - по остальному миру. 

Данные настройки всегда согласовываются с заказчиком.

 

 

 

Интерфейс работы Shelter со сторонним ПО

 

После каждого исходящего звонка сторонняя программа формирует в определенной папке (WORKDIR) текстовые файлы, например 000012FA.$qi, где:

  • название файла - номер формируемого файла по порядку в шестнадцатеричном формате, например 000012FA;
  • расширение файла - .$qi;

 

Каждый такой файл содержит следующие данные:

 

Название блока Символы Формат Пример
Дата начала соединения 1-10 любой

27042007

27/04/2007

2007-04-27

Время начала соединения 11-20 любой

13:29:56

13/29/56

132956

Продолжительность соединения 21-30 Hh:mm:ss 00:12:42
Набранный номер 31-70   83452288654
Признак исходящего звонка 71-75 символ

О

Внутренний номер телефона, с которого осуществлен звонок

76-79   1812
Символы окончания строки и возврата коретки 80-82 данное поле не обязательно 0D0A

 

 

 

Установка модулей "ShelterPhone и интерфейс Телефонный тарификатор

 

 

1. Скопировать на компьютер подключенный к АТС RS232Reader.exe и RS232Reader.ini;

2. Скопировать на любой компьютер находящийся в сети файлы SCPServ.exe, SCPServ.ini, ShelterConnect.ini, ShelterConnect.dll, SCNAS.ini, SCNAS.dll,

phonecalc.ini, phonecalc.dll, CommonParser.ini, CommonParser.dll, phonetariff.exe, phonetariff.ini, SHELTERPHONE.back;

3. Сделать Restore базы SHELTERPHONE.back и настроить файл phonetariff.ini;

4. В программе PhoneTariff настроить тарифы;

5. Настроить все оставшиеся ini файлы;

6. В настройках Shelter.exe в карточке номера комнаты указать внутренний телефонный номер;

7. После всех настроек на базе Shelter выполнить скрипт: execute procedure xx_fill_services (см. раздел Работа с IBExpert. Выполнение SQL скриптов).

 

 

Настройка CommonParser.ini

 

Файл CommonParser.ini служит для настройки параметров CommonParser.dll. Данная DLL отвечает за разбор строки лога звонка.

Настройку CommonParser.ini рекомендуются выполнять в текстовом редакторе, используя шрифты, у которых длина всех символов одинаковая

(например «Terminal»).

Для получения лога звонка необходимо настроить программу RS232Reader, совершить звонок, после которого в папке WorkDir 

(параметр из файла RS232Reader.ini) появится файл с расширением $qi. Содержимое этого файла переписываем в файл CommonParser.ini:

 

 

Затем нужно «наложить»на строку лога маску

 

 

Настройка преобразования даты звонка:

  • DateM0 = Dd/Mm/Yy - формат в котором дата идет в логе (26/ 07/ 06)
  • DateM1 = 20YyMmDd - нужно привести к формату YYYYMMDD

Соответственно DateAsDAte = 0 для того чтобы использовалось преобразование

 

Настройка преобразования времени звонка:

  • TimeM0 = Hh:Mm - формат в котором время записано в логе (09: 26)
  • TimeM1 = HhMm00 - нужно привести к формату HHMMSS

 

Продолжительность звонка:

  • DurationM0 = Hh:Mm'Ss  - формат в котором продолжительность соединения записана в лог файле (00:00’06)
  • DurationM1 = HhMmSs  - преобразовываем к формату HHMMSS

Т.к. продолжительность соединения задается в «явном» виде, а не в частях суток, то CoefDuration = 0

 

На данном этапе можно не тарифицировать часть звонков. При этом информация о данных звонках не попадет ни в одну базу.

FilterExtn = * ; маска для исходящего номера. Если «звездочка», то тарифицировать звонки со всех номером. Если, например, FilterExtn = 1* ,

то будут тарифицироваться звонки, начинающиеся с единицы.

FilterDial = * ; маска для набранных номеров. Если «звездочка», то тарифицировать звонки на все набранные номера.

OutGoingText = O ; признак тарифицируемого звонка. Часто в специалисты не могу настроить АТС и она вы дает и входящие звонки.

Тогда данный признак помещается специальным символом. В нашем примере признаком тарифицируемого звонка является буква «O».

В маске сказали, что в этом будет тип звонка (сиввол Y). OutGoingText = O если в этом месте не O, то этот звонок тарифицироваться не будет.

Если OutGoingText = * , то все звонки считать тарифицируемыми.

 

Если АТС (или сторонняя программа тарификации) выдает в лог информацию о цене звонка, то используются параметры:

  • PulseToCost = 1 - преобразовывать пульсы АТС в стоимость
  • BaseToRetail = 1 - использовать стоимость из лог файла, как базовую
  • AddFixedCost = 0 - к базовой стоимости добавить это значение.

 

Лог файл может формироваться с переменным числом пробелов перед первым символом, для работы с такими АТС используется параметр:

  • UseTrim=1 ; Использовать обрезание строки лога . 0 - не использовать.

 

Конечный вид CommonParser.ini будет следующий:

 

 

 

 

Настройка SCNAS.ini

 

Файл SCNAS.ini содержит внутри следующую информацию:

 

[Database]

DBname = <path do NAS database>

DBuser = UCS

DBpassword = oQKH8n0BFUE=

[ExternalClient]

ClientID = 1 ;

IdentPhysType = 100;

ConvertOperationNeed = 0;

ToOEM = 0;

[Log]

FileName = SCNAS.log

Level = 5

DebugLevel = 0

 

 

Где:

  • DBname =
    - полный путь до NAS базы. Например 127.0.0.1/3050:С:\Shelter\Phone\NAS.fdb, 127.0.0.1 - IP-адрес сервера на котором располагается база, а 3050 порт на котором работает FireBird. 
  • DBuser = UCS - не изменять
  • DBpassword = oQKH8n0BFUE= - не изменять
  • FileName = SCNAS.log - лог программы
  • Level = 5 - уровень детализации лога
  • DebugLevel = 0 - уровень отладочной информации добавляемой в лог

 

 

Настройка ShelterConnect.ini

 

Файл ShelterConnect.ini содержит внутри следующую информацию:

 

[Database]
  DBname     = <path to Shelter database>
  DBuser     = UCS      
  DBpassword = oQKH8n0BFUE=
 
[ExternalClient]
  ClientID      = 1
  IdentPhysType = 100
  ConvertOperationNeed = 1
  ToOEM = 0
 
[Log]
  FileName   = ShelterConnect.log
  Level      =  5
  DebugLevel =  0
 
[GarbageCollector]
  Enabled  = 0
  LifeTime = 120
 
[TranslateOperation]
  PHONE = <code>
 
[PARAMS]
  NoAutoDiscount = 1
  Section =0
  UseSection =1

 

Где:

 

  • DBname = 
    <path to Shelter database> - полный путь до рабочей базы. Например 127.0.0.1/3050:С:\Shelter\IBData\Shelter.fdb, 127.0.0.1 - IP-адрес сервера на котором располагается база, а 3050 порт на котором работает FireBird.
  • DBuser = UCS - не изменять
  • DBpassword = oQKH8n0BFUE= - не изменять.
  • ClientID = 1 - код ShelterConnect'a, если используются несколько ShelterConnect.dll
  • IdentPhysType = 200 - Тип устройства
  • ConvertOperationNeed = 1 -  (0- не использовать секцию [TranslateOperation], 1- использовать секцию)
  • ToOEM = 0 - (0 - не конвертирования, 1 - конвертирование текстов в/из OEM/Windows (Ошибки, комментарии, тексты...))
  • FileName = ShelterConnect.log - лог программы.
  • Level = 5 - уровень детализации лога.
  • DebugLevel = 0 - уровень отладочной информации добавляемой в лог файл.
  • PHONE = 201 - код услуги телефон из справочника услуг Shelter.
  • Section =0 - параметр отвечающий за секции: 0 - номер, 1- гость, 2 - питание.
  • UseSection =1 - использовать/не использовать параметр Section.

 

 

Настройка RS232Reader.ini

 

[Application]

  AutoStart = 1 - признак пуска при старте
  AutoHide = 1 - признак сворачивания при старте
  UseBeeper = 0 - использовать звук
 
[RS232]
  ComPortNum = 1 - номер COM-порта, куда подключена АТС
  ComPortStr =  baud=9600 parity=N data=8 stop=1 dtr=on rts=on - параметры связи
  TermChars = #13;#10;#0; - символ окончания строки
  IncludeTermChar = 0
  SuppressEmpty = 1
  ReadTimeOut = 5000
  TimeOutIsTerm = 1
  Request = 
  Acknowledge =
  PurgeCommFlags = 15
  ReopenTimeout = 1000
  ReopenTimeoutStep = 1000
  ReopenTimeoutMax = 30000
 
[Log]
  Name = RS232Reader.log - лог программы
  Level = 5 - уровень детализации лога
  DebugLevel = 0 - уровень отладочной информации добавляемой в лог
 
[Queue]
  WorkDir = D:\phone_tariff\WORK_DIR - полный путь до каталога, куда скидывается информация считанная с СОМ-порта
 
 
 
Настройка PhoneCalc.ini и PhoneTariff.ini
 
 
Файлы PhoneCalc.ini и PhoneTariff.ini идентичны и содержат внутри следующую информацию:
 
 
[General]
 
Program = UCS Shelter
 
[LOCK.SERVER]
 
TCPHost=127.0.0.1
TCPPort=1111
 
[Database]
 
dbname = 127.0.0.1/3050:C:\Shelter\ShelterPhone.fdb
dbuser = ucs
DBPassword = oQKH8n0BFUE=
 
 
 
Где:
 
 
  • TCPHost = 127.0.0.1 - IP-адрес компьютера, где физически установлен ключ защиты. Если он установлен на локальной рабочей станции, то можно использовать значение 127.0.0.1.
  • TCPPort = 1111 - номер порта на котором запущен сервер блокировок
  • dbname = 127.0.0.1/3050:C:\Shelter\ShelterPhone.fdb - полный путь до базы ShelterPhone.fdb, в которой храниться информация о тарифах. 127.0.0.1 - IP-адрес сервера на котором располагается база, а 3050 порт на котором работает FireBird.
  • DBuser = UCS - не изменять
  • DBpassword - oQKH8n0BFUE= - не изменять

 

 

Подключение АТС через TelnetLogger (вместо RS232Reader)

 

Данная утилита используется в случае, если АТС работает не через COM-порт, а TCP/IP соединение.

 

 

Настройка TelnetLogger.ini

 

[Net]

Host = 192.168.3.253 - адрес АТС

Port = 8800 - порт АТС

BoundPort = 0 - предпочитаемый порт, который выделит атс для соединения

ConnectionTimeout = 50 - Тайм аут подключения (сек.)
 

[Log]

WriteLog = 1

FileName = TelnetLogger.log
 

[Other]

PBXDir = c:\Temp

LastFileNumber =31

AutoStart = 1

AutoHide = 0

RestoreConnection = 1 - Автоматически пытаться востановить соединение

RestoreConnectionTimeOut = 5000 - Таймаут автоматического соединения (мск.)

FirstSymbolIsNum = 1 - Только строки, где первый символ число

AutoLogin=1 - автологин: 1 - передает логин/пароль из файла TelnetLogger.ini, 0 - будет ожидать ввода вручную

WordLogin=-    - слово "Логин" (т.е. строка, которая будет искаться в приглашении "логин")

WordPassword=Enter Password:   - слово "Password" (аналогично логину)

Login=smdr - логин АТС

Password=1234 - пароль АТС

 

Соответственно при варианте подключения АТС через TelnetLogger параметры запуска будут следующие: TelnetLogger.exe → SCPServ.exe

 

Смена статуса номера через телефонный тарификатор

 

1. Выполнить скрипт TR_AU_ROOM_STATE : 

CREATE TRIGGER TR_AU_ROOM_STATE FOR ROOMS
ACTIVE AFTER UPDATE POSITION 0
as
declare variable s varchar(1024);
declare variable s1 varchar(128);
begin
 s = '';
 if (old.state != new.state) then begin
  s1 = '';
  s1 = setnamedparam(s1,'old',old.state);
  s1 = setnamedparam(s1,'new',new.state);
  s = setnamedparam(s,'state',s1);
 end
  s = trim(s);
  if (s != '')  then
    execute procedure xx_sys_history_add('ROOMS',new.id,0,2,:s);
end
 

2. В ShelterConnect.ini добавить секцию : 
[TranslateRoomState]
999 = 1
888 = 0
Где 999 - номер телефона, который набирает горничная после уборки для смены статус номера на грязынй номер
888 - номер телефона, который набирает горничная после уборки номер для смены статуса номер на чистый номер
3. В CommonParser.ini добавить, в секцию [parser] добавить : 
ROOMSTATUS = 888,999 

ВНИМАНИЕ!!! В описанном случае, номера телефонов 888 и 999 являются примерами.

 

Модули Shelter2 Full и Lite версии

 

 

 

Модули Shelter 2 Full и Lite версии

 

Наименование модуля Lite Полная версия

Модуль «Телефонный тарификатор»

+ +

Модуль «Интернет-бронирования»

+ +

Модуль «Channel Manager» (GDS)

+ +

Модуль «Менеджер мероприятий»

- +

Модуль «Горничные»

- +

Модуль «Медицина»

- +

Модуль «Абонемент»

+ +

Модуль «Банковский протокол»

- +

Интерфейс «Замковая система»

+ +

Модуль «Выгрузка в 1С»

+ +

«ПДС»

- +

Интерфейс «R-Keeper»

+

только закрытие на номер

+

E-Mail и SMS рассылка (GuestAnnouncer)

+ +

Модуль «IPTV» (Hoteza)

- +

Интерфейс связи с Cognitive «Сканер паспортов»

- +

Модуль «Платежные системы» (Ассист, Робокасса, Резервмастер)

- +

Модуль «Выгрузка в XML» 

(УФМС ПО Контур и Радиус)

+

+

Модуль «Выгрузка в StoreHouse4»

+ +

Интерфейс «Wi-Fi»

+ +
 Модуль «Управления светом Light Control» + +

 

 

 

 

Обновление Shelter 2

 

Обновление Shelter 2 (глобальное)

 

Для обновления программного обеспечения Shelter 2 до актуальной версии, необходимо выполнить подготовительные действия на сервере :

1. В обязательном порядке выполнить резервное копирование рабочей базы данных, при помощи bat-файла backup.bat.

    В названии файла резервной копии не должно присутствовать «breaked». Если в названии архива присутствует «breaked»,

    то это может свидетельствовать о повреждении базы данных, либо некорректно выполнен backup.

ВНИМАНИЕ (!!!) Все действия, выполняемые с базой данных Shelter (backup/restore), должны производиться только от пользователя UCS в FireBird (не путать с пользователем ucs в Shelter)
ВНИМАНИЕ (!!!)  Обновление должно выполняться "стандратным" методом (через глобальное/локальное обновление), не через IBExpert.

2. Создать папку в дистрибутиве Shelter, в которую скопировать созданный в п.1 backup базы данных, а так же все .dll и .exe до обновления (пример):

3. Создать папку в дистрибутиве Shelter, в которую будут скачиваться файлы для обновления с глобального сервера shelter2.ucs.ru

    Для этой папки настроить права доступа.

4. Проверить доступность порта командой telnet

    Сервер : shelter2.ucs.ru

    Порт : 21

 

    Если подключение успешно, то должно появиться следующее сообщение в командной строке :

    Если подключиться не удалось, то необходимо проверить настройки антивируса/брандмауэра.

    Так же, необходимо удалить «update.exe» и очистить папку, в которую ранее скачивались файлы для обновления, если на объекте уже выполнялось

    обновление ранее.

5. Далее необходимо запустить Shelter и перейти во вкладку «Обновление» - «Глобальный» (служебный пароль для входа: ucs-shelter )перейти во вкладку «Сервер обновлений» 

    и в поле «Путь до сервера обновлений:» указать путь до папки, которую создавали в п.3 :
    

 

 

6. Убедиться, что чек-боксы установлены как на скриншоте выше.

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

    службы (OnlineServer, WuBookServer, TravellineServer и пр.)

8. Перейти во вкладку «Мониторинг транзакций», убедиться, что активных транзакций (подключений) нет.

    Если кто-то из пользователей не вышел из Shelter, то в «Мониторинг транзакций», будет отображаться список подключенных клиентов :

 

9. Нажать кнопку «Проверить обновления» - происходит подключение к глобальному серверу обновлений shelter2.ucs.ru и скачивание

    необходимых файлов в папку, которую указали в п.3

 

В первую очередь скачиваются «updateversions.ini» и «update_1.0.0.52.rar», после чего распаковывается и запускается файл «update.exe».

Если возникает ошибка «Не найден файл обновлений! (Больше файлов не осталось)» :

 

То необходимо выполнить запуск процедуры обновления повторно, начиная с п.5. Данная проблема решена в версии Shelter_2.12.120.2365

10. Далее скачиваются необходимые для обновления *.ini - файлы :

 

И открывается список доступных обновлений :

 

Необходимо отметить чек-боксами необходимые модули для обновления и нажать «Ок»

В соответствии с выбранными модулями для обновления происходит скачивание *.rar – файлов :

 

И последующее выполнение скрипта :

В момент выполнения скрипта ошибок быть не должно

 

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

После успешного выполнения скрипта, происходит скачивание архива, содержащего отчеты :

 

После, появляется окно со списком отчетов :

 

Нажимаем «Ок»,происходит обновление отчетов:

 

После чего вновь появляется окно, с выбором модулей для обновлений :

 

Нажимаем «Ок», распаковываются и заменяются файлы :

 

Если файлы не заменились автоматически (возможно какой-либо процесс удерживает shelter.exe), то можно распаковать архив

shelter_2.12.120.2365 (пример) и заменить файлы вручную. Если какие-либо службы запускаются из отдельной папки,

то необходимо заменить все содержимое этих папок (shelter.exe, shelter.dll и пр.)

11. После обновления серверной части Shelter, необходимо запустить остановленные ранее службы.

Перед запуском службы ShelterOnlineServer не забывайте удалять «OnlineServer.xml», после запуска создается актуальный файл.

Не стоит забывать, что если в старом файле «OnlineServer.xml» у Вас значение autostart ="0", то и в новом файле необходимо изменить значение.

 

 

 

Обновление Shelter 2 (локальное)

 

Для удобства обновления клиентских машин, на которых установлен Shelter 2, можно «расшарить» (дать общий доступ) папку на сервере,

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

 

1. Перед локальным обновлением рабочих мест, рекомендуется скопировать текущий дистрибутив Shelter 2 в отдельную папку.

2. Запустить Shelter 2, перейти во вкладку «Сервер обновлений», и в поле «Путь до сервера обновлений:»

указать путь до «расшаренной» папки на сервере, которую создавали в п.3, а так же настроить по аналогии со скриншотом :

 

3. Закрыть окно «Обновление системы», в меню аутентификации пользователя нажать «Обновление», выбрать «Локально».

4. В открывшемся окне выбрать необходимые модули и нажать «Ок». Файлы скачаются и заменятся автоматически.

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

 

Переход с Shelter1 на Shelter2

Переход с Shelter1 на Shelter2
 

          Структура баз данных и принцип работы многих блоков ПО Shelter1 и Shelter2 сильно отличается друг от друга. Появились новые справочники, сущности и механизмы работы.
          Возможно 2 пути перехода:

1. Обновление существующей версии Shelter1 на Shelter2 путем выполнения скриптов и изменения структуры базы данных. Все данные остаются.

2. Установка пустой чистой базы. Новая настройка и заполнение справочников.

Возможен частичный перенос данных:

- Список гостей

- Список организаций

- Список броней

          Далее по порядку о плюсах и минусах каждого метода.

 

      1. Обновление Shelter1 до версии Shelter2 – трудоемкий процесс, занимающий длительное время. И чем больше данных в базе, чем больше истории,
      тем дольше и сложнее обновлять.
      Зачастую приводит к полному переходу на ручное выполнение скриптов. Часто встречаются кастомизированные базы данных, которые приходится анализировать через отдел
      разработки и создание ремонтирующих скриптов.
      На практике имели место случаи, когда крупные объекты на большой базе переводились более чем 12 часов, при условии, что заранее все подготовлено и проверено.

 При таком методе обновления с Shelter1 на Shelter2 в базе остается весь «мусор»: не нужные услуги, тарифы, сезоны, не правильно оформленные гости и д.р. Многие справочники после обновления приходится переделывать (например, тарифы), а какие-то заводить заново, т.к. появились новые сущности.

 В результате в базе получаются обновленные старые данные от Shelter1 и новые данные от Shelter2. При разработке отчетов и прочих доработок всегда ориентируются на текущие актуальные       данные Shelter2, в следствие чего появляются ошибки, когда в выборку попадают старые данные. Бывали случаи полной блокировки работоспособности системы. Некоторые крупные объекты, перейдя на Shelter2 методом прямого обновления, после работы в течение нескольких месяцев, принимали решение об установке новой базы данных.

 

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

 Основной минус состоит в том, что история по старым гостям остается в старой базе данных. База данных может быть размещена на этом же сервере. Доступ к этой базе останется на требуемых   рабочих местах.

 Инженеры ТП могут выгрузить данные по гостям, организациям и броням на будущий период в текстовые файлы. В файле содержатся только линейные данные с ограниченным набором полей.   Эти данные можно загрузить в новую базу Shelter2, но после загрузки ВСЕ брони нужно обязательно пересохранить, указав нужные тарифы, проверить категории номеров и полученные цены.   Список гостей же содержит карточки всех гостей, среди которых обычно много лишних. Перед загрузкой его в Shelter 2 требуется обязательная обработка в ручном режиме. Были случаи, когда   гостиницы после загрузки всего списка профайлов клиентов из старой базы присылали запросы на удаление данных, т.к. среди этих профайлов много ненужной информации: дубли карточек,   некорректно заведенные данные гостей и т.д.

 Также в актуальных версиях продуктов мы уже практически полностью отказались от работы ПО Абонемент и ПО Shelter в одной базе. Для взаимодействия используем интерфейс по аналогии закрытия на фолио из RKeeper. Интерфейс позволяет делать закрытие на фолио проживающего гостя в Shelter услуг из Абонемента.

Прочее

Настройка интеграции Shelter 2 и сканера ШК

Интеграция Shelter 2 и сканера ШК

Для настройки данной интеграции требуется Shelter 2 версии 2.12.123.2420 или новее.

Необходимо зайти в системные настройки Shelter :

Перейти в настройки декодирования и поставить чек-бокс напротива параметра "Штрих-код" :

Также в данном окне необходимо указать маску карты "*":


Необходимо настроить декодирование трека при помощи TcpCardReader и decodecards.
Пример настроек можно взять с
ftp

При необходимости, в поле "Исключить префикс", прописать ;BarCode
Далее необходимо зайти в Shelter - Справочники - Услуги - выбрать услугу, и в карточке услуги, в поле "Бар-код", указать штрих код товара:


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

 

 

 

IBExpert. Регистрация базы, выполнение скриптов и запросов.

Регистрация базы данных.

Рассмотрим подробнее выполнение скриптов в программе IBExpert. Вход в  программу осуществляется путем запуска файла \Shelter...\IBExpert\IBExpert.exe
1. Зарегистрировать базу (если она ещё не зарегистрирована). Для этого необходимо: нажать кнопку  Register Database (в разделе Database), ввести необходимые параметры подключения (см. рис.1) (Remote - для удаленного подключения к FireBird, Local - для локального подключения к FireBird, 127.0.0.1 
IP-адрес машины, используемый порт - 3080), выбрать  кодировку WIN1251, установить логин UCS и пароль ucs для базы, выбрать версию Firebird (для всех актуальных установок используется версия 2.5). Указать путь до файла gds32.dll, который по умолчанию находится в папке с установленной версией Firebird в каталоге binРекомендуется для Alias'а (отображаемого названия) использовать WORK - для рабочей базы и TEST - для тестовой.


(Рис.1 - Заполненные регистрационные данные базы)

2. Создать подключение к ещё одной базе можно простым методом - Клонировать Регистрационные Данные (Clone Registration Info) - нажав правой кнопкой на БД в списке Database Explorer (см. рис. 2 - пункт 2). Подключиться к базе данных, дважды кликнув по ней в списке, либо выбрав соответствующий пункт из выпадающего меню (см. рис. 2 - пункт 1).

(Рис.2 - Клонирование данных базы и Подключение)

Выполнение скрипта.

1. Зайти в меню  Tools\Script Executive (Ctrl+F12), открыть  sql файл (либо вставить содежримое скрипта в поле Edit), содержащий нужный скрипт, установить галочку (checkbox) "Use current connect" (данная функция будет активна, если выполнено хотя бы одно подключение).

При выполнении скриптов, базу регистрировать не обязательно - если подключение не выполнено, можно указать путь до базы в самом скрипте, например так:

CONNECT '127.0.0.1/3080:D:\Base\_Garbage_Shelter\_Tracker\SHELTER.FDB' USER 'UCS' PASSWORD 'ucs';

2. Нажать кнопку  Run Script (F9). Скрипт должен выполнится без ошибок.
3. Результат выполнения скрипта:


 

Выполнение запросов к БД.

1. Зайти в меню  Tools\SQL Editor (F12)

2. В открывшемся окне вписать необходимый SQL-запрос, нажать F9 (Execute )
Пример запроса : 

select * from folio f where f.id = 3201

3.Результат выполнения запроса :


 

 

Внешние функции - MoneyToTextEx

 

Внешние функции - MoneyToTextEx

Описание настроек MoneyToTextEx

Настройка предназначена для вывода числительных прописью в печатных формах на определённом языке.


 

Название – краткое название функции.

Наименование – полное название функции.

Синтаксис функции — параметры вызова функции.

Описание – краткое описание функции.

Язык – язык локализации, для которого будет работать функция, т.е. на каком языке запущено и используется само ПО.

Исходный код – текст скрипта.

Текущая версия – номер текущей версии.

Внимание! Описанный далее код функции является примером реализации для русского языка. Для других языков он может быть изменён в соответствии с особенностями самого языка

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

 

Вспомогательная функция округления с заданной точностью

 

function RoundDouble(AValue: Double; FracLen: Integer): Double;

 

var

 

D10: array[0..10] of Double;

 

begin

 

D10[0] := 1;

 

D10[1] := 10;

 

D10[2] := 100;

 

D10[3] := 1000;

 

D10[4] := 10000;

 

D10[5] := 100000;

 

D10[6] := 1000000;

 

D10[7] := 10000000;

 

D10[8] := 100000000;

 

D10[9] := 1000000000;

 

D10[10] := 10000000000.0;

 

Result := (Round(AValue * D10[FracLen] + 1 / D10[FracLen + 1])) / D10[FracLen];

 

end;

 

Вспомогательная функция округления до второго знака после запятой

 

function RoundMoney(ASum: Double): Double;

 

begin

 

Result := RoundDouble(ASum, 2)

 

end;

 

Вспомогательная функция копирования части строки

 

function RightStr(S: string; N: Integer): string;

 

begin

 

if (N <= 0) then

 

N := Length(S) + N;

 

Result := Copy(S, Length(S) - N + 1, N);

 

end;

 

Вспомогательная функция копирования части строки и подстановки заданного символа слева

 

function PadLCh(S: string; C: Char; N: Byte; ExactLen: Boolean = True): string;

 

begin

 

if ExactLen then

 

Result := RightStr(S,N)

 

else

 

Result := S;

 

while Length(Result) < N do

 

Result := C + Result;

 

end;

 

Основная функция преобразования денежной суммы в сумму прописью

Входные параметры:

 

Sum — число для преобразования

 

Param_Language — язык локализации

 

Currency — код валюты

 

function MoneyToTextEx (Sum: Double; Param_Language: string; Currency: string): string;

 

var

 

aOnes, aTeens, aTens, aHundreds, aTrios, aTrioFemale, aTrioPostfixes, aUnits,

 

aUnitPostfixes, aUnitFemale, aPostfixes, aPostfix: Variant;

 

КЛАССЫ ЧИСЕЛ

Первый класс (класс единиц) – сотни, десятки, единицы

Второй класс (класс тысяч) – сотни тысяч, десятки тысяч, единицы тысяч

Третий класс (класс миллионов) – сотни миллионов, десятки миллионов, единицы миллионов

и т.д.

Функция преобразования трехзначного числа в строку с добавлением класса чисел или значения валюты

 

function TrioToText(Trio: Integer; TrioNo: Integer): string;

 

var

 

i1, i2, i3, PostfixNo: Integer;

 

Female: Boolean;

 

begin

 

Result := '';

 

if( Trio = 0) then

 

if TrioNo > 0 then Exit; - если число [0] и «не копейки», то выходим из функции («ноль миллионов», «ноль тысяч» не пишем)

 

i1 := (Trio mod 10); - выделяем единицы

 

i2 := (Trio div 10) mod 10; - выделяем десятки

 

i3 := (Trio div 100) mod 10; - выделяем сотни

 

if (TrioNo > -1) then - если «не копейки»

 

begin

 

Result := aHundreds[i3]; - берем сотню из массива сотен

 

if (i2 = 1) then – если второй десяток сотни (десять, одиннадцать...)

 

Result := Trim(Result + ' ' + aTeens[i1]) - то берем из массива второго десятка по значению единиц

 

else - если не второй десяток сотни (т.е. двадцать..., тридцать...,..)

 

begin

 

Result := Trim(Result + ' ' + aTens[i2]); - берем из массива десятков по значению десятка

 

if (i1 in [1, 2]) then – если единица 1 или 2 (в русском языке «один» и «два» для женского рода это - «одна» и «две», остальные единицы идентичны для М и Ж: «три», «четыре»... «десять»)

 

begin

 

if (TrioNo > 0) then - если класс числа более первого (тысячи, миллионы, миллиарды и т.д.)

 

Female := aTrioFemale[TrioNo] - берем признак женского рода в заданном массиве женских родов для классов чисел более первого (тысячи, миллионы, миллиарды и т.д.), т.е. если сюда пришел второй класс, в русском языке «тысяча» женского

 

рода.

 

else

 

Female := aUnitFemale[1 – TrioNo] - если первый класс или «копейки», смотрим значение женского рода в массиве женских родов, заданном для конкретной валюты (рубль мужского рода, копейка женского рода; доллар мужского рода, цент

 

мужского рода)

 

end

 

else

 

Female := False; - если единица не 1 или 2, то мужской род («три», «четыре»...)

 

if not Female then

 

Result := Trim(Result + ' ' + aOnes[i1]) - если мужской род, то берем единицу из массива единиц напрямую (индекс совпадает со значением)

 

else

 

Result := Trim(Result + ' ' + aOnes[9 + i1]); - если женский род, то берем единицу из массива единиц с инкрементом (для русского языка это будет 1 или 2, соответственно 9+1 = 10, в массиве единиц с индексом 10 идет женский род «одна»)

 

end;

 

end

 

else - если «копейки»

 

Result := PadLCh(IntToStr(Trio), '0', 2); - если «копейки», то сумму прописью не пишем, а к однозначному числу добавляем ноль слева (было 5, стало 05; было 55, стало 55)

 

После выполнения вышеуказанной части кода процедуры мы получаем одно-, двух- или трехзначное число прописью (451 = «четыреста пятьдесят один» для мужского рода класса чисел или «четыреста пятьдесят одна» для женского

 

рода класса чисел).

 

if (TrioNo > 0) then - если класс числа более первого (тысячи, миллионы, миллиарды и тд)

 

Result := Trim(Result + ' ' + aTrios[TrioNo]) - берем значение из массива классов чисел напрямую

 

else

 

Result := Trim(Result + ' ' + aUnits[1 – TrioNo]); - если класс менее первого, то берем значение из массива валюты («рубл», «копе»)

 

После выполнения вышеуказанной части кода процедуры мы получаем число прописью + либо корень названия класса чисел, либо корень названия валюты («четыреста пятьдесят одна тысяч» либо «четыреста пятьдесят один рубл»).

 

PostfixNo := 1; - по умолчанию берём индекс массива окончаний 1 (тысячА/копеЙКА/рублЬ/миллион)

 

if (Param_Language = 'Russian') then

 

begin

 

PostfixNo := 3; - если язык русский по умолчанию, берём индекс массива окончаний 3 (рублЕЙ/копеЕК/миллионОВ/тысяч)

 

if not (i2 = 1) then - если не второй десяток сотни, то определяем индекс массива окончаний

 

begin - смотрим на единицы

 

if (i1 = 1) then - если единица равна 1

 

PostfixNo := 1 - берем индекс массива окончаний 1 (тысячА/копеЙКА/рублЬ/миллион)

 

else

 

if (i1 in [2, 3, 4]) then - если единица равна 2 или 3 или 4

 

PostfixNo := 2; - берём индекс массива окончаний 2 (тысячИ/копеЙКИ/рублЯ/миллионА)

 

end;

 

end

 

else

 

Для других языков

 

if (Param_Language = 'Lithuanian') then

 

begin

 

PostfixNo := 3;

 

if not (i2 = 1) then

 

begin

 

if (i1 = 1) then

 

PostfixNo := 1

 

else

 

if (i1 in [2..9]) then

 

PostfixNo := 2;

 

end;

 

end;

 

После определения индекса подставляем окончание.

 

if (TrioNo > 0) then - для классов чисел

 

begin

 

aPostfix := aPostfixes[aTrioPostfixes[TrioNo]]; - определяем массив окончаний соответствующего класса чисел

 

Result := Result + aPostfix[PostfixNo]; - добавляем окончание по определенному ранее индексу из соответствующего массива

 

end

 

else - для валют

 

begin

 

aPostfix := aPostfixes[aUnitPostfixes[1 – TrioNo]]; - определяем массив окончаний соответствующего значения валюты («рубл»/«копе»)

 

Result := Result + aPostfix[PostfixNo];- добавляем окончание по определенному ранее индексу из соответствующего массива

 

end;

 

end;

 

Тело основной функции преобразования денежной суммы в сумму прописью

 

var

 

I: Int64;

 

F: Integer;

 

begin

 

Result := '';

 

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

 

Массив первого десятка сотни (единиц)

 

aOnes := VarArrayCreate([0,11], varVariant);

 

aOnes[0] := '';

 

aOnes[1] := 'один';

 

aOnes[2] := 'два';

 

aOnes[3] := 'три';

 

aOnes[4] := 'четыре';

 

aOnes[5] := 'пять';

 

aOnes[6] := 'шесть';

 

aOnes[7] := 'семь';

 

aOnes[8] := 'восемь';

 

aOnes[9] := 'девять';

 

aOnes[10] := 'одна';

 

aOnes[11] := 'две';

 

Массив второго десятка сотни:

 

aTeens := VarArrayCreate([0,9], varVariant);

 

aTeens[0] := 'десять';

 

aTeens[1] := 'одиннадцать';

 

aTeens[2] := 'двенадцать';

 

aTeens[3] := 'тринадцать';

 

aTeens[4] := 'четырнадцать';

 

aTeens[5] := 'пятнадцать';

 

aTeens[6] := 'шестнадцать';

 

aTeens[7] := 'семнадцать';

 

aTeens[8] := 'восемнадцать';

 

aTeens[9] := 'девятнадцать';

 

Массив десятков:

 

aTens := VarArrayCreate([0,9], varVariant);

 

aTens[0] := '';

 

aTens[1] := 'десять';

 

aTens[2] := 'двадцать';

 

aTens[3] := 'тридцать';

 

aTens[4] := 'сорок';

 

aTens[5] := 'пятьдесят';

 

aTens[6] := 'шестьдесят';

 

aTens[7] := 'семьдесят';

 

aTens[8] := 'восемьдесят';

 

aTens[9] := 'девяносто';

 

Массив сотен:

 

aHundreds := VarArrayCreate([0,9], varVariant);

 

aHundreds[0] := '';

 

aHundreds[1] := 'сто';

 

aHundreds[2] := 'двести';

 

aHundreds[3] := 'триста';

 

aHundreds[4] := 'четыреста';

 

aHundreds[5] := 'пятьсот';

 

aHundreds[6] := 'шестьсот';

 

aHundreds[7] := 'семьсот';

 

aHundreds[8] := 'восемьсот';

 

aHundreds[9] := 'девятьсот';

 

Массив классов чисел:

 

aTrios := VarArrayCreate([0,4], varVariant);

 

aTrios[0] := '';

 

aTrios[1] := 'тысяч';

 

aTrios[2] := 'миллион';

 

aTrios[3] := 'миллиард';

 

aTrios[4] := 'триллион';

 

Массив признаков женского рода для классов чисел:

 

aTrioFemale := VarArrayCreate([1,4], varVariant);

 

aTrioFemale[1] := True;

 

aTrioFemale[2] := False;

 

aTrioFemale[3] := False;

 

aTrioFemale[4] := False;

 

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

валют и классов).

 

aPostfixes := VarArrayCreate([1,8], varVariant);

 

aPostfix := VarArrayCreate([1,3], varVariant);

 

aPostfix[1] := 'а';

 

aPostfix[2] := 'и';

 

aPostfix[3] := '';

 

aPostfixes[1] := aPostfix;

 

aPostfix := VarArrayCreate([1,3], varVariant);

 

aPostfix[1] := '';

 

aPostfix[2] := 'а';

 

aPostfix[3] := 'ов';

 

aPostfixes[2] := aPostfix;

 

aPostfix := VarArrayCreate([1,3], varVariant);

 

aPostfix[1] := 'ь';

 

aPostfix[2] := 'я';

 

aPostfix[3] := 'ей';

 

aPostfixes[3] := aPostfix;

 

aPostfix := VarArrayCreate([1,3], varVariant);

 

aPostfix[1] := 'йка';

 

aPostfix[2] := 'йки';

 

aPostfix[3] := 'ек';

 

aPostfixes[4] := aPostfix;

 

aPostfix := VarArrayCreate([1,3], varVariant);

 

aPostfix[1] := 'ка';

 

aPostfix[2] := 'ка';

 

aPostfix[3] := 'ок';

 

aPostfixes[5] := aPostfix;

 

aPostfix := VarArrayCreate([1,3], varVariant);

 

aPostfix[1] := '';

 

aPostfix[2] := '';

 

aPostfix[3] := '';

 

aPostfixes[6] := aPostfix;

 

Массив соответствий классов чисел и их окончаний

 

aTrioPostfixes := VarArrayCreate([1,4], varVariant);

 

aTrioPostfixes[1] := 1; - для «тысяч» массив из массива массивов aPostfixes с индексом 1 ( ['а','и',''])

 

aTrioPostfixes[2] := 2; - для «миллион» массив из массива массивов aPostfixes с индексом 2 ['','а','ов']

 

aTrioPostfixes[3] := 2; - для «миллард» массив из массива массивов aPostfixes с индексом 2 ['','а','ов']

 

aTrioPostfixes[4] := 2; - для «триллион» массив из массива массивов aPostfixes с индексом 2 ['','а','ов']

 

aUnits := VarArrayCreate([1,2], varVariant); - массив корней значений валют (рубл, копе)

 

aUnitPostfixes := VarArrayCreate([1,2], varVariant); - массив соответствий корней значений валют и их окончаний

 

aUnitFemale := VarArrayCreate([1,2], varVariant); - массив признаков женского рода значений валют (рубль мужского рода, копейка женского рода; доллар мужского рода, цент мужского рода)

 

Заполняем массивы для необходимых типов валют.

 

if (Currency = 'USD') or (Currency = '') then

 

begin

 

aUnits[1] := 'доллар';

 

aUnits[2] := 'цент';

 

aUnitPostfixes[1] := 2;

 

aUnitPostfixes[2] := 2;

 

aUnitFemale[1] := False;

 

aUnitFemale[2] := False;

 

end

 

else

 

if (Currency = 'RUB') or (Currency = 'RUR') then

 

begin

 

aUnits[1] := 'рубл';

 

aUnits[2] := 'копе';

 

aUnitPostfixes[1] := 3;

 

aUnitPostfixes[2] := 4;

 

aUnitFemale[1] := False;

 

aUnitFemale[2] := True;

 

end

 

else

 

if Currency = 'KGS' then

 

begin

 

aUnits[1] := 'сом';

 

aUnits[2] := 'тыйын';

 

aUnitPostfixes[1] := 6;

 

aUnitPostfixes[2] := 6;

 

aUnitFemale[1] := False;

 

aUnitFemale[2] := False;

 

end

 

else

 

if Currency = 'KZT' then

 

begin

 

aUnits[1] := 'тенге';

 

aUnits[2] := 'тиын';

 

aUnitPostfixes[1] := 6;

 

aUnitPostfixes[2] := 6;

 

aUnitFemale[1] := False;

 

aUnitFemale[2] := False;

 

end

 

else

 

if Currency = 'EUR' then

 

begin

 

aUnits[1] := 'евро';

 

aUnits[2] := 'цент';

 

aUnitPostfixes[1] := 6;

 

aUnitPostfixes[2] := 2;

 

aUnitFemale[1] := False;

 

aUnitFemale[2] := False;

 

end;

 

Sum := RoundMoney(Abs(Sum)); - округляем исходное число

 

I := Trunc(Sum); - выделяем целую часть(рубли, доллары...)

 

F := Round(Sum * 100) mod 100; - выделяем дробную часть (копейки, центы...)

 

Result := Trim(Result + ' ' + TrioToText((I div 1000000000) mod 1000, 3)); - выделяем и преобразовываем в пропись миллиарды

 

Result := Trim(Result + ' ' + TrioToText((I div 1000000) mod 1000, 2));- выделяем и преобразовываем в пропись миллионы

 

Result := Trim(Result + ' ' + TrioToText((I div 1000) mod 1000, 1));- выделяем и преобразовываем в пропись тысячи

 

Result := Trim(Result + ' ' + TrioToText(I mod 1000, 0));- выделяем и преобразовываем в пропись сотни

 

Result := Trim(Result + ' ' + TrioToText(F , -1)); - преобразовываем в пропись дробную часть

 

Result[1] := UpperCase(Result[1])[1]; - результат пишем с большой буквы

 

end;

 

begin

 

end

 

После перевода результат можно проверить через кнопку "ПРОВЕРИТЬ"

 

Sum – число для преобразования.

 

Param_Language – язык локализации.

 

Currency – код валюты.

 

Пример 1

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

Shelter v.2 \ Настройки \ Справочники \ Услуги и оплаты \ Валюты: заменить Рубли на Тугрики.

*В коде важен регистр букв!

Shelter v.2 \ Настройки \ Настройки отчётов \ Внешние функции: открыть внешнюю функцию для программы на русском языке (по умолчанию это - №1).

Внести изменения в исходный код:

Найти раздел, например, KZT. Скопировать данные из него и вставить следующим разделом ниже.

Внести изменения: KZT -> TUG, тенге -> тугрик, тиын -> тугрятик, массив для окончаний указать 7 для обоих aUnits (базово всего 6, т.е. нужно будет добавить новый).

 

else

 

if Currency = 'TUG' then

 

begin

 

aUnits[1] := 'тугрик';

 

aUnits[2] := 'тугрятик';

 

aUnitPostfixes[1] := 7;

 

aUnitPostfixes[2] := 7;

 

aUnitFemale[1] := False;

 

aUnitFemale[2] := False;

 

end

 

В разделе массивов окончаний создать новый (в нашем примере - 7) и внести изменения по окончаниям и номеру массива.

 

aPostfix := VarArrayCreate([1,3], varVariant);

 

aPostfix[1] := '';

 

aPostfix[2] := 'а';

 

aPostfix[3] := 'ов';

 

aPostfixes[7] := aPostfix;

*Если массив с такими значениями уже присутствует (например, массив 2 имеет те же окончания, что мы создали в массиве 7), то можно новый не создавать, а установить:

aUnitPostfixes[1] := 2;

aUnitPostfixes[2] := 2;

Найти запись массива массивов окончаний и установить максимально 7, вместо 6.

 

aPostfixes := VarArrayCreate([1,7], varVariant);

 

Произвести проверку результата изменений через кнопку [Проверить]:

Sum – числительное с десятыми или сотыми (разделитель – точка!).

Param_LanguageRussian (язык программы, для которого настроена валюта).

CurrencyTUG (валюта, в которой нужно числительное изобразить прописью).

[Сохранить] -> Получить результат.

 


 

Внешние функции в разделе тарифов

Внешние функции раздела «Тарифы»

Внешние функции прикрепляются к конкретной операции в формировании тарифа.

 

Все функции имеют стандартный набор входных параметров:

 


BeginDate

Дата заезда

EndDate

Дата выезда

PostDate

Расчетная дата

Quant

Количество услуг

Cost

Стоимость

RefType

Тип операции:

1 - Услуга по тарифу

2 - Доп. Услуга

3 - Поздний выезд

4 - % за бронь

5 - Ранний заезд

6 - Простой номера

Operation

Идентификатор операции

ParamStr

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

 

Описание дополнительных входных параметров в ParamStr:

 


arrival

Дата заезда

departure

Дата выезда

ResDate

Смена создания

ResBeginDate

Дата начала бронирования

CreationDate

Дата создания

typesale

Тип размещения

CIE

Признак раннего заезда

IDLE

Признак простоя номера

COL

Признак позднего выезда

UseOrgParams

Признак использования тарифов и скидок организации

Ch

Расчетные параметры: Время

cost

Стоимость (ручной ввод)

workload

Загрузка отеля в разрезе номера

GuestsRateAdd

Параметризованная строка. Пакеты услуг для конкретного гостя (наименование параметра: идентификатор гостя, значение параметра: код пакета услуг)

RateAdd

Код пакета услуг (для брони)

GuestsPlaces

Параметризованная строка:

Наименование параметра: идентификатор гостя

Значение: Параметризованная строка с двумя параметрами:

  1. Наименование: идентификатор категории размещения, значение: идентификатор возрастной категории

  2. Наименование: ismain, значение: признак главного гостя

LoadingMode

Признак автоматического добавления услуг к автоначислениям

UserMode

Признак изменения услуги из карточки брони

RoomKind

Идентификатор типа номера

IDRoom

Идентификатор номера

Packagekind

Идентификатор типа тарифа

Section

Идентификатор секции фолио

Season

Идентификатор дополнительной стоимости на дату

QuantReal

Количество услуг. Будет больше Quant в случае неиспользования настройки «Не разделять автоначисления по гостям»

ISRES%

Процент за бронь

R%PACK

Идентификатор тарифа

Числовые значения в качестве имен параметров

Идентификаторы категорий размещения. В качестве значения имеют параметризованную строку:

Наименование: идентификатор возрастной категории

Значение: количество занятых мест

Статистические данные по гостю

ST_Night

Количество ночей

ST_Count

Количество заездов

ST_Cancel

Количество отмен

ST_NoShow

Количество незаездов

ST_Sum_Accommodation

Сумма за проживание

ST_Sum_Service

Сумма за доп.услуги

ST_Sum

Итоговая сумма

ST_First_Arrival

Дата первого заезда

ST_Last_Arrival

Дата последнего заезда

 

Выходным значением функция является параметризованная строка

Описание возможных параметров в выходной строке:

 


COST

Базовая стоимость

PRICE1

Стоимость выходного дня

PRICE2

Специальная стоимость

OperationCode

Код операции

Operation

Идентификатор операции по умолчанию (если не будет найдена операция по коду)

Quant

Количество

Section

Идентификатор секции фолио

 

 

Описания алгоритмов работы стандартных внешних функций

 

Trunc – Функция Trunc возвращает целочисленную часть числа с плавающей запятой. Она возвращает эту часть как Целочисленное значение.

Пример: Trunc(12.75) = 12

Mod - дает остаток от деления делимого на делитель

Пример: 19 mod 4 = 3

Now - возвращает текущую дату и время для местной временной зоны.

GetNamedParamDefFloat(ParamStr, ParamName, DefaultValue) – возвращает из параметризованной строки вещественное значение параметра по его наименованию (ParamStrпараметризованная строка, ParamNameнаименование параметра, DefaultValueзначение возвращаемое если параметр в строке не найден либо значение параметра отсутствует)

GetNamedParamDefInt(ParamStr, ParamName, DefaultValue) – возвращает из параметризованной строки целочисленное значение параметра по его наименованию (ParamStrпараметризованная строка, ParamNameнаименование параметра, DefaultValueзначение возвращаемое если параметр в строке не найден либо значение параметра отсутствует)

 

  1. Наименование: 4+1

Функция предназначена для реализации тарифа "Одни сутки бесплатно при покупке 4-х суток"

Исходный код:

 

function PackageAfterCalculate(BeginDate, EndDate, PostDate, Quant, Cost: Double; RefType, Operation: Integer; ParamStr: string): string;

begin

Result := '';

if (Trunc(EndDate) - Trunc(BeginDate) > 4) then

if ((Trunc(PostDate) - Trunc(BeginDate)) > 0) and

((Trunc(PostDate) - Trunc(BeginDate) + 1) mod 5 = 0) then

Result := '&COST=0';

end;

 

begin

 

end.

 

Описание алгоритма работы:

 

begin

Result := '';

если проживание более 4-х дней:

if (Trunc(EndDate) - Trunc(BeginDate) > 4) then

то если расчетная дата больше даты начала:

if ((Trunc(PostDate) - Trunc(BeginDate)) > 0) and

и остаток от целочисленного деления разности даты начала проживания и расчетной даты (увеличиваем на 1 из-за отбрасывания дробной части (времени)) на 5 (требуемое количество дней для скидки) равен нулю:

((Trunc(PostDate) - Trunc(BeginDate) + 1) mod 5 = 0) then

тогда обнуляем стоимость за расчетную дату и передаем значение в результирующую параметризованную строку:

Result := '&COST=0';

end;

 

  1. Наименование: QUANT

Функция предназначена для автоматического изменения кол-ва гостей при фиксированной стоимости

Исходный код:

 

function PackageAfterCalculate(BeginDate, EndDate, PostDate, Quant, Cost: Double; RefType, Operation: Integer; ParamStr: string): string;

begin

передаем реальное значение количества услуг и вычисленное значение реальной стоимости в результирующую параметризованную строку

Result := '&QUANT=' + FloatToStr(GetNamedParamDefFloat(ParamStr, 'QUANTREAL', 0)) + '&COST=' + FloatToStr(GetNamedParamDefFloat(ParamStr, 'QUANTREAL', 0) * Cost);

end;

 

begin

 

end.

 

*Функция неактуальна ('QUANTREAL'=1)

 

  1. Наименование: 10=0

Функция предназначена для реализации тарифа "10-е сутки бесплатно (с учетом предыдущих заездов)"

Исходный код:

 

function PackageAfterCalculate(BeginDate, EndDate, PostDate, Quant, Cost: Double; RefType, Operation: Integer; ParamStr: string): string;

begin

Result := '';

if (GetNamedParamDefInt(ParamStr, 'ST_NIGHT', 0) + (Trunc(PostDate) - Trunc(BeginDate) + 1) = 10) then

Result := '&COST=0';

end;

 

begin

 

end.

 

Описание алгоритма работы:

begin

Result := '';

Если сумма количества ночей предыдущих проживаний гостя и текущего проживания до расчетной даты равно 10

if (GetNamedParamDefInt(ParamStr, 'ST_NIGHT', 0) + (Trunc(PostDate) - Trunc(BeginDate) + 1) = 10) then

тогда обнуляем стоимость за расчетную дату и передаем значение в результирующую параметризованную строку:

Result := '&COST=0';

end.

 

  1. Наименование: -10%/-20%/-30%

Функция делает скидку 10% при заезде на количество дней от 7 до 13, 20% при заезде от 14 до 29 дней, 30% при заезде от 30 и более дней

Исходный код:

 

function PackageAfterCalculate(BeginDate, EndDate, PostDate, Quant, Cost: Double; RefType, Operation: Integer; ParamStr: string): string;

begin

Result := '';

if (Trunc(EndDate) - Trunc(BeginDate) > 6) then

if (Trunc(EndDate) - Trunc(BeginDate) < 14) then

Result := '&COST='+floattostr(Cost-Cost*10/100)

else

if ((Trunc(EndDate) - Trunc(BeginDate) > 13)and

(Trunc(EndDate) - Trunc(BeginDate) < 30)) then

Result := '&COST='+floattostr(Cost-Cost*20/100)

else

if (Trunc(EndDate) - Trunc(BeginDate) > 29) then

Result := '&COST='+floattostr(Cost-Cost*30/100);

end;

 

begin

 

end.

 

Описание алгоритма работы:

begin

Result := '';

если заезд более 6 дней:

if (Trunc(EndDate) - Trunc(BeginDate) > 6) then

тогда если заезд менее 14 дней

if (Trunc(EndDate) - Trunc(BeginDate) < 14) then

тогда устанавливаем стоимость со скидкой 10% за расчетную дату и передаем значение в результирующую параметризованную строку:

Result := '&COST='+floattostr(Cost-Cost*10/100)

Else

Иначе если заезд более 6 дней: и менее 30 дней

if ((Trunc(EndDate) - Trunc(BeginDate) > 13)and

(Trunc(EndDate) - Trunc(BeginDate) < 30)) then

тогда устанавливаем стоимость со скидкой 20% за расчетную дату и передаем значение в результирующую параметризованную строку:

Result := '&COST='+floattostr(Cost-Cost*20/100)

Else

Иначе если заезд более 30 дней

if (Trunc(EndDate) - Trunc(BeginDate) > 29) then

тогда устанавливаем стоимость со скидкой 30% за расчетную дату и передаем значение в результирующую параметризованную строку:

Result := '&COST='+floattostr(Cost-Cost*30/100);

end;

  1. Наименование: 7=0

Функция делает каждый 7-й день проживания бесплатный. Все дни после последнего бесплатного дня за заезд - со скидкой.

Исходный код:

 

function PackageAfterCalculate(BeginDate, EndDate, PostDate, Quant, Cost: Double; RefType, Operation: Integer; ParamStr: string): string;

begin

Result := '';

if (Trunc(EndDate) - Trunc(BeginDate) > 7) then

if ((Trunc(PostDate) - Trunc(BeginDate)) > 0) then

if((Trunc(PostDate) - Trunc(BeginDate)) mod 7 = 0) then

Result := '&COST=0'

else

if (Trunc(PostDate) > (Trunc(EndDate) - ((Trunc(EndDate) - Trunc(BeginDate)) mod 7))) then

Result := '&COST='+FloatToStr(Cost*0.9);

end;

 

begin

 

end..

 

Описание алгоритма работы:

 

begin

Result := '';

если проживание более 7 дней:

if (Trunc(EndDate) - Trunc(BeginDate) > 7) then

тогда если не первые сутки

if ((Trunc(PostDate) - Trunc(BeginDate)) > 0) then

тогда если остаток от целочисленного деления разности даты начала проживания и расчетной даты (увеличиваем на 1 из-за отбрасывания дробной части (времени)) на 7 (требуемое количество дней для скидки) равен нулю:

if((Trunc(PostDate) - Trunc(BeginDate)) mod 7 = 0) then

тогда обнуляем стоимость за расчетную дату и передаем значение в результирующую параметризованную строку:

Result := '&COST=0'

Else

иначе если расчетная дата больше чем разность даты выезда и остатка от целочисленного деления разности двты выезда и даты заезда на 7

if (Trunc(PostDate) > (Trunc(EndDate) - ((Trunc(EndDate) - Trunc(BeginDate)) mod 7))) then

тогда устанавливаем стоимость со скидкой 10% за расчетную дату и передаем значение в результирующую параметризованную строку:

Result := '&COST='+FloatToStr(Cost*0.9);

end;

 

 

  1. Наименование: -10%

Функция делает скидку 10%, если бронирование происходит в день заезда

Исходный код:

 

function PackageAfterCalculate(BeginDate, EndDate, PostDate, Quant, Cost: Double; RefType, Operation: Integer; ParamStr: string): string;

begin

Result := ';

if trunc(BeginDate) = trunc(now) then

Result := '&COST=' + floattostr(cost * 0.9);

end;

 

begin

 

end.

 

Описание алгоритма работы:

 

begin

Result := '';

если дата заезда равна текущей дате

if trunc(BeginDate) = trunc(now) then

тогда устанавливаем стоимость со скидкой 10% за расчетную дату и передаем значение в результирующую параметризованную строку:

Result := '&COST=' + floattostr(cost * 0.9);

end;

 

 

Добавление службы с нестандартным наименованием

Добавление службы с нестандартным наименованием

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

Делается это довольно просто:

1. Нужно открыть shelter.ini
2. Найти соответствующую секцию (для онлайн сервера [onlineserver], для сервера блокировок [server] и т.д.)
3. Добавить в нужную секцию следующие параметры:
Name=ShelterOnlineServer1
DispName=Shelter Online Server 1
где Name - уникальное имя службы
DispName - имя, которое будет отображено в службах
ВНИМАНИЕ!!! Обратите внимание, параметры для сервера блокировок нужно добавлять именно в секцию [server], а не [LOCK.SERVER]

Завершение трансферов при ночном аудите.

Завершение трансферов при ночном аудите

 

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

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

то она принадлежит частному лицу, а не контрагенту. И только после выезда гостя услуга будет принадлежать юридическому лицу. Возможна настройка Shelter,

для того чтобы при каждом ночном аудите совершался автоматический трансфер из секции «отложенные» на фолио цель (фолио группы, организации).

Для этого на сервере (машина, где находится БД Shelter) в файле shelter.IB.ini нужно добавить параметры:

 

[CloseShift]

Autopost = 1

Autotransfer = 1

CompleteTransfers = 1

 

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

Применяется для выгрузки в 1С.

Из-за чего возникают обрывы связи и что с ними делать?

Причины возникновения обрывов связи
Стабильность работы Shelter зависит от надежности сетевого соединения, помимо прочих факторов. Обрыв сетевого соединения не является неполадкой Shelter, но, тем не менее, влечет за собой значительные последствия. 
Причинами обрыва могут служить:
- Физический разрыв соединения, возникший в результате потери контакта (разъединения, окисления и т.д.) в местах соединения проводов и аппаратуры.
- Потеря работоспособности сетевых аппаратов из-за перегрева, потери целостности, удаления на большое расстояние (Wi-Fi).
- Скачки сетевого напряжения.
 
Следствие обрыва связи
• Любая транзакция (на изменение данных) состоит из нескольких этапов:
  • старт транзакции
  • изменение данных
  • подтверждение (либо отмена) транзакции
  • завершение транзакции
• Если после изменения данных, но до подтверждения (отмены) транзакции произойдет обрыв соединения, то Firebird (из-за специфичной реализации протокола TCP-IP) не получит уведомления об обрыве соединения и транзакция останется "висеть". Повторная попытка
изменения данных приведет к зависанию транзакции, а как следствия и зависание ПО.
• После возникновения блокировки работать в Shelter до устранения ее причины невозможно. Если времени на анализ ситуации нет и требуется скорейшее продолжение работы поможет перезапуск службы Firebird. Но, если не устранить причину, ситуация будет периодически возникать снова.
 
Автоматический сброс "зависших" транзакций
Операционная система сама занимается обнаружением разорванных TCP-соединений, но значения по умолчанию слишком велики. Сам механизм называется KeepAlive и за его работу отвечают следующие параметры:
 
KeepAliveTime — интервал времени с момента отправки последнего пакета, по истечении которого соединение помечается как требующее проверки. Задается в миллисекундах, по умолчанию равен 2 часам. Рекомендуется изменить на 5 минут (300000).
KeepAliveInterval — интервал между проверочными пакетами (отправка которых начинается по истечении параметра KeepAliveTime). Задается в миллисекундах, по умолчанию равен 1 секунде. Этого достаточно, менять не нужно.
Оба этих параметра можно отредактировать в реестре по адресу:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Нужно создать параметр с нужным именем типа DWORD и установить ему десятичное значение, затем перезагрузить сервер. При истечении указанного промежутка времени система сама будет "убивать" зависшие пакеты. Т.е. если на практике возникла взаимная блокировка из-за "зависшей" транзакции, то в течении указанного времени транзакция отменится автоматически.
Этот метод НЕ является приоритетным, т.к. проблему обрывов связи он НЕ решает. Но, как вариант, позволяет Shelter работать в более-менее штатном режиме. В идеале нужно найти источник обрывов связи и исправить.
 
Поиск зависших транзакций
Shelter обладает встроенными средствами для просмотра текущих транзакций. Находится оно в окне глобального обновления, во вкладке мониторинг транзакций.
Если найден конкретный компьютер, с которого возникают зависшие транзакции и решить проблему не удается, рекомендуется перенести рабочее место на удаленный рабочий стол прямо на сервер с БД.
 
Источники информации
http://www.ibase.ru/devinfo/keepalive.htm
http://www.ibase.ru/devinfo/ibtrans.htm
http://ru.wikipedia.org/wiki/TCP/IP

Как бороться с ошибкой "multiple rows in singleton select в процедуре SP_GET_LOCALIZATION_EX" в логах ShelterOnline/WuBook/Travelline

Как бороться с ошибкой "multiple rows in singleton select в процедуре SP_GET_LOCALIZATION_EX" в логах ShelterOnline/WuBook/Travelline

Периодически, на актуальных версиях Shelter, в логах ShelterOnline/WuBook/Travelline можно увидеть следующую ошибку : multiple rows in singleton select в процедуре SP_GET_LOCALIZATION_EX

Ошибка связана с дублированием названий (как правило дублируются названия категорий) в таблице LOCALIZATIONS.
Появление этой ошибки вызвано следующим порядком действий :
 
1. Открываем наименование в справочнике для которого отсутсвует локализованное (английское) название
2. Открываем окно для добавления/изменения локализованного (английского) названия
3. Ничего не изменяем и нажимаем сохранить
4. Еще раз открываем окно для добавления/изменения локализованного (английского) названия
5. Изменяем название и нажимаем сохранить
 
В итоге в таблице LOCALIZATIONS появляются 2 записи для одного языка, одного поля и одной позиции справочника.
 
Данная ошибка исправлена в Shelter v2 версия 2.12.120.XXX
Обновление на актуальную версию устраняет эту проблему, так как в скрипте обновления присутствует процедура, которая удаляет дублирующиеся записи.
Если, обновление не представляется возможным по каким-либо причинам, то можно выполнить скрипт : 
 
execute procedure SP_REPAIR_LOCALIZATIONS;
 
И подтвердить сохранение транзакции. После чего необходимо перезапустить службы, и убедиться в отсутствии ошибок в логах.
ВНИМАНИЕ(!!!)
 
Данный скрипт вначале выполнять на тестовой базе, если всё работает корректно, то скрипт можно выполнить на рабочей базе.

Как перевести дату смены, после долгого простоя гостиницы?

Как перевести дату смены, после долгого простоя гостиницы?
 
Перейти на вкладку ночного аудита.
1) Ctrl+Alt+Shift + кнопка перевода смены в интерфейсе программы.
2) Указываете нужную дату
3) Сохранить.

Как разобраться в логах Shelter?

Описание тонкостей при ведении логов

Общие сведения
Каждая запись в логе непременно сопровождается подробной информацией на момент возникновения события.
 
Пример лога:
 
ID потока Занимаемая/виртуальная память Дата / Время Тип события Событие
5984 55028/21032 KB   15.01.2019 16:37:21.002 TRY: TEventManager.DoEvent(4100, )
5984 55028/21032 KB 15.01.2019 16:37:21.002  TRY TEventManager.DoEvent.CallProc(4100, )
6700 55056/21116 KB 15.01.2019 16:37:21.002 TRY: TDebugThread.Execute.Start
5984 55056/21116 KB 15.01.2019 16:37:21.002    Thread TFreezeChecker (6632) Created
5984 55056/21116 KB 15.01.2019 16:37:21.002 DONE: TEventManager.DoEvent.CallProc(4100, )
5984 55064/21116 KB  15.01.2019 16:37:21.002  DONE:  TEventManager.DoEvent(4100, )

При корректном поведении для большинства событий "TRY" должно быть событие "DONE". В приведенном выше примере стартует поток, но метода "DONE" нет, т.к. он вызывается при завершении приложения.
Логирование запросов

8460  73232/46048 KB       15.01.2019 16:37:23.222 TRY:    1.2.TDatabaseConnector.CreateReadQuery.CrSect.Enter
8460  73240/46048 KB       15.01.2019 16:37:23.236 DONE:   1.2.TDatabaseConnector.CreateReadQuery.CrSect.Enter
8460  74084/50560 KB       15.01.2019 16:37:23.693 TRY:    1.7.SQL_OpenSession.CreateReadQuery
-----------------------------------------------------------
select session from SYS$OPENSESSION(0, 0, '&Computer=A-SAZONOV&LangCode=RU')
-----------------------------------------------------------
8460  74084/50560 KB       15.01.2019 16:37:23.693 DONE:   1.7.SQL_OpenSession.CreateReadQuery
8460  74084/50560 KB       15.01.2019 16:37:23.700         1.7.8686.Open [10 ms]
8460  74084/50560 KB       15.01.2019 16:37:23.700 TRY:    1.7.8686.Fetch
8460  74084/50560 KB       15.01.2019 16:37:23.700 DONE:   1.7.8686.Fetch [0 ms]
8460  74084/50560 KB       15.01.2019 16:37:23.700 TRY:    TDatabaseConnector.FreeQuery ReadTrans=False AssignedTransaction=False IsException=False
8460  74084/50560 KB       15.01.2019 16:37:23.701 TRY:    1.7.8686.Commit
8460  74084/50560 KB       15.01.2019 16:37:23.703 DONE:   1.7.8686.Commit.Result = 1
8460  74084/50560 KB       15.01.2019 16:37:23.703 TRY:    TDatabaseConnector.FreeQuery -> CrSectLeave OnCrSectLeave=False FCrSect=True
8460  74084/50560 KB       15.01.2019 16:37:23.703 DONE:   TDatabaseConnector.FreeQuery -> CrSectLeave
8460  74084/50560 KB       15.01.2019 16:37:23.703 DONE:   1.7.8686.FreeQuery [10 ms, 1 records, 52 B]
Стандартные поля описаны выше. Событие TDatabaseConnector.CreateReadQuery.CrSect.Enter следит за очередностью выполнения запросов. Если в логе есть подобное событие с типом "TRY", но нет "DONE", это значит, что какой-то другой запрос "завис", т.е. для него не было события TDatabaseConnector.FreeQuery.CrSect.Leave. Сам запрос из таблицы также исключаем.

 

ID подключения к БД Счетчик запросов Процедура / ID транзакции Действие
1 7 SQL_OpenSession CreateReadQuery
1 7 8686 Open [10 ms]
1 7 8686 Fetch
1 7 8686 Fetch [0 ms]
1 7 8686 Commit
1 7 8686 FreeQuery

 

Т.е. порядок действий таков:

• Пытаемся встать в очередь;
• Успешно встаем в очередь;
• Создаем экземпляр запроса;
• Выполняем запрос;
• Далее могут быть какие-то вложенные действия;
• Пытаемся зафиксировать запрос;
• Успешно его фиксируем;
• Пытаемся выйти из очереди;
• Успешно выходим из очереди;
• Уничтожаем экземпляр запроса;

При выполнении запроса в скобках указано время выполнения запроса (но не время его полной обработки).
При уничтожении запроса в скобках указано полное время на обработку запроса (включая все вложенные действия), кол-во полученных записей и их размер.
Счетчик запросов нужен для того, чтобы отличить один запрос от другого. Например, чтобы было видно, что начался вложенный запрос.
 
Логирование запросов из внешних модулей
 
Пример лога:
 
5984  96428/70048 KB       15.01.2019 16:38:16.089         SHELTER.DLL | Try: Core.Bootstrap
5984  96556/69980 KB       15.01.2019 16:38:16.090         SHELTER.DLL | Try: Save .ini = C:\Users\ALEXAN~1\AppData\Local\Temp\80693241
5984  96584/69980 KB       15.01.2019 16:38:16.090         SHELTER.DLL | Done: Save .ini = C:\Users\ALEXAN~1\AppData\Local\Temp\80693241
5984  96584/69980 KB       15.01.2019 16:38:16.090         SHELTER.DLL | Done: TIniFile.Create = C:\Users\ALEXAN~1\AppData\Local\Temp\80693241
5984  96584/69980 KB       15.01.2019 16:38:16.091         SHELTER.DLL | Start of Core.Bootstrap() with .ini-file = C:\Users\ALEXAN~1\AppData\Local\Temp\80693241
 
5984  96584/69980 KB       15.01.2019 16:38:16.096         SHELTER.DLL | Try: Plug Module D:\Online\sdmGazPromBank.dll
5984  96584/69980 KB       15.01.2019 16:38:16.096         SHELTER.DLL | Load Library D:\Online\sdmGazPromBank.dll Start
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | D:\Online\sdmGazPromBank.dll loaded ok
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | function MagicCode found
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | Magic code is ok
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | function Version found
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | DLL specs/build version: 1.06/1.00
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | function Info found
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | i: -------------------------------------------
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | i: CREDIT CARD( GAZPROMBANK)
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | i: version 1.0.0 2017.05.15
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | i: -------------------------------------------
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | Load Library D:\Online\sdmGazPromBank.dll Handle = 136118272
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | Init Library D:\Online\sdmGazPromBank.dll Start
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | function Init found
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | DLL init results: (0x00000000,0x081D0000)
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | Init Library D:\Online\sdmGazPromBank.dll Result = 0
5984  100132/76588 KB      15.01.2019 16:38:16.104         SHELTER.DLL | Module D:\Online\sdmGazPromBank.dll plugged ok
 
Все подчиняется тем же правилам, что и выше, но с указанием модуля.

Поиск ошибок в логах.

Одним из ключевых слов при поиске ошибок в логе является ERROR. Для поиска ошибок в логе, необходимо :
1. Воспроизвести проблему
2. Открыть сформировавшийся лог Shelter любым текстовым редактором (предпочтительнее Notepad++)
3. Нажать Ctrl + F в полей найти ввести error 
4. Нажать Найти
5. Попытаться найти решение самостоятельно
Исключения по error, на которые можно не обращать внимание :
1. select error

2. ERROR:  Different Charset [DBCharset=UNICODE_FSS,Charset=WIN1251]
3. ERROR : TShelterDLL.Destroy

Как сбросить пароль пользователя

Как сбросить пароль пользователя

update USERS U
set U.PASSWRD = 'aQkcPLy0hH0='
where U.LOGIN = 'LOGIN'  
and U.ENABLEd = 1
Запрос сбрасывает пароль нужного пользователя на "1".
Вместо LOGIN подставить нужный логин.

Модули Шелтер и Абонемент в ключе защиты

 

 

Модули Шелтер и Абонемент в ключе защиты, а также способ их лицензирования

 

 

Проект Модуль Наименование Примечание
1 1 Все функции Connecter Лицензируется по количеству одновременно запущенных экземпляров ПО
1 2 Абонемент-Онлайн Один модуль на объект
1 3 Инфо-киоск (с оплатой) Лицензируется по количеству киосков на объекте
1 4 Инфо-киоск (без оплаты) Инфотерминал Лицензируется по количеству киосков на объекте
1 5 Монитор для тренера Лицензируется по количеству мониторов на объекте
1 6 Модуль управления солярием Лицензируется по количеству соляриев на объекте
1 7 Монитор для клиента (дисплей покупателя) Лицензируется по количеству мониторов на объекте
1 8 CloudPayment Один модуль на объект
1 9 Регулярные списания EFT (Абонемент) Один модуль на объект
1 10 Интеграция с ПДС через FarCards, интеграция с UDS Game Один модуль на объект
1 11
Интерфейс с CRM 1C Битрикс
Один модуль на объект
1 12 Сервер статистики ServStat (Абонемент) Одна лицензия на один сервер статистики БД

 


 


 


 

2 1 Cloudshelter  
2 2 Подписка на обновления для Shelter3  
2 3 Модуль очистки данных из базы Shelter  
2 4 Модуль интеграции Shelter с Wifi системой авторизации гостей  
2 5 Менеджер мероприятий Лицензируется по количеству рабочих мест
2 6 ------------------------------------------------------------------------------------  
2 7 ------------------------------------------------------------------------------------  
2 8 Монитор Ресурсов  
2 9 Горничные-мобайл(минибар), Web горничные  
2 10 Медицина  
2 11 Интерфейс РК-Шелтер  
2 12 Интерфейс РК-Либра(Фиделио)  

 


 


 


 

3 1 Шелтер-лайт (модуль 1 и 3)  
3 2 Шелтер-полная версия (модули 1, 2, 3)  
3 3 Отчеты  
3 4 Телефонный тарификатор  
3 5 Интернет-бронирование  
3 6 ПДС, CRM  
3 7 Выгрузка в XML (УФМС ПО Контур и Радиус)  
3 8 Банковский протокол  Лицензируется по количеству рабочих мест, где установлена связь с ПО эквайринга
3 9 Горничные  Один модуль на объект
3 10 Channel manager (Wubook, Тревеллай, Нотабене)  
3 11 IP TV (Hoteza, Видеолюкс, Отрум...)  
3 12 Замковая система  

 


 


 


 

4 1 Абонемент Лицензируется по количеству одновременно запущенных экземпляров ПО
4 2 Интерфейс – турникет Один модуль на объект
4 3 Отчеты, автозапуск мероприятий Один модуль на объект
4 4 Интерфейс с Gantner, PocketKey Один модуль на объект
4 5 Платежные системы Ассист, Робокасса, Резервмастер Один модуль на объект
4 6 Монитор контролера Лицензируется по количеству одновременно запущенных экземпляров ПО
4 7 Инфо-плазма Лицензируется по количеству одновременно запущенных экземпляров ПО
4 8 ------------------------------------------------------------------------------------  
4 9 Доступ к базе сторонних программ (connecter) – кроме функций, защищенных 1.2-1.7, 4.5

Лицензируется по количеству одновременно запущенных экземпляров ПО

(подробнее про лицензирование Connecter см.статью о Connecter)

4 10 E-Mail и SMS рассылка (GuestAnnoncer) Один модуль на объект
4 11 Интерфейс связи с Cognitivе, Regula (сканеры паспортов) Лицензируется по количеству рабочих мест, где установлена связь
4 12 Выгрузка в 1С Один модуль на объект
       
       
6 1 Web-Медицина Лицензируется по количеству рабочих мест
6 2 Интеграция с системой HotBot Один модуль на объект

 

 

 

Управление лицензиями. Работа с ключом защиты Shelter.

 

 

Работа с ключом защиты UCS.

 

Описание работы с ключом защиты находится по ссылке http://support.ucs.ru/ru/node/8733

 

 

 

Установка Web-сервера IIS для модуля "Медицина"

ВНИМАНИЕ!!! Модуль лицензируется, необходима лицензия на проект 6, модуль 1
Модуль можно скачать тут

Для работы необходим IIS и FrameWork 4.6.1.

1.   Установка и конфигурирование IIS - https://professorweb.ru/my/ASP_NET/sites/level3/3_1.php
2.https://stackoverflow.com/questions/6846544/how-to-fix-handler-pagehandlerfactory-integrated-has-a-bad-module-managedpip
How to fix: Handler “PageHandlerFactory-Integrated” has a bad module “ManagedPipelineHandler” in its module list

It turns out that this is because ASP.Net was not completely installed with IIS even though I checked that box in the "Add Feature" dialog. To fix this, I simply ran the following command at the command prompt

windir\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
If I had been on a 32 bit system, it would have looked like the following:

windir\Microsoft.NET\Framework\v4.0.21006\aspnet_regiis.exe -i

Remeber to run the command prompt as administrator (CTRL+SHIFT+ENTER)

3.   Далее, необходимо скопировать модуль в директорию (после устновки IIS директория должна создаться автоматически) C:\inetpub\wwwroot\
4.   В  диспетчере служб IIS добавить добавить приложение, и указать физический путь

5.   Сайты - Привязки - Имя узла не заполнять! Тип привязки - http, порт - произвольный :

6.   Путь к базе данных  и путь до сервера блокировок указывается в файле Medicine_web.ini, который лежит в корне сайта.

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

Если не подтянулись визуальные стили (style.css) - то необходимо, в компонентах Windows установить чек-бокс в "Службы IIS" - "Служба интернета" - "Общие функции HTTP" - "Статическое содержимое" :

Так же, необходимо перепроверить, что в "Пулы приложений" версия среды CLR.NET соответствует версии установленного .NET Framework


Убедиться, что для сайта с модулем указана версия 4.0

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

Работа в Shelter на планшете (под управлением OS Windows 10)

Работа в Shelter на планшете (под управлением OS Windows 10)

  Рис.1  Рис.2

 

Технические рекомендации

1. Требуется наличие бесшовного WiFi покрытия. Рекомендуется чтобы устройство находилось во внутренней сети гостиницы. Работа через гостевой интернет не рекомендуется.

2. Для удобства использования рекомендуется приобретать модели планшетов с большой диагональю экрана (на фото использован планшет Samsung XE500T1C, диагональ 11.6", разрешение 1366x768);

3. Установка ПО Shelter  производится стандартным образом (в соотв. со статьей http://support.ucs.ru/ru/node/9001);

4. Рекомендуется использовать стилус.

 

Не работают или работают не корректно следующие функции:

1.      Нет функционала открывать контекстное меню (как правой кнопкой мыши на ПК);

2.      Не работает перетягивание на шахматке;

3.      Не удобно пользоваться внесением цифровой и буквенной информации – нужно отдельно открывать клавиатуру, которая перекрывает основное окно;

4.      Есть проблемы с модальностью окон;

5.      Нельзя повторно сформировать отчет «Счет» из-за отсутствия функционала вызова контекстного меню.

 

Работают следующие функции:

1.      Двойной клик работает: на шахматке, в модуле бронирования, при открытии отчетов, в модуле список гостей, в модуле список фолио, внутри фолио, в справочниках;

2.      Зажать значок со статусом комнаты – открывается окно с возможностью смены статуса номера;

3.      Бронирование/заезд по кнопке работают;

4.      Окно оплаты работает;

5.      Работа с фолио (начисление услуг, проведение оплат, коррекция через двойной клик, ручные скидки, перетаскивание из секции в секцию);

6.      Переселение гостя возможно только через кнопки на верхней панели;

7.      Работают фильтры в модулях;

8.      Создание групповой брони (добавление заездов, добавление организации, распределение брони, выставление счета);

9.      Основной функционал Справочников работает (добавление гостиниц и юр.лица собственника, добавление категорий номеров и номерного фонда, тарифы, киоски);

10.  Пользовательские настройки работают;

11.  Поселение/бронирование/аннуляция работают в модуле Список гостей, в том числе и групповой/выборочный заезд;

12.  Закрытие смены работает;

13.  Ночной аудит работает;

14.  Модуль «Свободные номера по типам» работает;

15.  Калькулятор тарифов работает;

16.  Базовые функции в модуле «Киоск» работают;

17.  Базовые отчеты открываются (Счет, Фолио, Отчет Менеджера, Комплексный отчет ночного аудита, Питание на день (по расписанию питания), Список гостей, Отчет по услугам, Сводка по доходу и заселению).

Закрытие из iiko в Shelter

Описание интеграции iiko и Shelter находится тут
 

Интеграция Shelter и CRM (Card System)

 

 

 

 

 

 

Настройка интеграции Shelter и CRM (Card System)
Реализуемые функции

 

Действие в Shelter  Результат
1. Поиск гостя через список гостей. В списке гостей провести картой Если в Shelter гость с такой картой уже есть, то в списке появляется найденный гость.
Если такого гостя нет, то происходит добавление гостя
(в Shelter передаётся ФИО гостя)
2. Поиск гостя при поселении/бронировании в форме поселения/брони провести картой Поиск осуществляется аналогично, как и в списке гостей
3. Передача в CRM суммы потрат Потраты передаются на счет потрат со всех платежей, кроме тех типов оплат, где установлен чек-бокс "ПДС"
4. Передача количества ночей В CRM осуществляется передача количества ночей, проведенных гостем в гостинице (после выезда гостя)
5. Передача количества визитов В CRM осуществляется передача количества заездов гостя (после выезда гостя)
6. Пополнение депозитного счета через вкладку ПДС в фолио Происходит пополнение депозитного счета в CRM
7. Списание с депозитного счета через вкладку ПДС в фолио Происходит списание с депозитного счета в CRM
8. Работа со скидками для гостей при бронировании/послении Подтягивается скидка гостя при послении/бронировании от стойки

Для настройки интеграции необходимо обновить Shelter до актуальной версии. Настройки необходимо выполнять через "Сервисы и оборудование" :

Рис. 1

В shelter.ini не должно быть подключенного модуля ПДС CardSystem.
Необходимо убедиться, что в ключе защиты присутствует Проект 3, модуль 6 (ПДС, CRM). 

Для интеграции с CRM 5 необходимо запросить "короткий" лицензионный код для интеграции с Shelter :

Рис. 2 

Для этого необходимо связаться с отделом лицензирования UCS.
При интеграции с CRM 7 короткий код указывать не нужно.
1. Необходимо перейти во вкладку "Сервисы и оборудование" - нажать кнопку "Добавить" - нажать на "Драйвер", в открывшемся окне выбрать "Персональная Дискнонтная Система (ПДС)" - "Card System" - "Выбрать" :

Рис. 3
2. Нажать кнопку "Настройка" :

Рис. 4
3. В открывшемся окне необходимо настроить следующим образом : 

 

Лицензионный код : Указать "короткий код" (для CRM7 можно оставить это поле пустым)
Логин : Указать логин для входа в CRM
Пароль : Указать пароль для входа в CRM
Хост : Указать IP адрес ПК, где находится база данных CRM
Порт : указать порт для подключения к CRM (сервер авторизации (API) - порт TCP)
Таймаут соединениявремя в мс ( можно оставить 0)
Номер терминала : 13 
Тип счета : 0 
Передача карты (чек-бокс) : 
возможность передачи дисконтной карты другому гостю
Платежи : код типа счета - депозит  
Потраченные средства : код типа счета - потраты
Скидки : код типа счета - скидка
Ночи : код типа счета - ночи
Визиты : код типа счета - визиты

Далее Настройки -> Справочники -> Услуги и оплаты -> Оплаты -> Безналичный расчет -> Добавить новый тип оплтаты, к примеру, "Оплата CRM"
Рис. 5
Следующим шагом : -> Справочники -> Услуги и оплаты -> Услуги -> Добавить услугу, к примеру, "Пополнение CRM" 

Рис. 6

Далее -> Настройки системы -> Внешние системы -> ПДС :
Рис. 7
 

В параметре "Код операции для платежей" указать тип оплаты, заденный ранее. "Код операции для пополнения" - указать услугу, которые мы заводили ранее (Пополнение CRM).
Чек-бокс "Разрешать ручной ввод номера карты" и "Возможность проведения операции пополнения баланса карты" - указывается по необходимости.

 

Настройки в CRM (пример)
 

1. Завести "Классификатор ПО" : 
Файл - Классификаторы ПО - Добавить

                                                                        Рис. 8

2. Завести "Типы счетов" : 
Справочники - Типы счетов

                                                                          Рис. 9
3. Настроить схемы :
Справочники - Схемы. 

                                                                   Рис. 10
4. Добавить типы счетов для классификатора ПО :
Классификаторы ПО (выбрать ранее созданный) - В поле "Типы счетов" ПКМ - "Настройки для работы с типами счетов" :

                                                                                     Рис. 11
5. Выпусть карту : 
Владельцы и карты - Выпуск карт

                                                                        Рис. 12
6. Создать гостя :
Владельцы и карты - Добавить нового владельца. Заполинить согласно скриншоту.

                                                                                                                    Рис. 13
7. Далее необходимо сопоставить  коды скидок в CRM и Shelter. Скидки заводятся в Shelter, код скидки в Shelter = код внешний в схемах CRM

                                                 Рис. 14

                                                                  Рис. 15

 

Операции в Shelter

1. Настроить считыватель (мануал можно посмотреть тут)
2. В карточке бронирования приложить карту к считывателю, появится окно следующего содержания : 

                                        Рис. 16
Если в БД Shelter уже заведен гость с такой фамилией, то при нажатии "ОК" откроется окно поиска гостя, где можно выбрать уже существующего гостя, таким образом мы "привяжем" гостя из CRM к гостю в Shelter.
Если нажать "Отмена", то будет создана новая карточка гостя. После сохранения карточки гостя, появляется следующее окно : 

                          Рис. 17
Нажимаем "Да". 
Если гостю положена скидка, то она отобразится в соответствующем поле при послении/бронировании.

                                                                                                               Рис. 18
3. Пополнение карты гостя :
Перейти в фолио - Доп.операции - ПДС - Ввести номер или приложить к считывателю карту, должен подтянуться гость из CRM : 

                                           Рис. 19
Ввести сумму пополнения
Нажать "Пополнить баланс карты"
В открывшемся окне выбрать типа оплаты, нажать оплата. После оплаты баланс карты гостя увеличится на ту сумму, на которую выполнили пополнение :

                                          Рис. 20
При этом на фолио отобразится сумма пополения карты (услуга + оплата) :

                                                                                                         Рис. 21
Баланс счета в CRM :

                                                                                                      Рис. 22
4. Списание с карты гостя : 
Перейти в фолио - Доп.операции - ПДС - Ввести номер или приложить к считывателю карту, должен подтянуться гость из CRM
Ввести сумму списания
Нажать "Списать деньги на фолио"
После списания баланс карты гостя уменьшится на сумму списания : 

                                           Рис. 23
При этом баланс фолио станет положительный, так как мы фактически перенесли часть депозитных средств с CRM на фолио в Shelter :

                                                                                                                 Рис. 24

                                                                                                                  Рис. 25
Данную оплату можно отменить стандартныим средствами Shelter (возврат оплаты), при этом баланс фолио гостя изменится, а счет гостя в CRM пополнится на сумму той транзацкции, которую мы отменили.
5. Ночи и заезды передаются в CRM только после выезда гостя!
6. Оплата услуг с депозитного счета CRM :
Начислить услугу на фолио, при оплате этой услуги (в окне оплаты) приложить карту гостя к считывателю - тип оплаты должен измениться автоматически на "Оплата CRM":

                                                                                      Рис. 26
7. Передача "Потрат" выполняется автоматически, при выезде гостя. Потраты - сумма оплат гостя за предоставленные услуги в гостинице.
На примере : 

                                                                                                                 Рис. 27

Общая сумму оплат - 162009 р., однако, оплаты, с помощью депозитного счета (Оплата в CRM), передаваться в CRM не будут!
Баланс счетов гостя в CRM после выезда : 

                                                                                                                Рис. 28

 

* В случае использования карт Em-Marine возможна удобная настройка в CRM для привязки карт, а именно:

 

 

 

 

 

 

Настройка интеграции Shelter и UDS-GAME

 

 

 

 

Настройка интеграции Shelter и UDS-GAME
Реализуемые функции

Действие в Shelter  Результат
1. Оплата услуг при помощи скидки Применяется процентная скидка на сумму чека (зависит от настроек лк UDS-GAME - параметр "Понижать сумму чека")
2. Оплата при помощи бонусных баллов Происходит списания баллов от суммы чека (зависит от настроек лк UDS-GAME - параметр "Начислять бонусные баллы", а так же от процента счета для оплаты бонусными баллами)
3. Накопление баллов Накапливаются баллы с каждого чека (зависит от настроек лк UDS-GAME - "статусы клиентов")
4. Оплата по коду из приложения UDS-GAME Вводится код из приложения UDS-GAME, по которому происходит начисления баллов/списание баллов/применяется скидка
5. Оплата по номеру телефона Вводится номер телефона гостя для последующего накопления баллов (по номеру телефона возможно только накопление баллов)
6. Проверка баланса бонусов гостя Отображается баланс баллов гостя (только по коду из приложения UDS-GAME)

ВНИМАНИЕ!!! В указанной ниже версии amPDS_UDSGame.dll не поддержан возврат бонусных баллов при возврате в Shelter.

Версии используемого ПО

ПО Shelter Версия 2.12.130.3100
amPDS_UDSGame.dll Версия 1.2.0.14

Настройки необходимо выполнять через "Сервисы и оборудование":

Необходимо убедиться, что в ключе защиты присутствует Проект 1, модуль 10 (Интеграция с UDS-GAME). 
1. Необходимо перейти во вкладку "Сервисы и оборудование" - нажать кнопку "Добавить" - нажать на "Драйвер", в открывшемся окне выбрать "Персональная Дискнонтная Система (ПДС)" - "UDS-Game" - "Выбрать" :

2. Нажать кнопку "Настройка" 

3. В открывшемся окне необходимо настроить следующим образом :

Путь к библиотеке : указать путь до библиотеки amPDS_UDSGame.dll
Путь для ini-файла : указать путь до файла amPDS_UdsGame.ini
Путь для лог-файла : можно оставить это поле пустым, лог файл будет записываться в папку LOG
 


4. Далее Настройки -> Справочники -> Услуги и оплаты -> Оплаты -> Безналичный расчет -> Добавить новый тип оплтаты, к примеру, "Оплата CRM"

5. 
В файле amPDS_UdsGame.ini необходимо указать значение key_api можно получить в настройках личного кабинета UDS Game - Интеграция - API Key :

Оплата услуг при помощи скидки

В личном кабинете UDS Game способ предоставления скидки : "Понижать сумму чека", в этом случае скида будет применяться на всю сумму к оплате (размер скидки зависит от уровня статуса клиента в UDS Game)
В окне оплаты необходимо ввести код из приложения UDS в поле "ПДС(Карта/Телефон)" и нажать кнопку оплатить, появится следующее окно : 


Для данного клиента, в UDS Game заведена скидка 11% :

Внимание!!! Одновременная работа с понижением суммы счета (скидка) и с начислением бонусных баллов не представляется возможным
Внимание!!! "Время жизни" одно кода составляет 30 минут, либо 1 транзакция

Внимание!!! Использование скидки возможно только в следующих случаях :
- если оплачиваются все услуги (т.е.в чеке нет услуг с предоплатой 100% или ценой = 0)

-  если все услуги начислены на фолио

Внимание!!! Номер телефона должен вводиться в формате 79991234567
При вводе номера телефона данные по скидкам отображаться не будут. В UDS будет передана сумма чека.

Внимание!!! При изменении схемы работы в UDS, необходимо в обязательном порядке перезапускать Shelter

Оплата услуг при помощи бонусных баллов.

В личном кабинете UDS Game способ предоставления скидки : "Начислять бонусные баллы", в этом случае скида будет применяться на всю сумму к оплате (размер процента бонусных баллов зависит от уровня статуса клиента в UDS Game)

В окне оплаты необходимо ввести код из приложения UDS в поле "ПДС(Карта/Телефон)" и нажать кнопку оплатить, появится следующее окно : 


В данном случае, можно накопить баллы в размере 10% (зависит от процента бонусов для гостя из личного кабинета UDS-Game) от суммы чека, либо списать 20 бонусных баллов (зависит от настройки "Какой процент счета можно оплатить баллами" из личного кабинета UDS-Game) со счета гостя.
Если нажать "Накопление баллов 10.00%", то в UDS-Game баланс бонусных баллов увеличиться на 10, к оплате : 100р
Если нажать "Списание баллов : 20.00", то с бонусного счета гостя будет списано 20 баллов, к оплате : 80р. 
Если нажать "Отмена", то будет произведена попытка обычной оплаты
При вводе номера телефона в окне 
"ПДС(Карта/Телефон)" появляется возможность только накопления (Shelter передает сумму оплаты в UDS-Game, который в свою очередь начисляет бонусные баллы)
Проверка баланса бонусов гостя
Проверка баланса бонусных баллов гостя возможна только по коду из приложения UDS-Game.
Есть 2 варианта проверки баласна :
1. Через окно оплаты Shelter : 
В окне оплаты в поле "ПДС(Карта/Телефон)" ввести номер из приложения UDS-Game : 

Нажать информационную кнопку, откроется окно с информацией по клиенту :

2. Через Фолио - Доп.операции - ПДС :

 

 

 

Настройка интеграции с HotBot (черновик)

Настройка интеграции Shelter и HotBot

 

Версии используемого ПО

ПО Shelter Версия 2.12.132.3280
HotBot.dl Версия 1.0.1.24

Необходимо убедиться, что в ключе защиты присутствует Проект 6, модуль 2 (Интеграция с HotBot). 

 

1. Создать отдельную папку, к примеру, HotBot.
2. Скопировать файлы с ftp в эту директорию, а так же необходимые файлы для Shelter (shelter.exe, shelter.dll, shelter.ini, gds32.dll и пр.)
3. Создать ярык для shelter.exe, в ярлыке прописать ключ -hotbot -install 
4. В shelter.ini добавить секцию : 
[SERVICES]
HotBot=%EXE_PATH%\hotbot.dll
5. Настроить и запустить службу ShelterOnlineServer (https://support.ucs.ru/ru/node/9091)
6. Настроить hotbot.ini :
 
[MAIN]
;IP адрес службы ShelterOnlineServer
ShelterHost=127.0.0.1
;Порт службы ShelterOnlineServer
ShelterPort=7778
LangCode=RU
; ID отеля в таблице Hotels, 1 отель = 1 служба
HotelID=1
Encoding=utf-8
;Таймаут запросов к ShelterOnlineServer в секундах
Timeout=60
;Путь до директории, в которой будут создаваться файлы с данными 
OutDir=%EXE_PATH%\HotBotOut\
;Название файлов
OutFileName=upload-%DATE%-%TIME%-%HOTELID%.csv
FormatLine={id};{rs_extno};{resid};{gs_code};{status_code};{status};{room_type};{adults};{children};{guest_id};{guest_fullname};{guest_firstname};{guest_patronymic};{guest_lastname};{guest_phone};{guest_email};{gs_phone};{arrival};{departure};{creation_date};{update_date};
;Указать поля для перевода даты/времени в "читаемый" вид в соответствии с OutDateFormat 
DateColumns=arrival,departure,creation_date,update_date
OutDateFormat=DD.MM.YYYY HH:MM
;Указать дату (в формате как в OutDateFormat), от которой будет производиться выгрузка
LastUpdate=17.09.2019 12:00
 
7. Запустить службу HotBot
8. Для каждой новой брони/поселения будет создаваться *.csv файл с данными по формату FormatLine

ВНИМАНИЕ!!! На 17.09.2019, версия 2.12.132.3280 является BETA-версией, и не доступна для обновления. Если есть необходимость запуска данной интеграции на более ранних версиях Shelter без обновления, то необходимо :
1. Через tracker запросить версию 2.12.132.3280
2. Установить службу ShelterOnlineServer и HotBot от версии 2.12.132.3280 в отдельной директории
2.1. Если используется ShelterOnlineServer для GDS/Интернет-бронирования, необходимо установить службу ShelterOnlineServer с другим названием (
https://support.ucs.ru/ru/node/9183), в ini-файле указать другой порт (7778, к примеру)
3. Поочередно выполнить скрипты (
https://support.ucs.ru/ru/node/9537) из архива, скаченного с FTP

 
Каждый новый файл создаётся при : 
Создании индивидуальной брони;
Создании групповой брони;
Заезде/Выезде гостя;
При изменениях параметров брони/поселения;

 
 
 

 

 

 

Подключение считывателя карт для интеграции с CRM

 

 

 

 

Описание подключения считывателя к Shelter 2

Модель считывателя : Z-2 USB

Подключен по USB
Тип карты Mifare
Необходимо скачать и установить программу
PuTTY (предварительно необходимо установить драйвера для считывателя с оф.сайта производителя)
После запуска программы перейти во вкладку Serial и указать COM-порт и скорость : 

После нажатия Open откроется окно, необходимо приложить карту к считывателю, должна появиться такая строка (пример) :

Трек, который мы будем декодировать : B2C124CB
Для декодирования необходимо скачать и разархивировать утилиту 
TcpCardReader 
из базовой поставки ПО Абонемент (версия на момент написания манула 1.26.0.2). Далее необходимо настроить TcpCardReader.ini, в моем случае настройки выглядят так :

[application]
AutoStart = 1                                                                             
;Автоматически стартовать программу после запуска
AutoHide = 1                                                                             
;Сворачивать программу после запуска
[setup]
COMPORTCOUNT=1                                                               
;Количество подключений к СОМ портам.
[TCP]
PORT=7760
IP=0.0.0.0                                                                                 
;TCP порт и адрес сетевого интерфейса, к которому будет производиться подключение клиентов
[READER1]
COMPORT=7
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1     
;Настройки первого подключения к сом порту. Номер и параметры СОМ порта.
Prefix=;                                                                                     
;Строка, которая передаётся клиентам перед первым прочтенным символом. В данном примере добавится символ: «точка с запятой»
Postfix=?                                                                                   
;Строка, которая передаётся клиентам после последнего прочтенного символа. В данном примере добавится символ: «Вопросительный знак»
useDecodeCards=1                                                                 
;0 - не использовать декодирование decodecards.dll,  1 - использовать декодирование  decodecards.dll
StartTermChars=M                                                                     
;Используется, если useDecodeCards=1 Признак начала трека для декодирования
FinishTermChars=?#13;#10;#0;                                               
;Используется, если useDecodeCards=1 Признак конца трека для декодирования
[LOG]
level=30
debuglevel=30 
showlog=1                                                                         
;Уровни логирования. Используются значения от 0 до 30
[TCPCARDREADER]
Prefix=;                                                                                     
;Строка, которая передаётся клиентам перед первым прочтенным символом. В данном примере «точка с запятой»  появится перед треком карты (что служит указателем начала для decodecards.dll)
Postfix=?                                                                                 
;Строка, которая передаётся клиентам после последнего прочтенного символа. В данном примере  «Вопросительный знак» появится после трека карты (что служит указателем конца для decodecards.dll)
 
Далее необходимо открыть decodecards.ini. В секции [mask] добавить следующий параметр : card_mif = ifare*
После чего добавляем секцию :
 
 
[cards.card_mif ]
excludedprefix=ifare[
CardDecodeType=MASK
mask=hhhhhhhh
code=2
bitmask=$FFFFFFFF

 

Сохраняем файл и запускаем TcpCardReader.exe от имени администратора. В окне с программой проверить наличие информации, что утилита заняла COM-порт : 
 
IdTCPServer1.Active := true
Занят COM7 hComPort=820 ComModeStr=baud=9600 data=8 parity=N stop=1
После чего можно прикладывать карту, в окне с программой мы должны увидеть уже обработанный трек-номер :
 

 

 

2999002315 - искомый трек.

Следующим шагом будет настройка считывания карты в Shelter 2. Необходимо запустить Shelter и перейти в настройки :

Ввести пароль для входа в настройки (ucs-shelter) и перейти в системные настройки. Необходимая секция для настроек :

 

Тип считывателя 4

;TCP/IP

Порт считывателя 7760

;Значение из TcpCardReader.ini

StartChar ;

 

StopChar ?

 

IP 127.0.0.1

;IP адрес ПК, где запущен TcpCardReader

 

Далее необходимо перейти в настройки декодирования карты :

 

В появившемся окне нажать кнопку "Добавить" и настроить по аналогии со скриншотом :

После чего необходимо нажать "Сохранить", в каталоге с Shelter появится файл cards.ini
Если в карточке поселения считать эту карту, то в логе увидим следующую запись : 

11768 293172/256964 KB     18.04.2018 14:27:34.341         ;2999002315?
11768 293172/256964 KB     18.04.2018 14:27:34.341         Check Mask "*"
11768 293172/256964 KB     18.04.2018 14:27:34.341         Mask "*" ok
11768 293172/256964 KB     18.04.2018 14:27:34.341         Exclude Prefix ";" (2999002315?)
11768 293172/256964 KB     18.04.2018 14:27:34.341         Exclude Postfix "?" (2999002315)
11768 293172/256964 KB     18.04.2018 14:27:34.341         CardDecodeType ""
11768 293172/256964 KB     18.04.2018 14:27:34.341         AIdent 2999002315
11768 293172/256964 KB     18.04.2018 14:27:34.341         ATypeIdent 2

В логе видно, что трек обработался корректно.

 

Тип карты Mifare 

После считывания карты в PuTTY :

Настройки для TcpCardReader.ini :

[application]
AutoStart = 1
AutoHide = 0
[TCP]
PORT=7760
IP=0.0.0.0
[READER1]
COMPORT=7
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1
;Параметр Prefix задаёт строку, которая передаётся клиентам перед первым прочтенным символом
Prefix=;
;Параметр Postfix задаёт строку, которая передаётся клиентам после последнего прочтенного символа
Postfix=?
;Использовать decodecards.dll
useDecodeCards=1
StartTermChars=i
FinishTermChars=?#13;#10;#0;
;Файл логирования треков
TrackLogFile=
ConvertTrackLog=0
IncludeTypeStartTermChar=0
IncludeStartTermChar=0
NeedCheckAndReopenCom=1

В decodecards.ini В секции [mask] добавить следующий параметр : card_em = ne* и добавляем следующую секцию : 

[cards.card_em]
ExcludedPrefix=ne[
code=2
CardDecodeType = MASK
mask=****dddddddd
DecodeTypeEx = 0

Запускаем TcpCardReader.exe и прикладывем карту. Результат считывания карты :
 

Далее настраиваем подключения к Shelter, как было описано ранее. После считывания карты в логе Shelter увидим следующую запись :

9480  285512/247024 KB     18.04.2018 16:23:36.326         ;18036625?
9480  285512/247024 KB     18.04.2018 16:23:36.326         Check Mask "*"
9480  285516/247024 KB     18.04.2018 16:23:36.326         Mask "*" ok
9480  285516/247024 KB     18.04.2018 16:23:36.327         Exclude Prefix ";" (18036625?)
9480  285516/247024 KB     18.04.2018 16:23:36.327         Exclude Postfix "?" (18036625)
9480  285516/247024 KB     18.04.2018 16:23:36.327         CardDecodeType ""
9480  285516/247024 KB     18.04.2018 16:23:36.327         AIdent 18036625
9480  285516/247024 KB     18.04.2018 16:23:36.327         ATypeIdent 2

 

Настройки DECODECARDS.INI

               БЕЗ ИСПОЛЬЗОВАНИЯ USEMASK (USEMASK=0) - ПО УМОЛЧАНИЮ.

               СТАРЫЙ, НЕ РЕКОМЕНДУЕТСЯ К ИСПОЛЬЗОВАНИЮ.

                         [cards]

                         ;В этой секции прописываются префиксы для карт. Типы карты определяется прификсом.

               Существуют 4 типа карт: CardPrefix, RegularCardPrefix, StaffCardPrefix, PDSCardPrefix.  НЕ ДОЛЖНЫ СОВПАДАТЬ МЕЖДУ СОБОЙ!!!

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

               Пример:

                            CardPrefix   =
                            ; CardPrefix   =770a87121234a
                            ; CardPrefix   =770A199999999A
                            ; CardPrefix   =750

               RegularCardPrefix - постоянная карта клиента. RegularCardPrefix не может быть пустым.

               Пример:

                            RegularCardPrefix=10
                            ;RegularCardPrefix=йцукен - Если не используется

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

               Пример:

                            ; StaffCardPrefix        =  770=00260001=
                              StaffCardPrefix        =  778=87121234=
                              StaffCardPrefix        = 778=201050001
                            ; StaffCardPrefix =фывапр - Если не используется

               PDSCardPrefix -карта ПДС. PDSCardPrefix не может быть пустым. Если не используется, то следует написать , например

                            PDSCardPrefix   = 811876
                            ; PDSCardPrefix =ячсмит - Если не используется

               FirstSignEquallyAsLetterA = 0 - Интерпретировать первый встретившийся символ "=" в треке как символ "A". Используется FirstSignEquallyAsLetterA = 1 для совместного использования GKHOST и инфотерминалов TimeKeeper.

                         [cards.Card]

                              CardDecodeType - алгоритм извлечения истинного номера карты
                              ANGSTREMCARD- для карт E-Marine со считывателем СРЧ-125
                              ANGSTREMBRASLET- для карт E-Marine со считывателем СРЧ-2M
                              LAST8 - последние 8 цифр
                              LAST9 - последние 9 цифр
                              MASK - накладывается маска. Исползуется параметры mask и bitmask

               Например,

                                    mask=**hh* - взять 3-й и 4-й символ как цифры в 16-м формате
                                    mask=**dd* - взять 3-й и 4-й символ как цифры в 10-м формате
                                    bitmask=$00FFFFFF - и применить к ним битовую маску
                                    MaskType= - (пусто-по умолчанию)
                                    MaskType=ARRAYOFBYTES - то анализируется параметр mask. Значения должны быть типа "с".

               Например, mask = *cccc*
             Это значит, что при декодировании из трека возьмём 2-5 символы, представим каждый символ в 16-ричном формате. Объединим 16-ричные представления символов и применим к ним маску bitmask.
               Пример. Со считывателя пришёл трек "Пупкин". Если mask =*cccc*, то для обработки берём часть "упки".
               Представляем в 16-ричном виде
                              у - F3
                              п - EF
                              к - EA
                              и - E8
               Объединяем. Получаем F3EFEAE8 . Накладываем маску  bitmask=$7FFFFFFF -> Получили  73EFEAE8 - в 16-ричном формате или 1945103080 - в 10-тичном формате
               code=2 - идентификатор карты в базе. ПАРАМЕТРЫ CODE ДЛЯ ВСЕХ ТИПОВ КАРТ ДОЛЖНЫ БЫТЬ РАЗЛИЧНЫМИ.

 

                          [cards.RegularCard]

                         Аналогично [cards.Card]

                         [cards.StaffCard]

                         Аналогично [cards.Card]

                         [cards.PDSCard]

                         Аналогично [cards.Card]

             

               ИСПОЛЬЗОВАНИЕ USEMASK=1

              Добавлена секция [mask]. В ней настраиваются маски карт в формате - ИМЯ МАСКИ=МАСКА

              Добввлена секция [general] с параметром

                         usemask=0 – не использовать секцию MASK (по умолчанию)

                         usemask=1 – использовать секцию MASK

              Если usemask=1, то

                      1. Секция [cards] игнорируется;

                      2. При декодировании проверяется, какой маске соответствует считанный трек.

              После этого происходит обращение к секции [cards.ИМЯ МАСКИ] Извлекается параметр  CardDecodeType и  ExcludedPrefix - отделяемый от трека префикс, применяется алгоритм декодирования и возвращается номер карты.

                            Пример 1.

              Трек равен 778=12345678=1234567 . Он удовлетворяет маске card2.

              Отрезаем от трека ExcludedPrefix. Получили 1234567.

              К этому числу не применяем никакой алгоритм декодирования, так как CardDecodeType не заполнен. В результате получаем 1234567 - истинный номер карты.

                            Пример 2.

              Трек равен 05987654321 . Он удовлетворяет маске card. Отрезаем от трека ExcludedPrefix.

              Получили 987654321. К этому числу  применяем алгоритм декодирования MASK. Согласно алгоритму декодирования берем 5 первых символов в 10-чном формате. В результате получаем 98765 - истинный номер карты.

                            [general]
                                usemask=1
                            [mask]
                                card = 05*
                                card2= 778=12345678=*
                            [cards.Card2]
                                ExcludedPrefix=778=12345678=
                                code=2
                            [cards.Card]
                                ExcludedPrefix=05
                                code=2
                                CardDecodeType = MASK
                                mask=ddddd
                                bitmask=$FFFFFFFF

 

           Далее будут рассмотренны примеру декодирования разных карт на разных прошивках и разных считывателей.

IRON LOGIC Z-2

       Все прошивки взяты с официального сайта производителя IronLogic https://ironlogic.ru

              ПРИМЕР 1. Заводская прошивка для Z-2 USB. Версия: 230. Карта ISBC MIFARE Classic 1K

              В putty  возвращается трэк:

                            Mifare[23D9C4C5] 196,55587 1K (0004,08)
                            No card

             Если необходимо получить искомое значение 19655587, то в TcpCardReader.ini указать:

                            Prefix=;
                            Postfix=?
                            useDecodeCards=1
                            StartTermChars=]
                            FinishTermChars=

             А в decodecards.ini:

                            [general]
                            usemask=1
                            TrackResultLog=
                            [mask]
                            card_mif=*
                            [cards.card_mif]
                            excludedprefix=
                            CardDecodeType=MASK
                            mask=dddddddd
                            code=2
                            bitmask=$FFFFFFFF

             В результате в TcpCardReader будет следующий результат:

             Если необходимо получить искомое значение 601474245, что соответствует 23D9C4C5, то в TcpCardReader.ini указать:

                           
                            Prefix=;
                            Postfix=?
                            useDecodeCards=1
                            StartTermChars=[
                            FinishTermChars=]
                           

             А в decodecards.ini:

                            [general]
                            usemask=1
                            TrackResultLog=
                            [mask]
                            card_mif=*
                            [cards.card_mif]
                            excludedprefix=
                            CardDecodeType=MASK
                            mask=hhhhhhhh
                            code=2
                            bitmask=$FFFFFFFF

             В результате в TcpCardReader будет следующий результат:

 

             ПРИМЕР 2. Прошивка для Z-2 USB. Читает только карты 13,56 МГц: Mifare. Прошивка актуальна для карт двойного стандарта (в один и тот же пластик вплавляют EM-Marine и Mifare), позволяет читать мультиформатному считывателю только один формат карт. Карта ISBC MIFARE Classic 1K.

             В putty  возвращается трэк:

             Mifare[23D9C4C5] 217,50373 1K (0004,08)

             No card

             Настраивается по аналогии, как и в пример 1.

 

             ПРИМЕР 3. Прошивка для Z-2 USB. Вывод в COM-порт код карты  в формате, аналогичном Z-2 USB MF (для карт mifare). Версия: 240. Карта ISBC MIFARE Classic 1K.

             В putty  возвращается трэк:

                          Mifare[23D9C4C5] 1K (0004,08) 196,55587
                         No card

             Если необходимо получить искомое значение 19655587, то в TcpCardReader.ini указать:

                          Prefix=;
                          Postfix=?
                          useDecodeCards=1
                          StartTermChars=]
                          FinishTermChars=

             А в decodecards.ini:

                          [general]
                          usemask=1
                          TrackResultLog=
                          [mask]
                          card_mif=*
                          [cards.card_mif]
                          excludedprefix=
                          CardDecodeType=LAST8
                          code=2

             В результате в TcpCardReader будет следующий результат:

             Если необходимо получить искомое значение 601474245, что соответствует 23D9C4C5, то в TcpCardReader.ini указать:

                         
                          Prefix=;
                          Postfix=?
                          useDecodeCards=1
                          StartTermChars=[
                          FinishTermChars=]
                         

             А в decodecards.ini:

                          [general]
                          usemask=1
                          TrackResultLog=
                          [mask]
                          card_mif=*
                          [cards.card_mif]
                          excludedprefix=
                          CardDecodeType=MASK
                          mask=hhhhhhhh
                          code=2
                          bitmask=$FFFFFFFF

             В результате в TcpCardReader будет следующий результат:

 

             ПРИМЕР 4. Прошивка для Z-2 USB. Вывод номера карты в формате W24(8цифр), без запятой между ними, без подавления первых нулей, без NoCard, перевод строки есть. (Десятиричный формат без nocard). Версия: 10.51.54.8. Карта ISBC MIFARE Classic 1K.

             В putty  возвращается трэк:

                          21750373

             В TcpCardReader.ini не используем декодирование:

                         
                          Prefix=;
                          Postfix=?
                          useDecodeCards=0
                          StartTermChars=
                          FinishTermChars=
                         

             В результате в TcpCardReader и shelter будет следующий результат:

 

             ПРИМЕР 5. Для карт ISBC MIFARE Ultralight EV1 (7-байтный UID) настраивается по аналогии с рассмотренными примерами, за исключением следующих моментов:

                 В putty  возвращается трэк:

                          Mifare[04DE4CDAA34084] UL (0144,00) 218,19678
                         No card

        Если необходимо получить искомое значение 1370321573855364, что соответствует 04DE4CDAA34084, то  TcpCardReader.ini и decodecards.ini настраивается по аналогии с рассмотренными примерами, но (ВАЖНО!!!) данное число  (1370321573855364) не входит в диапазон integer и при прикреплении идентификатора будет возвращаться ошибка.

              Чтобы ошибки не было необходимо получать искомое значение 21819678, либо настраивать decodecards.ini следующим образом:

                            [general]
                            usemask=1
                            TrackResultLog=
                            [mask]
                            card_mif=*
                            [cards.card_mif]
                            excludedprefix=
                            CardDecodeType=MASK
                            mask=*hhhhhhh*****
                            code=2
                            bitmask=$FFFFFFFF

             В результате в TcpCardReader и shelter будет следующий результат:

 

           Для считывателя Matrix-III RD-ALL настраивается аналогично, т.к возвращаемые трэки будут одинаковые.

                    

 

Подключение HID-устройства (считывателя) с использованием утилиты TcpCardReader

        Начиная с версии 1.27.0.1 утилиты TcpCardReader добавлена поддержка HID-устройств.
           Поставка включает в себя следующий набор файлов:
                   KeyScan.dll    
                   KeyScan.ini
           Содержание файла KeyScan.ini:
                   [buffer]
                   ; минимальное количество символов в коде, полученном от сканера
                   MinBufferSize=6
                   ; Таймаут в миллисекундах между символами, приходящими со сканера
                   CharInterval=50

       Для использования подключенного HID-устройства (В нашем случае использовался сканер штрих-кодов) необходимо в секции [READER] файла конфигурации tcpcardreader.ini прописать isKBReader=1.
       После запуска TcpCardReader в области считывания должна появится надпись «Занят KBReader», что свидетельствует о подключении библиотеки KeyScan.dll, которая взаимодействует с HID устройством.

       При считывании штрих-кода TcpCardReader  получит трэк 46204837.

    После получения трэка в TcpCardReader его можно обработать выше перечисленными способами.

 

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

 

Удаление логов из БД "Shelter"

Удаление логов из базы данных

       При длительном использовании ПО Shelter увеличивается размер БД, т.к. действия пользователей логируются и записываются в таблицы LOG$FIELDS и LOG$TABLES.

      Для удаления логов из БД, сначала необходимо выполнить диагностику базы. Подключится к БД и запустить диагностику можно с помощью программы IBExpert (Рис. 1).

Рис. 1

      После выполнения диагностики результаты можно посмотреть на вкладке «Tables» поля «Size» для таблиц LOG$FIELDS и LOG$TABLES (Рис. 2).

Рис. 2

      Для удаления всех логов необходимо выполнить следующие скрипты:

                   1.       Удаление логирования из таблицы LOG$FIELDS

                   delete from log$fields;

                   commit;

                   2.       Удаление логирования из таблицы LOG$TABLES

                   delete from log$tables;

                           commit;

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

           delete from LOG$TABLES LT where LT.DATE_TIME < d2dbl('now') - 30;

           delete from LOG$FIELDS LF where not LF.LOG_TABLES_ID in (select LT.ID from LOG$TABLES LT where LT.ID = LF.LOG_TABLES_ID);

           commit;

      После выполнения данного скрипта, в БД останутся логи за 30 дней, остальные будут удалены.

      Для уменьшения размера БД необходимо сделать backup / restore.

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

      Содержание .bat файла:

                   @rem Указать путь до isql.exe

                   @echo off

                   set isql="C:\Program Files (x86)\Shelter\Firebird\bin\isql.exe" 

                   set sqlPath=%~dp0

                   set sqlFile=%sqlPath%script.sql

                   %isql% -input %sqlFile%

Содержание script.sql:

                                    CONNECT 'localhost/3080:C:\_BASE\SHELTER.FDB' user 'ucs' PASSWORD 'ucs';

                   delete from LOG$TABLES LT where LT.DATE_TIME < d2dbl('now') - 30;

                   delete from LOG$FIELDS LF where not LF.LOG_TABLES_ID in (select LT.ID from LOG$TABLES LT where LT.ID = LF.LOG_TABLES_ID);

                   commit;