Новое решение для автоматизации Вашего бизнеса
+7 (499) 703-42-61
Москва, ул. Большая Почтовая, д.18, стр.6

Установка и настройка ПО Abonement

Установка серверной части

Установка серверной части

Установка серверной части

 

папка с дитрибутивом называется FullVersionVerXXX, где XXX номер версии. На данный момент актуальная версия 145.

1. Создайте папку C:\_UCS. Диск С: указан для примера, можно использовать любой.

2. Создайте папку _UCS\FITNESS скопируйте в неё папки LIB, Licence, skins из папки \fullVersionver…

3. Папку LIB (например, C:\_UCS\FITNESS\LIB) нужно добавить в системную переменную переменную PATH - см. пункт 7.

4. Создайте папку IBDATA в папке FITNESS и из \fullVersionver...\Empty скопируйте в неё fitness.fbk (backup пустой базы) и файл ibsh.errors.ru.

5. Из папки \fullVersionver…\Server\INI.SERVER скопируйте файл shelter.IB.ini в системный каталог (папка C:\Windows\), предварительно настроив его (может не быть прав на изменение файла в системной папке). Параметры настройки файла:

[General]
Messages = "C:\FITNESS\IBDATA\ibsh.errors.ru"       ;путь до файла ibsh.errors.ru
skins    = "C:\FITNESS\skins\skins.ini"             ;путь до файла skins.ini

Установка Firebird 2.5

!!!ВНИМАНИЕ!!! Для исключения возможности необоснованного роста базы данных и других неисправностей связанных с работой СУБД, необходимо использовать дистрибутив Firebird 2.5.3 из дистрибутива ПО "Абонемент" ( \fullVersionver...\FireBird_2_5\)

6. Скопируйте содержимое папки \fullVersionver...\FireBird_2_5 в C:\Program Files (x86)\FireBird\FireBird_2_5

7. Папку C:\Program Files (x86)\FireBird\FireBird_2_5\UDF\ добавить в системную переменную PATH. Для этого необходимо:

Зайти в свойства компьютера → Дополнительные параметры системы → Переменные среды → в списке переменных найти «Path» и к ее значению в начале дописать путь до папки (см. Рис. 1)

image-1634547824197.png

Рис. 1 - Добавление в переменную Path путей до папок

8. В файле C:\Program Files (x86)\FireBird\FireBird_2_5\Firebird.conf найти параметр RemoteServicePort и указать для него значение 3080

9. Установить службу с помощью bat-файла C:\Program Files (x86)\FireBird\FireBird_2_5\bin\install_classic.bat  (выполнять от имени администратора).

10. Проверить, запущена ли служба FireBird. Если нет — запустить её вручную через "Службы" Windows.

11. Добавить пользователя UCS, запустив bat-файл C:\Program Files (x86)\FireBird\FireBird_2_5\bin\addUserUCS.bat

12. Если на машине используется только одна версия Firebird, файл fbclient.dll нужно копировать, копию переименовать в gds32.dll и поместить в папку C:\Windows\System32\

Если версий Firebird несколько, необходимо разместить файл gds32.dll, взятый из необходимой версии Firebird, под .exe-файлами тех программ, которые в своей работе обращаются к БД (например, в папке Abonementmanager данный файл уже имеется изначально).

13. В первый раз программы нужно запустить от имени администратора, иначе необходимо вручную зарегистрировать midas.dll из папки \LIB\ и frDlgDef.dll в папке \Reports\dll\ с помощью следующей команды (прописать в консоли windows, запущенной от имени администратора):

regsvr32 C:\_UCS\FITNESS\LIB\midas.dll
regsvr32 С:\_UCS\FITNESS\REPORTS\DLL\frDlgDef.dll 

 

Установка серверной части

Приложение 1 - Настройка bat-файлов.

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

 1 _backup_2_5.bat - создание копии базы (.fdb -> .fbk)

set EXE_gbak="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\gbak.exe"  ;путь до файла gbak.exe в папке, куда устанавливался FireBird
set EXE_rar="D:\_2_Base\_FB25\Rar.exe"                                    ;путь до файла запуска архиватора winRar

set FDB="127.0.0.1/3080:D:\_2_Base\_FB25\fitness.FDB"                     ;путь до рабочей базы
set FBK="D:\_2_Base\_FB25\autobackup\fitness.FBK"                         ;путь до файла, в который будет делаться бэкап (все папки должны быть уже созданы)
set RAR="D:\_2_Base\_FB25\autobackup\FITNESS.RAR"                         ;путь до файла с архивом бэкапа (все папки должны быть уже созданы)

if exist %FBK% del %FBK%                                                  ;удаляем предыдущий бэкап, если он имеется
%EXE_gbak%  -user "ucs" -password "ucs"   -b  %FDB% %FBK%                 ;делаем бэкап
%EXE_rar%   a -ep -ag %RAR%  %FBK%                                        ;создаём архив

 2 _restore_2_5.bat - Восстановление базы из бэкапа (.fbk -> .fdb)

Обратите внимание, что при использовании файла _restore.bat он не перезаписывает конечный файл с БД, а дополняет его, поэтому перед использованием запуском данного bat-файла нужно переименовать, переместить (рекомендуется внутри папки IBDATA создать папку OLD, куда и помещать предыдущие восстановленные из бэкапа базы), либо удалить уже имеющуюся БД с таким именем. 

set EXE_gbak="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\gbak.exe"
set EXE_rar="D:\_2_Base\_FB25\Rar.exe"

set FDB="127.0.0.1/3080:D:\_2_Base\_FB25\FITNESS_TEST.FDB"
set FBK="D:\_2_Base\_FB25\autobackup\FITNESS.FBK"

set resout=resultrestore.txt
set charset=win1251

if exist %resout% del %resout%
%EXE_gbak% -c -k -p 8192 %FBK% %FDB% -user ucs -password ucs -v -y %resout%

3 _backup_2_5_EX.bat - создание архива базы в случае её повреждения.

Стоит отдельно обозначить данный вариант создания архива БД, так как он будет работать в том случае, если невозможно сделать бекап поврежденной БД обычным методом (_backup.bat)

set EXE_Gbak="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\gbak.exe"
set EXE_Rar="c:\Program Files\WinRAR\Rar.exe"

set server=127.0.0.1/3080
set FDB_Dir=D:\FITNESS\_IBDATA
set FDB_Name=FITNESS

set FBK_Dir=%FDB_Dir%\autobackup
set FDB_Path=%FDB_Dir%\%FDB_Name%.FDB
set FDB="%server%:%FDB_Path%"
set FBK="%FBK_Dir%\%FDB_Name%.FBK"
set FBK_RAR="%FBK_Dir%\%FDB_Name%.RAR"
set FDB_ER="%FBK_Dir%\%FDB_Name%_ERROR.FDB"
set FDB_ER_RAR="%FBK_Dir%\%FDB_Name%_ERROR.RAR"

if exist %FBK% del %FBK%
%EXE_Gbak% -user "ucs" -password "ucs"  -b  %FDB% %FBK%
%EXE_Rar% a -ep -ag %FBK_RAR%  %FBK%

if exist %FDB_ER% del %FDB_ER% 
if not exist %FBK%  copy %FDB_Path% %FDB_ER% 
if exist %FDB_ER%  %EXE_Rar% a -ep -ag %FDB_ER_RAR% %FDB_ER%

4  restore_1_5_to_2_5.bat - используется для миграции с FireBird 1.5 на Firebird B 2.5

set backup=" C:\fitness\IBDATA\Empty\fitness.FBK"	             
set dbname="127.0.0.1/3080:C:\fitness\ IBDATA \fitness.FDB" 
set resout=resultrestore.txt
if exist %resout% del %resout%
"C:\Program Files\Firebird\FireBird_2_5\bin\gbak.exe" -c -k -p 8192 %backup% %dbname% -FIX_FSS_DATA win1251 -FIX_FSS_METADATA win1251 -user ucs -password ucs -v -y %resout%

;set backup – локальный путь к файлу fitness.FBK – backup базы;
;set dbname – путь до новой базы, начиная с IP-адреса (имени) сервера, если используем Firebird 2.5 не забываем указывать порт .

 

 

Установка серверной части

Приложение 2 - Выполнение SQL-скриптов.

IBExpert. Регистрация базы.

    Рассмотрим выполнение скриптов в программе IBExpert. Вход в  программу осуществляется путем запуска файла \fullVersionver…\OS\IBEXPERT\IBExpert.exe - следует скопировать его в папку "_UCS\UTILS\" для будущего использования клиентом.

1. Зарегистрировать базу (если она ещё не зарегистрирована). Для этого необходимо: нажать кнопку  Register Database (в разделе Database), ввести необходимые параметры подключения (см. рис.1) (Remote - IP-адрес машины, 127.0.0.1 - для локальной машины, используемый порт - 3080), выбрать  кодировку Win1251, установить логин UCS и пароль ucs для базы, выбрать версию Firebird (для всех актуальных установок используется версия 2.5). Указать путь до файла gds32.dll, который по умолчанию находится в папке с установленной версией Firebird в каталоге bin. Рекомендуется для Alias'а (отображаемого названия) использовать WORK - для рабочей базы и TEST - для тестовой.

    

(Рис.1 - Заполненные регистрационные данные базы)

2. Создать подключение к ещё одной базе можно простым методом - Клонировать Регистрационные Данные (Clone Registration Info) - нажав правой кнопкой на БД в списке Database Explorer (см. рис. 2 - пункт 1). Подключиться к базе данных, дважды кликнув по ней в списке либо выбрав соответствующий пункт из выпадающего меню (см. рис. 2 - пункт 2).

(Рис.2 - Клонирование данных базы и Подключение)

Выполнение скрипта.

3. Зайти в меню  Tools\Script Executive (Ctrl+F12), открыть  sql файл, содержащий нужный скрипт, установить галочку (checkbox) "Use current connect" (данная функция будет активна, если выполнено хотя бы одно подключение).

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

CONNECT '127.0.0.1/3080:c:\FITNESS\IBDATA\FITNESS.FDB' USER 'UCS' PASSWORD 'ucs';

4. Нажать кнопку  Run Script (F9). Скрипт должен выполнится без ошибок. Выполните его на рабочей (пустой) и на тестовой базе.

5. При обновлении базы данных программы abonementmanager, скрипты выполняются в возрастающем порядке (например, при переходе со 117 на 119 версию - сперва выполнить скрипт 118, а потом 119). Перед любыми обновлениями необходимо всё проверить на копии базы. Копия базы делается только через bat-файлы backup/restore.

6. После обновления, необходимо сделать backup-restore базы. 

 

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

*по аналогии, выполняется любой другой скрипт

 
Рис.3. Заходим в программу IBExpert (FullVersionVer129/OS/IBEXPERT/ibexpert.exe), нажимаем на кнопку "Register database".
 
 
Рис.4. Прописываем путь к БД "Абонемент" (см. Регистрация базы).
 

Рис.5. Нажимаем кнопку "Connect ot Database" (1) затем нажимаем кнопку"Script Executive" (2).

Рис.6. В открывшемся окне ставим галку "Use current connect", далее нажимаем "Script"->"Run from file..."  и в открывшемся окне выбираем наш скрипт (например: Translate_DB_to_English.sql) и нажимаем кнопку "Открыть".

Рис.7. Выполнится скрипт, после чего появится информационное сообщение о его успешном выполнении.

После выполнения перечисленных выше действий - закрываем IBExpert.

Установка серверной части

Приложение 3 - Управление лицензиями.

_____ описание в разработке____

Работа с ключом защиты ПО Абонемент.

После того, как установлены драйвера для ключа, и ключ вставлен в ПК, запустите файл licence.exe из Абонемент Fullversion\__SERVER\Licence\ или скачайте его по этой ссылке.
Если всё в порядке, после нажатия кнопки «Получить код сессии» в поле «Код сессии» появится набор символов, по 4, разделенных «-». (см. Рис. 3)
Если код сессии не появился, перед вами пустой не форматированный ключ. Нажмите кнопку Форматирование ключа. Внимание! Убедитесь что в данном компьютере установлен только этот ключ.
Для добавления лицензии: запустить licence.exe, получить "код сессии", сообщить его в московский офис КБЦП Спектр (вместе с информацией о требуемой лицензии) на почтовый ящик licenсe@shelter.ru и zakaz@game-keeper.com
В московском офисе  сформируют "код лицензии" - его необходимо ввести в поле «Код для записи» (см. Рис.3).
 
Внимание! Глобусом, расположенным после ID ключа, не пользоваться! 
 

image-1673345820045.png

 
Рис.3 - Внешний вид окна Licence.exe
Установка серверной части

Приложение 4 - Отслеживание автоматического запуска приложений.

    Описание утилиты StarterA1.exe

Файлы программы лежат в папке \FullVersionVer...\UTILS

Данная программа отслеживает, запущено ли приложение, и запускает его при необходимости. Имеется возможность использовать следующие параметры запуска:
  •   Инсталлировать: StarterA1.exe /install - для инсталляции службы, создать ярлык и прописать в нём после пути к файлу "-install"
  •   Деинсталлировать: StarterA1.exe /uninstall
  •   Запустить службу: StarterA1.exe /start
  •   Остановить службу: StarterA1.exe /stop
Отслеживаются приложения, которые настраиваются в ini-файле, в секции [tasks.XXX] , где XXX - номер приложения от 0 до 100.
 [tasks.XXX]
   exename = C:\Projects\GKHC\GKHOSTCONNECT2\gkhostconnect.exe       ;Путь до исполняемого файла. Всегда следует использовать полный (абсолютный) путь. Именно этот файл служба ищет в процессах
   enabled=1                                                         ;0 - не отслеживать этот exe, 1 - отслеживать. По умолчанию enabled=0
   parameters=                                                       ;Параметры командной строки для запуска exe
   CommandLine=C:\Projects\GKHC\GKHOSTCONNECT2\gkhostconnect.exe dodo
   

Порядок работы службы

  1. Служба каждую секунду проверяет секции [tasks.XXX]
  2. Анализирует параметр enabled. Если enabled=1, то см.п.3
  3. Служба ищет в процессах процесс exename
  4. Если НЕ находит, то анализирует параметры CommandLine, exename и parameters.
  5. Если CommandLine НЕ пустой, то служба пытается запустить его. Если CommandLine пустой, то служба создаёт строку  exename + parameters и пытается запустить её.
    
Параметр DelayAfterStart в секции [tasks.XXX] - отвечает за задержку после успешного запуска (в миллисекундах). По умолчанию равен нулю.
[tasks.XXX]
  DelayAfterStart=3000

Примеры использования

Рекомендуется создавать отдельную копию утилиты для контроля запуска каждой необходимой программы. Для удобства, внутри ini-файла следует изменять имя и описание Службы. Например:

[Main]
DisplayName = UCS Служба StarterA1           ;Имя сервиса - отображается в графе "Имя" в "Службах"
ServiceName = StarterA1_1                    ;Внутреннее имя сервиса (одно слово. Только латинские символы и цифры. Начинается с буквы)
Description = UCS StarterA1 - ServerT1       ;Описание сервиса - отображается в графе "описание" в "службах"

Неполный список утилит, которым требуется контроль автоматического запуска:

  • ServerT1
  • TcpCardReader
  • gkhostconnect
Установка серверной части

Приложение 5 - Настройка автоматического резервного копирования.

 

_____under construction ____

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

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

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

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

Действие: запустить программу. Указываем путь до bat-файла _backup.bat, который находится в директории \FITNESS\IBDATA\ подробнее смПриложение 1. Настройка bat-файлов.

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

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

 

Вложение Размер
ucs_soglashenie_storon_o_rezervnom_kopirovanii.doc 628.5 КБ

Установка клиентской части

Установка клиентской части программы Abonement Manager

Действия производятся на компьютере, который будет являться рабочим местом. Обратите внимание, что количество рабочих мест ограничено количеством купленных лицензий. Машина, являющаяся сервером, одновременно может являться рабочим местом.
 
1. Создайте папку FITNESS и скопируйте в неё папки LIB, EXE , Report из  папки \fullVersionver…
2. В системную переменную PATH  добавьте путь до папки  LIB (например, C:\UCS\FITNESS\LIB). (см. Рис. 1)
3. Пропишите в файле abonementmanager.ini, находящийся в папке \FITNESS\EXE путь до используемой базы данных:
[database]
dbname = сервер/3080:C:\UCS\FITNESS\IBDATA\fitness.FDB                  
;где сервер – это имя или ip адрес компьютера, где установлена серверная часть, например 127.0.0.1/3080:C:\FITNESS\IBDATA\FITNESS.FDB
4. Укажите в файле  abonementmanager.ini путь до пк, где запущен сервер блокировок (ServerT1.exe) в секции [LOCK.SERVER]. Проверьте, что номер порта совпадает с указанным в файле LockServer.ini
[LOCK.SERVER]
  TCPHost = 127.0.0.1 
  TCPPort = 1111
5. Если используется считыватель карт (TcpCardReader), проверьте, что в файле abonementmanager.ini указано значение "1" в строке UseTCPCardReader=1.
В секции [HARDWARE.READER] Параметр "COMPORT" поставьте равным несуществующему порту, например, "99".
 
6.  В abonementmanager.ini в секции [Defaults] есть возможность настроить WEB-камеру (например, для получения изображений клиентов и сохранения их в карточке клиента):
 
usecamera=0 - использовать WEB-камеру. По умолчанию 0 - не использовать.
usecamera=1 - при открытии карточки клиента будет видно на экране изображение с камеры. Кнопка "Фотографировать" в карточке клиента сделает снимок с камеры и сохранит его как фотографию клиента.
DefaultCameraName=Eye 312  - Название WEB-камеры (из списка устройств Windows).
 
7. Проверьте наличие файла gds32.dll в папке \FITNESS\EXE (или С:\UCS\FITNESS\LIB\). Если файл отсутствует, скопируйте fbClient.dll из папки \fullVersionver…\FireBird_2_5\bin в одну из этих папок и переименуйте новый файл в gds32.dll.
 

8. В первый раз программы нужно запустить от имени администратора, иначе необходимо вручную зарегистрировать midas.dll из папки \LIB\ и frDlgDef.dll в папке \Reports\dll\ с помощью следующей команды (прописать в консоли windows, запущенной от имени администратора):

9. Создайте на рабочем столе ярлыки для Abonementmanager.exe и FReports.exe.

 

Перезагрузка сервера блокировок Abonement

Инструкция по проведению процедуры сброса сервера блокировок:

Сервер блокировок работает как служба.

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

image-1626781480626.png

  1. В открывшемся окне выбрать вкладку Службы (пункт 2 на рисунке ниже).
  2. Найти службу с именем: UCSServerT1Service
  3. Нажать правой кнопкой мыши на самой службе (пункт 3 на рисунке ниже).

   В выпадающем списке выбрать "Остановить",

  1. Нажать правой кнопкой мыши на самой службе (пункт 3 на рисунке ниже)

   В выпадающем списке выбрать "Запустить" (если служба не запуститься - то попробовать повторно Запустить).

image-1626781539618.png

Все подключения к базе обновятся принудительно.

Интеграции Abonement

Интеграции Abonement

Интеграция iiko и Абонемент / Shelter

Описание интеграции iiko и Абонемент / Shelter.

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

image-1628232502640.png

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

iiko при оплате на специальным платежом обращается к Connecter, который обращается к ShelterConnect.dll, которая работает с базой данных Абонемент/Shelter.

Используемые версии ПО:

  • Версия ПО Абонемент: 1.134
  • Версия Connecter: 1.64
  • Версия iiko: 5.5 

Лицензирование.

Команды для закрытия из iiko защищены ключом, необходимо иметь проект 2 модуль 12 в используемом ключе защиты. До момента доработки плагина от iiko - нужен проект 1 модуль 2.

Необходимые файлы в папке с Connecter.exe.

  • SCRK6530.dll
  • ShelterConnect.dll
  • ShelterConnect.ini

Используются те же файлы, что и при интеграции с RKeeper 7, приложены к статье (ShelterRK7.rar) и есть с сборке FullVersion Абонемент.

Настройки iiko.

Выполняются специалистами, устанавливающими iiko (https://ru.iiko.help/articles/#!special-iiko/ucsshelter)

Плагин от iiko: http://rapid.iiko.ru/plugins/Smart%20UCSShelter/V5/

Настройки Connecter.

  1. Выполнить стандартные настройки Connecter.
  2. Connecter Должен быть настроен на БД, в которую будет осуществляться закрытие.
  3. В секции [Charset] необходимо установить параметр UseUrlEncode=0.

Настроить секцию [HotelInterface]

[HotelInter face]

HotelInterFaceDllname=D:\connecter\SCRK6530.dll

enabled=1

FolioMask=0

Настройки ShelterConnect.

[Database]

dbname=%Путь до БД Абонемент/Shelter%

DBuser = UCS

DBpassword = oQKH8n0BFUE=

 

[ExternalClient]

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

IdentPhysType = 200 - Тип устройства: 2-магнитные карты, 200-замок,ключ

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

  ToOEM = 1

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

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

  ShowBalance = 1

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

ShowPermissibleSumAsBalance = 1

[log]

  FileName   = ShelterConnect.log

  Level      =  40   

  DebugLevel =  40

 

[GarbageCollector]

  Enabled  = 0

  LifeTime = 120

 

[SCRK6]

  UseDetails = 0

  AlcoholicOperation =999;

  Messages =SCRK6.eng.msg

  UseScreenHeader0 =0

  UseScreenHeader1 =0

  UseScreenSequelCode =0

  ShowBalance = 1

  ShowBalanceFirst = 1

  ShowBalanceEverywhere = 1

  UseSuperDetails = 1

  RoomInfoMode = 3

 

[PARAMS]

  NoAutoDiscount = 1

  Section =0

  UseSection =1

 

[TranslateOperation]

; ЧТО_ПРИХОДИТ_ИЗ_iiko=КОД_УСЛУГИ_В_АБОНЕМЕНТЕ

     1=301

 

[TranslatePayment]

  1111 = 70996,НАЛ

 

Реализованный функционал:

Кейс

Результат

Закрытие по номеру ФОЛИО

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

Закрытие на номер по номеру карты гостя

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

Закрытие по номеру карты поселения

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

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

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

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

После ввода номера в iiko отбражается соответствующая ошибка.

Закрытие на номер комнаты с несколькими проживающими

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

Закрытие с разными TRANSACTION_ID

В iiko есть возможность настроить передачу различных TRANSACTION_ID для начисления разных услуг на фолио, например "Бар" и "Кухня". Как настроить необходимо уточнять у специалистов iiko.

Отмена чека

При отмене чека создается соответствующая корректирующая транзакция на целевом фолио.

Закрытие на фолио с недостатком баланса

При попытке закрыть заказ iiko сообщает об ошибке

Закрытие со скидкой

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

Недочеты, которые будут устранены в ближайшее время: при нехватке средств на фолио, ошибка не отображается в читабельном виде, вместо нее отображается "SCRK6/6.0.1: Ok".

Просмотр внешнего чека (Shelter).

Для просмотра внешнего чека используется rk6check.fr3 (включена в базовую поставку Shelter актуальных версий).
Для корректного отображения содержимого чека iiko необходимо:
1. В ..\Firebird\udf\ скопировать shrk6udf.dll и shrk6udf.ini (эти файлы можно найти в базовой поставке FullVersion актуальных версий)
2. В shrk6udf.ini настроить так: 

[heap]

oemtochar=1

[CheckXML]

decodeType=0

3. Перезапустить службы FireBird, выполнить закрытие на номер, проверить результат.

Интеграции Abonement

Интеграция Абонемент и RK7 через Farcards

Интеграция RK7 с Абонементом представляет собой следующую структурную схему (рис.1) 

Рисунок 1

RKeeper при оплате на специальную валюту, например, "Закрытие на фолио Абонемента" в категории "платежные карты" обращается к FarCards, который вызывает подключенную к нему sdmHTTPFarCard.dll. Последняя dll обращается к ключу защиты и если лицензия найдена (проект 2 модуль 11), отправляется XML запрос на TCP/IP сервер - программу HTTPRKtoSH. Этот сервер обращается к базе данных через библиотеку ShelterConnect.dll

Интеграция проверялась на версии Абонемента 145+ с версией RK7 7.6.5.475. 

  • Версия FarCards 6.04
  • Версия HttpToSH 1.5.0.1
  • ShelterConnect 1.9.0.3
  • sdmHTTPFarCard.dll 1.17.0.5

Подготовка утилит

1.  FarCards 

FarCards устанавливается на любом компьютере в одной сети с кассой и кассовым сервером. Если модуль лицензии прописан в одном ключе с Абонементом, то FarCards обязательно устанавливается на машину, где установлен этот ключ, как правило это сервер, в противном случае необходимо в настройках будет указать ip/port в секции [LOCK.SERVER] машины, где установлен сервер блокировок. 

Настройка FARCARDS.INI 

[FarServer]
Type = 1
 DLL = sdmHTTPFarCard.dll
Gate = 1
log = 30
XMLCP=1251

[LinkDLL]
1 = pds_netk
 
[pds_netk]
NetServerName=rk_first
ininame=netk.ini
DebugMessages=1

NetServerName - серверное имя. Оно понадобиться в настройках PDS интерфейса RK7.

2.  sdmHTTPFarCard.dll
FarCards обращается к sdmHTTPFarCard.dll, которая должна находиться в папке с FarCards. sdmHTTPFarCard.dll защищена ключом защиты Shelter/Абонемент
Настройки осуществляются в файле HTTPFarCard.ini. Ниже приведен его пример.
[PARAMS]
  ClientCode = HOTEL
  UserCode = UCS
  UserPwd = 12345
  LangCode = RU

[SERVER]
  Port =2277
  Host =127.0.0.1

[LOCK.SERVER]
  TCPHost = 81.94.140.196
  TCPPort = 1116
  Project = 2
  Module = 11   

[LOG]
  FileName=HTTPFarCards_AB.log
  Level = 100
  DebugLevel = 100
В данных настройках sdmHTTPFarCard.dll обращается к TCP/IP серверу, который запущен локально на машине и слушает 2277 порт.
В секции [PARAMS] задаются параметры, которыми обворачивается XML запрос. В Настройках TCP/IP сервера, могут использоваться аналогичные параметры, например для определения «свой/чужой».
В секции [LOCK.SERVER] указывается ip/port машины, где установлен сервер блокировок Shelter/Абонемент. 
В файле HTTPFarCards_AB.log ведется логирование XML команд.
SdmHTTPFarCard.dll передает данные на TCP/IP сервер/ Для интеграции с Абонементом используется HTTPRKtoSH.exe
3. HTTPRKtoSH.exe
HTTPRKtoSH.exe является сервером, который слушает TCP/IP и обрабатывает XML запрос от sdmHTTPFarCard.dll.  HTTPRKtoSH.exe по умолчанию всегда вызывает функции ShelterConnect.dll, которая должна находить в одной директории с ним. Основные настройки осуществляются в файле HTTPRKtoSH.ini
[SERVER]
[SERVER]
  Port = 2277
  RKInterfaceID=7
  AllCheckToHotel = 1                                      
  IdentPhysType = 2
  Autostart = 1
  Autohide =1

[LOG]
  FileName =  C:\UCS\AbRK7_Example\HTTPtoAB\LOG\HTTPRKtoSH.log
  Level = 30
  DebugLevel =30
  ByMonthes = 1
  ByDays = 1
  ByHours = 1

[MAIN]
messages=errors.msg

Секция [SERVER] 

Port - порт, на который будут прилетать данные из sdmHTTPFarCard 

RKInterfaceID  - Код интерфейса в RK7

image-1636643932513.png

4. ShelterConnect.dll

ShelterConnect.ini настроечный файл ShelterConnect.dll, который управляет тем, в каком формате данные будут переданы во внешнюю систему.

[Database]
  DBname    = 81.94.140.196/3080:D:\Base\Garbage\n.kamyshnikova\Vpark2\FITNESS145.FDB
  DBUser     = ucs
  DBPassword = oQKH8n0BFUE=

[ExternalClient]
  ClientID      = 1
  IdentPhysType = 2
  ConvertOperationNeed = 1
  ToOEM = 0
  NeverRestrictTransaction = 1
  FolioMask = 1
  ShowBalance = 0
  ShowBalanceFirst = 0
  RoomInfoMode =4
  TransSection =0
  ConvertOperationType=1

[log]
  FileName   = ShelterConnect.log
  Level      =  100
  DebugLevel =  100

[GarbageCollector]
  Enabled  = 0
  LifeTime = 120

[SCRK6]
  AlcoholicOperation =999
  Messages =sc.msg
  UseScreenHeader0 =1
  UseScreenHeader1 =1
  UseScreenSequelCode =1
  ShowBalance = 1
  ShowBalanceFirst = 1
  ShowBalanceEverywhere = 1
  UseDetails = 1
  UseSuperDetails = 1
 
[TranslateOperation]
     1 = 888
     3 = 888

[TranslatePayment]
  1 = 1005,910
  1000632 = 1005,901
  8 = 1005,901
  3 = 1005,901
    
;[Abonement]
;AbonementIdentCheckResource =ID_RESOURCE

[params]
 Balance_ExtraParamStr = &USE_ABON_FREEBALANCE=1
  

Секция [DataBase] - параметры подключения к БД Абонемент

[ExternalClient]
ClientID = 1
IdentPhysType = 2 - тип физической карты в Абонементе 
ConvertOperationNeed = 1 - использовать секцию [TranslateOperation]
ToOEM = 0 - настройка кодировки 
NeverRestrictTransaction = 1 - ( разрешить закрывать на фолио выше кредитного лимита клиента) (баланс в RK будет отображаться, как 99999999999)  
FolioMask = 1 - разрешить поиск по фолио ( в рк при оплате на фолио вместо карты можем ввести F####  ( #### - номер фолио)) 
ShowBalance = 0 - отобразить баланс гостя 
ShowBalanceFirst = 0 - отобразить баланс гостя в начале 
RoomInfoMode =4 - 
TransSection =0
ConvertOperationType=1

Секция [SCRK6] не работает при данной схеме связки. Некоторые аналогичные параметры можно использовать в [ExternalClient]

[TranslateOperation]
;Таблица соответствия Кода групп станций r_k и создаваемой в Абонемент услуги.

Код можно посмотреть в RK7 

image-1636644913686.png

Код услуги в Абонементе. 

image-1636644989178.png

Настройки на стороне RK7 

Все настройки производятся в станции менеджера. 

1. Настройка кассовой станции и устройства (Сервис - Станции и устройства) 

Добавляем в устройства PDS интерфейс. 

image-1637145176907.png

Параметр PDS Server Name = rk_first – имя сервера FarCard, через который будет обеспечиваться связь с системой Абонемент.
Внимание!  LookupCardByMailAddr = YES
Mail Addr Type Kind = 2
Pass All Receipts XML = Yes, error on not found
Если параметр Pass All Receipts XML data установить Yes, if possible то при закрытии на любую валюту этот заказ будет передаваться в Абонемент. Для этого должны быть сделаны соответствующие настройки в ShelterConnect.ini и в настройках программы. Не рекомендуемая схема работы.
Если PDS interface#1 уже есть, то рекомендуется его удалить и добавить новый.
2. Настройка интерфейса (Сервис - Интерфейсы) 

Добавить новый интерфейс. Назовем его RKtoAbonement. См рис. 3 В данном интерфейсе указываем , ранее заведенный PDS interface#1. Код интерфейса нужно запомнить и прописать в файле HTTPRKtoSH.ini. См. настройки HTTPRKtoSH.exe.

Для передачи ППР позиций меню в Абонемент (с версии 136) и последующей печати их в чеке, необходимо в параметр интерфейса xml dish attributes установить как: 2560.ItemKind (Начиная с версии 7.6.5 необходимо поставить 2560.ItemKind.ItemIdent, иначе при передаче вместо значения ППР будет передаваться его GUID)!!!!

xml dish attributes = 2560.ItemKind.ItemIdent

image-1637145701448.png

Общая информация по полю XML dish attributes

Для того, чтобы определить из какого справочника запрашивается информация:
для этого:
1. Из строки вида 2560.ItemKind выделяем первое число - 2560
2. Нацело делим число на 256:
3. 2560 mod 256 = 10 - это идентификатор справочника, в данном случае - это MenuItems. (Идентификатор справочников можно посмотреть в таблице REFTABLES)
В полученном справочнике ищем поле ItemKind. Если поле не является ссылочным, то править ничего не нужно, должны выводиться данные из указанного поля.
Если поле ссылочное (можно определить по таблице REFLINKS по комбинации код таблицы+ название поля - если такая комбинация есть в таблице REFLINKS, то поле ссылочное, иначе - нет), то через точку можно получить значения полей из таблицы, на которую ссылается поле.
В рассмотренном примере поле ItemKind ссылается на таблицу с кодом 41 - это ENUMSTYPESDATAS.
Поля, которые можно получить из этой таблицы можно посмотреть xml запросом:

<?xml version="1.0" encoding="UTF-8"?>
<RK7Query>
<RK7CMD CMD="GetRefData" RefName="ENUMSTYPESDATAS" />
</RK7Query>

Если не задано выводимое поле, то выводится guidString (начиная с версии 7.6.5). Если нужно выводить какое-то другое поле, то его нужно указать через точку.
Например:
2560.ItemKind.ItemIdent

Подготовка XML для передачи в GetCardInfo или Transaction
Xml состоит из нескольких частей, формирующихся в разных модулях. Итоговый xml собирается конкатенацией строк отдельных тэгов в модуле MIDSERV\intfcash.pas->GetXMLText

CHECKDATALink to CHECKDATA
Тэг CHECKDATA со всем содержимым формируется в модуле MIDSERV\ReceiptXML.pas. В CHECKDATA попадают не удаленные строки с блюдами, оплатами/предоплатами и скидками заказа.
Информация делится на данные о блюдах (тэг CHECKLINES), кастомных свойствах заказа (тэг ORDER - в текущий момент закоментирован) и данных по актуальному чеку (все остальные тэги).
Блок может быть пустым: например при проверке баланса карты.

EXTINFO - INTERFACESLink to EXTINFO - INTERFACES
Тэг INTERFACES формируется в модуле MIDSERV\intfcash.pas. В этом тэге указывается карта, добавление которой вызвало операцию, и все карты, добавленные с использованием текущего интерфейса в заказ. При добавлении карты в заказ она не выводится в блоке всех карт, т.к. выполняется только проверка на ее добавление.

Настройки, влияющие на формирование xmlLink to Настройки, влияющие на формирование xml
Xml dish attributes
Формат заполнения:
[Код справочника].[Имя поля]
[Код справочника].[Название поля - ссылки на справочник].[Имя поля]
Можно указать сразу несколько значений, разделенных переносом каретки
где Код справочника - код справочника в Class Infos
Код справочника = RefNo*256+Num. Если Num не указан, то он считается нулевым
Например:
<Rec RefNo="10" Group="3" GUIDString="{E4D77859-5120-486E-A10D-EAB2650584BD}" ciNameOfClass="TRK7MenuItem" ciUserName="Menu Item" ciUserPlName="Menu Items" ciOptions="3" ciNamesUnique="1" ciParentPowCode="1">
10 * 256 + 0 = 2560 - TRK7MenuItem

При заполнении этого параметра в тэге CHECKDATA добавляется дочерний тэг ATTRS. В нем выводится:

type_id - гуид справочника (из ClassInfos)
type_name - Название справочника (из ClassInfos)
key_id - guid промежуточного справочника (из ClassInfos)
key_name - Название промежуточного справочника (из ClassInfos)
value - значение поля

Output mode of non-fiscal payment in xml
Этот параметр отвечает за формат вывода оплат валютами, которые должны печататься как скидки.
Если выбрано значение Write as discount, то такие оплаты будут выводиться, как скидки
Если выбрано значение Write as payment, то такие оплаты будут выводиться, как оплаты не смотря на настройки самой валюты
3. Настройка обработки сигналов. (Сервис - Обработка сигналов и устройств - MCR алгоритм 

image-1637147020912.png

Указываем тип «Интерфейс». Объект Интерфейс RKtoAbonement, заведенный в пункте 2.

Если указать тип «Валюта», то будет ошибка 232: "Не получается напечатать чек: Персональное ограничение для "" = 0.00."

Можно завести несколько интерфейсов для разных типов идентификаторов. Сделаем два интерфейса, один карт E-Marine  и другой для Mifare. Они будут отличаться только названием и содержимым скрипта.

Пример скрипта под E-marine

function MCR1000636(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
var RestCode: integer;
    i, j, t1, t2, S, res1: Integer;
    hex, resulttext: string;
begin
  Result := false;
  if pos('Em-Marine',Parameter)>0 then
  begin
    i := pos(']',Parameter);
    j := pos(',',Parameter);
    resulttext:=copy(Parameter,i+2,3);
    resulttext:=resulttext+copy(Parameter,j+1,5);
      Result := true;
      Parameter:=resulttext;
    end;
end;

Пример скрипта под Mifare 

function MCR1000637(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;
4. Настройка валюты (Деньги - валюты)

Заводим валюту в платежных картах. В названии НЕ используем кавычки "".

Так же можно установить наценку для чаевых и  чаевые будут передаваться в Абонемент и отдельно там фиксироваться  - НЕ ТЕСТИРОВАЛОСЬ.

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

image-1637147394821.png

5. Отображение кнопки оплата картой

Также для отображение кнопки оплаты в интерфейсе кассы необходимо будет настроить параметр оплата платежной картой, который находится в настройках менеджера. (Настройки - параметры - параметры работы станции - редактирование заказа - расчет/оплата заказа - оплата платежной картой, в свойствах поле "значение" установить "спрашивать" ) 

image-1637148196085.png

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

image-1637148506333.png

Проверка настройки оплаты

Открываем кассовую станцию, создаем заказ и начисляем блюдо. 

image-1637149024580.png

Нажимаем на оплатить. 

image-1637149061435.png

Выбираем платежные карты

image-1637149362401.png

Нажимаем на созданную валюту, в нашем случае Abonement

image-1637149386546.png

Вводим идентификатор или номер фолио (рис А. идентификатор, рис. Б фолио) 

image-1637149441791.png

Рисунок А.

image-1637149576875.png

Рисунок Б.

После ввода нажимаем на галочку и должны увидеть карточку клиента. 

image-1637149603718.png

В нашем случае клиент с фолио номер 1598 это IIKO Maylo Maskovich. В зависимости от настройки утилит можно увидеть его реальный баланс. В нашем случае стоит параметр в утилитах на безлимит. Нажимаем на "оплата картой". 

image-1637149750170.png

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

image-1637149869449.png

Проверить начисление мы можем, зайдя на фолио клиента в Абонементе.

image-1637149949357.png

На фолио должна появится услуга с указанным кодом в ShelterConnect.ini, которая заранее заведена в Абонементе. 

Очистка базы данных

Очистка базы данных

Очистка базы от издержек тестирования с сохранением настроек

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

Удалить всех клиентов, оплаты и кассовые смены, сохранив при этом все настройки абонементов, тарфов и пр., возможно.

Для этого нужно:

1. Запустить IBExpert, подключится к базе.

2. Запустить sqlEditor и выполнить следующий запрос:

select text from SPADM_CLEARUP_PREPARE('&CHECK_FIELDS_IN_WORKTABLES=1' ||'&CHECK_WORKTABLES=1' ||'&DELETE_STAFF=0' ||'&DELETE_USER=0');

3. Результатом выполнения запроса будет скрипт, который требуется выполнить в Script Executive. По окончании выполнения скрипта, база будет очищена в соответствии с указанными параметрами.

 

Примечание:

Если два первых параметра установлены в 1, то скрипт на выходе, очистит все действия из базы (оплаты, трансферы, посещения, клиенты), третий параметр отвечает за очистку списка специалистов, и четвёртый отвечает за удаление всех зарегистрированных пользователей Абонемент.

 

ВАЖНО

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

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

update pos p set p.shift = 1 where p.id = 1 and p.shift = 0

Или же, можно средствами Абонемента создать новый киоск и продолжать работу на нём, деактивировав имеющийся.

Скрипт очистки будет поправлен в ближайших версиях и данная процедура больше не понадобится.

Обновление скрипта (146 версия, задача по трекеру http://tracker.shelter.ru/issues/201632) spadm_clearup_tableprepare_146 (4).sql

Очистка базы данных

Удаление логов из БД

  При продолжительном использовании ПО "Абонемент" работающего в связке с утилитами gkHost и GkHostConnect (модуль управления турникетами), вся информация о каждой попытке прохода сохраняется в таблице Access_Control_Log, которая может достигать больших размеров (порядка нескольких гигабайт).

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

  На Рисунках 1,2,3 отражена последовательность действий в программе IBExpert для уточнения размера служебного файла (имеется ли смысл в применении данного скрипта).

Рис.1 "Заходим в программу IBExpert, щелкаем левой кнопкой мыши (один раз) по алиасу нашей рабочей базы в списке "Database Explorer", далее  нажимаем "Services" -> "Database Statistics";

Рис.2 "Откроется окно в котором нужно будет нажать на кнопку "Retrieve Statistics";

Рис.3 "Далее будет выведена статистика базы, переходим на вкладку "Tables" и обращаем внимание на колонку "Size, bytes".

 

Соответственно из "Рис.3" видим - файл ACCESS_CONTROL_LOG занимает 4.8 Гб, понимаем, что применение скрипта в данном случае актуально.

Удаление логов взаимодействия оборудования с БД "Абонемент"

Скрипт состоит из 2 частей ("*.bat" и "*.sql"):

Содержание файла "AutoDelete_Access_Control_Log.bat":

set isql="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\isql.exe"  
set sqlPath=%~dp0
set sqlFile=%sqlPath%AutoDelete_access_control_log.sql
%isql% -input %sqlFile% 

Содержание файла "AutoDelete_Access_Control_Log.sql":

/*Удаляет логи взаимодействия с оборудованием.
Оставляет только последние 90 дней*/
CONNECT '127.0.0.1/3080:D:\_FITNESS\IBData\FITNESS.FDB' USER 'ucs' PASSWORD 'ucs';
delete from access_control_log acl where acl.regdate < d2dbl('now') - 90;
commit work;

Удаление логов действий пользователей из БД "Абонемент" до заданной даты

Совместно со скриптом указанным выше, возможно (на усмотрение Заказчика) удаление логов действий пользователей в БД "Абонемент".

Содержание файла "AutoDelete_IBHistory_Log.bat":

set isql="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\isql.exe"  
set sqlPath=%~dp0
set sqlFile=%sqlPath%AutoDelete_IBHistory_Log.sql
%isql% -input %sqlFile% 

Содержание файла "AutoDelete_IBHistory_Log.sql":

/*Удаляет логи до заданной даты. */ 
CONNECT '127.0.0.1/3080:D:\_FITNESS\IBData\FITNESS.FDB' USER 'ucs' PASSWORD 'ucs';
delete from sys_history;
delete from sys$log sl where sl.regdate<d2dbl('ДД.ММ.ГГГГ');
commit work;

Вся история изменений до ДД.ММ.ГГГГ будет удалена.

Скрипт AutoDelete_IBHistory_Log.sql, как и в случае AutoDelete_Access_Control_Log.sql, можно настроить на периодическое выполнение через "Планировщик задач" MS Windows.

При выполнении скрипта отдавайте себе отчет, что вносимые изменения необратимы! Рекомендовано все скрипты выполнять изначально на тестовой БД!

 
* - В строках выделенных желтым цветом необходимо указать путь к вашей базе.
  После выполнения "AutoDelete_Access_Control_Log.bat" необходимо будет сделать backup/restore (Чтобы изменился размер базы данных ПО "Абонемент").
 
 

Пример использования скрипта, в результате которого будет поддерживаться актуальная информация о проходах за последние 90 дней в таблице Access_Control_Log БД Абонемент(Создание задачи в "Планировщике задач" MS Windows):

***Данный пример, также актуален для использования скрипта AutoDelete_IBHistory_Log.sql***
Рис.4 "Заходим на сервере БД в <Планировщик заданий> MS Windows, переходим в списке  в <Библиотеку планировщика> (слева) и в списке <Действия> (справа) нажимаем <Создать задачу...>
 
Рис.5 На вкладке <Общие> указываем <Имя:> задачи и параметр <Настроить для:> - соответствующую операционную систему 
 
Рис.6 Переходим на вкладку <Триггеры>, нажимаем кнопку <Создать...> и указываем параметры триггера: "Ежедневно", "Повторять каждые: 1 дн.", "Включено" и нажимаем кнопку "ОК"
 
Рис.7 Переходим на вкладку <Действия>, нажимаем кнопку <Создать...> и указываем параметры действия: "Запуск программы", "Программа или сценарий: указываем путь к *.bat файлу" и нажимаем кнопку "ОК"
 
 
Рис.8 После создания действия, нажимаем кнопку  "ОК" - задача создана.

Обновление Серверной части

краткая версия:

  1. Остановить Сервер блокировок
  2. Сбросить все соединения с БД
  3. Сделать Backup
  4. Stop fb
  5. Stop service ab
  6. Обновить Udf
  7. Start fb
  8. Накатить scripts необходимых версий.

Обновление БД и ПО.

!!!ВНИМАНИЕ!!!

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

0.Подготовка.

Проверяем текущую версию ПО и БД Абонемент. Сделать это можно при загрузке ПО, во время появления окна ввода логина и пароля пользователя:

image-1649064078063.png

Проверить версию ПО можно, выбрав пункт  меню "Сервис" -> "О программе":

image-1649064117130.png

Существует второй метод уточнить версию БД, но использовать его рекомендуется только в случае отсутствия данных об установленной версии ПО и БД, и невозможности произвести запуск ПО Абонемент. Запускаем IBEXPERT.exe и подключаемся к БД объекта (см. инструкцию), открываем procedures, там находим в самом низу SYS$VERSION_FITNESS, открываем данный параметр, и смотрим установленную версию БД.

Заходим в разархивированную папку актуальной версии FullVersion… , и находим там файл version.txt, в нём находится вся необходимая информация для обновления. Находим рекомендации по обновлению поиском в файле по номеру версии программы, которая установлена на данный момент.

1. Обновление базы.

1.1   Запускаем IBEXPERT.exe и подключаемся к БД объекта (см. инструкцию). Запускаем окно выполнения скриптов сочетанием Ctrl+F12. Проверяем, чтобы в верхней строке стояла галочка "Use current connect". В файле version.txt находим рекомендации по обновлению - поиск можно произвести по номеру версии программы.

Встречаются как *.sql файлы типа 1.115.sql, так и файлы developer.sql & housekeeping2.sql - разберем последние два. 

Housekeeping2.sql из папки updatesql нужно выполнить после обновления на 114-ую версию, после 116-ой - выполнить \HouseKeeping\SQL\HouseKeeping2.sql

developer.sql в идеальном случае (при обновлениях на одну-две версии) должен устанавливаться только один раз, самым последним по списку. Но на практике, при обновлениях со старых версий, его нужно выполнять несколько раз, так как иначе Вы увидите ошибки при выполнении остальных скриптов. По ссылке вы можете найти архив со всеми developer.sql от всех версий - для безошибочного обновления, нужно выполнять developer, соотвествующий каждой версии (как указано в version.txt).

Вы можете увидеть типовые проблемы, возникающие при неправильном использовании developer, в следующих задачах: #100605 или #100535.

ВНИМАНИЕ! В Файле developer.sql не должно быть следующих строк, если они есть и в обновляемой базе работает только ПО Абонмент, то их нужно удалить:

update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'D_1KMEMO' where (RDB$FIELD_NAME = 'STRVALUE') and (RDB$RELATION_NAME = 'DEFAULT_VALUES');
commit;
select * from sp_create_object('&Object=DROP_CONSTRAINT&Table=DEFAULT_VALUES&Name=IX_DEFAULT_VALUES_NAME');
commit;
select * from sp_create_object('&Object=CONSTRAINT&Table=DEFAULT_VALUES&Name=IX_DEFAULT_VALUES_REF_NAME&Params=REFTYPE,REF,NAME');
select * from sp_create_object('&Object=INDEX&Table=DEFAULT_VALUES&Name=IX_DEFAULT_VALUES_OLD_NAME&Params=NAME');
commit;

1.2   Возвращаемся к рекомендациям по обновлению начиная с текущей версии БД, открываем папку updatesql, и устанавливаем поочерёдно все *.sql файлы включая developer.sql & housekeeping2.sql, в том порядке, который мы определили на предыдущем шаге. ОШИБОК быть не должно!!! ВНИМАТЕЛЬНО отнеситесь к файлам developer.sql & housekeeping2.sql, установите их вовремя!!! 

1.3   При обновлении на некоторые версии, требуются обновления FireBird

1.4.  Если позволяет время, то рекомендуем после обновления провести backup-restore базы данных абонмент. Восстановленную после restore базу установить как рабочую. Более подробно о этой процедуре см тут.

1.5. При возникновении ошибки вида "This operation is not defined for system tables. unsuccessful metadata update. cannot delete. COLUMN DIARY.CALC_STARTTIME. there are 1 dependencies." отключите на время обновления логирование таблицы, указанной в ошибке (в данном случае - DIARY)

2. Обновление программы

2.1 Выписываем поочередно,  какие файлы, программы, DLL`ки и настройки необходимо менять при каждом переходе. Все одинаковые замены сводим до самой актуальной, и проводим обновление файлов, программ, DLL`ок и настроек. (Пример: обновляясь с версии 1.115 до 1.121, видим, что в рекомендациях к переходу на каждую из версий вверх требуется обновлять файл abonementmanager.exe, нам необходимо поменять его только один раз на версию 1.121.

2.2 Если требуется, выполните обновления служебных утилит gkhostconnect, TcpCardReader и д.р. которые заявлены при обновлении.

3. Проверка работоспособности обновлённой версии ПО и БД. 

3.1 Замените ПО и БД на рабочих местах на обновлённую версию, и произведите запуск ПО. В случае сбоя разверните на рабочем месте резервную копию для восстановления работоспособности, и повторите действия данной инструкции.

Web-Интерфейс для Сервера блокировок

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

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

В connector.ini указать проект 4 модуль 3 и установить UseUrlEncode=0

[LOCK.SERVER]
  TCPHost=192.168.10.10
  TCPPort=1119
  Project = 4
  Module = 3
  
[charset]
encoding=UTF-8
dbencoding=windows-1251
UseUrlEncode=0

В папке wwwroot в коннектор'е в файле settings.js прописать ip-адрес и порт коннектор'а

let globalSettings = {
    "connecterUrl__": "http://127.0.0.1:7766",
  }
let localSettings = {
  }

В адресной строке набираем ip-адрес машины на которой запущен коннектор ( возможно нужно будет открыть порт - в примере 7766 ).

http://127.0.0.1:7766/licenceInfo.html

Результат:

image-1647854902123.png

Модули EFT (автоматический процессинг)

Модули EFT (автоматический процессинг)

Модуль EFT - автоматический процессинг

Описание

Механизм EFT списаний – это механизм для списания денежных средств с банковской карты клиента, согласно установленному графику списаний.
Списание производится через процессинг.
 
Поддерживаемые процессинги: ucscards.ru (UnitedCardServices)
 
В ПО Абонемент 
1) Создается клиент
2) Присваивается банковская карта с пометкой "основная"
3) Продается абонемент с типом "EFT", у которого имеется график платежей и график автоначислений услуг.
  
  Например
  Тип абонемента "EFT2" 
  списывать платеж на сумму "1000" ежемесячно каждого 11-го числа, 
  начислять услугу на сумму "1000" ежемесячно каждого 12-го числа 
 
Т.е. первая попытка списания 11-го, если списать деньги не удалось, то 12-го у клиента начислится ежемесячная услуга 
у клиента будет отрицательный баланс, как следствие по настройкам типа абонемента, клиенту будет доступ запрещен.
Обычно настраивают 10 попыток (дней) списаний.
 
Механизм состоит из 3-х последовательных звеньев: EventsService.exe, EFT.exe, Банк

image-1652966475103.png

 

[Звено 1]  EventsService.exe 
1) Формирует XML файл для  списания. 
Имеет набор данных: 
Карта плательщика, дата окончания, сумма списания и прочие доп. поля
2) Фиксирует ответ от банка в БД
 
[Звено 2]  EFT.exe
1) Преобразует файл XML в файл формата банка 
2) Формирует файл, закодированный ключом PGP. Сохраняет в отдельную папку.
3) Отправляет письмо по адресу с определенным текстом и прикрепленным файлом
4) Мониторит почту (может отличаться от отправляемой) для выявления ответа от банка 
и скачивает вложенный файл. Ожидается один файл. Сохраняет в отдельную папку.
5) Декодирует полученный файл и заполняет файл XML ответами из банка. 
 
[Звено 3]  Банк
1) Принимает закодированный файл для списания
2) Списывает с банковских карт средства
3) Возвращает закодированный файл с результатами списаний

Настройки EventsService.ini специализированные

[application]
    UseManualEft=0                         /* 0 - по умолчанию (автоматическое);  1 - ручное, пошаговое  EFT-списание */
 

[CreditCard]

  NeedRegCCPayment=1                /*1-включить автоматическую оплату абонементов. Всегда = 1*/
  useeft=1                                        /* включить механизм EFT списаний */
  PKCode = EFT,EFT2,EFT3           /* список кодов типов абонементов, учавствующие в атоматических списаниях */
 
  filename=ChangeEFT.xml              /* файл набора данных */ 
  paycode=Visa                                 /* код платежа создаваемого, в случае успешного списания*/  
 

Настройки EFT.ini

[Main]
ManualMode = 1                                                          /*Ручной режим формирования и импортирования пакетов (0 -- нет, 1 -- да)*/
Timer = 5000                                                                /*Время повтора Eft списания (в миллисекундах)*/
 
LockFile =D:\FITNESS\UTILS\EventService\ChangeEFT.lock                   /* Управляющий файл взаимодействия EventService и EFT*/
XMLFile = D:\_1_JOB\03_EFT\EventService\ChangeEFT.XML                 /* XML файл данных от Event Service*/
 
WorkDir = D:\FITNESS\UTILS\EFTWorkDir\                                                                  /* Рабочая директория */
FileToBankPack=D:\_1_JOB\03_EFT\WorkDir\09999_20170926_00.asc                     /* Техническое поле. Файл для банка Eft списания*/
FileFromBankPack =D:\_1_JOB\03_EFT\WorkDir\ans-09999_20170926_00.zip.asc   /* Техническое поле. Файл ответа от банка Eft списания*/
 
 
Pack = D:\FITNESS\UTILS\EFT\pack.bat                  /*Командный файл для упаковки (шифрования)*/
UnPack = D:\FITNESS\UTILS\EFT\unpack.bat         /*Командный файл для распаковки (дешифрования)*/
 
Status =0                                                            /* Состояние:*/
                                                                              ;0 -- начальное состояние (формирование файла для банка);
                                                                              ;1 -- отправление данных Eft в банк;
                                                                              ;2 -- получение ответа от банка по Eft;
                                                                              ;3 -- импортирование данных в Event Service
 
LastDate=43011                                                /*Дата последнего отправления в банк, в формате числа*/
IDDoc=3                                                             /* ;ID документа для банка (увеличивается на 1 после ответа от банка) */
 
FromDay = 1                                                      /*День месяца периода. Период, отправки данные в банк*/
Days = 30                                                           /*Кол-во дней от дня месяца периода . Период, отправки данные в банк*/           
FromTime = 10:00                                              /*Время, с которого отпралять данные в банк*/
 
[7Zip]
FileExe = "C:\Program Files\7-Zip\7z.exe"        /* путь до файла архивирования */
 
 
[GPG]
FileExe =  "C:\Program Files (x86)\GNU\GnuPG\gpg2.exe"   /*Приложение для шифрования и расшифровывания (PGP)*/
Password = *Password*                                                          /*Пароль для расшифровывания*/         
LocalUser = *User*                                                                  /*Имя пользователя ключа*/                     
 
[Bank]
  ContractNumber = 09999                               /*Номер договора. Получить у банка*/
  MerchantID = 9909999771                             /*Код клиента. Получить у банка*/     
 
[SMTP] 
  Host = smtp.yandex.ru                                   /*Адрес сервера SMTP*/
  Port = 465                                                       /*Порт сервера SMTP*/
 
  Username =Username@mail.ru                       /*Имя пользователя*/
  Password =*Password*                                    /*Пароль*/
  Subject = complex auth from %n%                   /*Темя сообщения*/
 
  FromAddress =Username@mail.ru                          /*Адрес отправителя*/
  ToAddress = monitor@abgcard.ru,admin@my.ru     /*Адрес банка*/   
  AdminAddress = admin@my.ru                                /*Адрес администратора*/
 
  TimeOut = 10000                                                     /*Тайм-аут подключения*/
  SSLType = 1                                                             /*Тип SSL (0 -- 3)*/
 
[POP3]
Host = pop.yandex.ru                                                  /*Адрес сервера POP3*/
Port = 995                                                                    /*Порт сервера POP3*/
Username =Username@mail.ru                                  /*Имя пользователя*/
Password =*Password*                                                /*Пароль*/
FromAddress =monitor@abgcard.ru                            /*Адрес отправителя (банка)*/
TimeOut = 10000                                                          /*Тайм-аут подключения*/
SSLType = 1                                                                  /*Тип SSL (0 -- 3)*/
 
ValidationFileName = 0                                                  /*Проверка имени файла от банка (0 -- нет, 1 -- да)*/  
 
[HTTP]
Host = 127.0.0.1             /*Хост. Для подтверждения отправки*/
Port = 8089                     /*Порт. Для подтверждения отправки*/
 

Взаимодействие 

Взаимодействие между EFT.exe и EventsService.exe – файловый.
Файл 1: EventsService\ChangeEFT.lock – управляющий файл
Файл 2: EventsService\ChangeEFT.XML– набор обрабатываемых данных
 
Файл ChangeEFT.lock имеет несколько значений
0 – Файл ChangeEFT.XML не сформирован
1 – Файл ChangeEFT.XML начал формироваться
2 – Файл ChangeEFT.XML сформирован
3 – Файл ChangeEFT.XML занят обработкой в EFT.exe
4 – Файл ChangeEFT.XML обработан EFT.exe
5 – Файл ChangeEFT.XML фиксируется в БД. По окончанию удаляется.
 

Общие данные поведения утилиты EFT.exe

1)  Цикл работы при стабильном функционировании: 
      1 раз в день , с 8 числа в течении 12 дней (параметры)
2) Признак начала работы: Состояние управляющего файла = 3
3) Признак окончания работы: Состояние управляющего файла = 4
 

Общий цикл EFT списания

1) Стартовое состояние: 
ChangeEFT.lock = 0 (либо отсутствует файл), ChangeEFT.XML пустой (либо отсутствует файл).
2) ChangeEFT.lock = 1, ChangeEFT.XML начинает формироваться XML.
3) ChangeEFT.lock = 2, ChangeEFT.XML завершилось формироваться XML.
4) EFT.exe выставляет значение ChangeEFT.lock = 3, копирует ChangeEFT.XML во временную директорию .\WORK. 
5) EFT.exe кодирует ключом PGP формирует зашифрованный файл для банка.
Сохраняет .\Archive\to\20170130_143548\09999_20170926_00.asc
6) EFT.exe отправляет сформированный файл на почту 
7) EFT.exe мониторит наличие ответа из банка раз в 5 минут (параметр)
8) EFT.exe скачивает ответ банка. 
Сохраняет во временную директорию.
Сохраняет .\Archive\from\20170130_153548\ans-09999_20170926_00.zip.asc
9) EFT.exe декодирует файл
Получает из файла банка ответы и к каждой записи ChangeEFT.XML  добавляет значения 
<ERRORCODE></ERRORCODE>
<ERRORTEXT></ ERRORTEXT >
10) EFT.exe копирует с заменой в директорию EventsService\ChangeEFT.XML 
cохраняет .\Archive\from\20170130_153552\ChangeEFT.XML 
11) EFT.exe выставляет значение ChangeEFT.lock = 4
12) EFT.exe фиксирует, что сегодня файл уже был один раз обработан и не работает не зависимо от того какое состояние файла ChangeEFT.lock. и ожидает следующий цикл обработки.
13) EventsService.exe выставляет значение ChangeEFT.lock = 5 
Обрабатывает файл ChangeEFT.XML .
14) EventsService.exe выставляет значение ChangeEFT.lock = 0 
Удаляет файл ChangeEFT.XML .
15) Цикл EFT списания завершен
Модули EFT (автоматический процессинг)

Списание EFT в ручном режиме

EFT.ini  (пример)

image-1654769319876.png

image-1654770043512.png

[SMTP]
ToAddress = ... вставить все адресаты в письмо
AdminAddress = ... вставить все адресаты в письмо
FromAddress = ... ОТПРАВЛЯТЬ С ЭТОГО E-MAIL

1.  В EFT.ini выставить ManualMode = 1
2.  Запустить EFT.exe и нажать Выполнить

image-1654869884625.png?


3.  Получаем ответ вида "Файл для банка [MOSKVA] [11111] [C:\_UCS\UTILS\EFT2\WorkDir\11111_20220609_1400.asc]: количество записей: 45; сумма: 174730"

4.  Создать письмо с e-mail указанного в EFT.ini (FromAddress = ... ) :

От кого:   (п.4)

Кому:   (адресаты из EFT.ini  ToAddress= ... и AdminAddress=... )

image-1654769876023.png

Тема:   complex auth from 11111 (первые 5 цифр названия файла .asc)

Содержание письма:   Строка, полученная в EFT.exe вида:
Файл для банка [MOSKVA] [11111] [C:\_UCS\UTILS\EFT2\WorkDir\11111_20220609_1400.asc]: количество записей: 45; сумма: 174730

5.  Прикрепить актуальный файл *.asc из ...\EFT2\WorkDir\ к письму

6.  (необязательно (?) для ручного режима)
Создать в письме две ссылки вида
"Подтвердить"   -                            http://192.168.0.10:8189/?ok&file=11111_20220609_1400.asc&ucs
"Отменить и переоформить"   -    http://192.168.0.10:8189/?cancel&file=11111_20220609_1400.asc&ucs

IP-адрес и порт указаны в EFT.ini [HTTP]
file= *.asc&ucs - соответстующее название вашего файла.

7.  Отправить письмо - Получить ответ:

Complex_AUTH_Answer
Файл вида -  ANS-11111_20220609_1400.asc

8.  Полученный файл поместить в ...EFT2\WorkDir\
9.  В EFT.exe нажать "Конвертировать файл от банка"

image-1654769422507.png
10.  ГОТОВО! Вы великолепны! (При необходимости вернуть авто-режим ManualMode = 0 )

Модуль работы с маркированной продукцией "Честный Знак"

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

Модели сканеров штрих-кода, протестированные и рекомендованные для использования с ПО Абонемент:

Honeywell 1952g
Honeywell HH400
Datalogic QuickScan QW2520
Mertech CL-2310
ATOL SB2108 Plus

В 141 версии ПО Абонемент поддержана работа с маркированной продукцией «Честный знак».

В 146 версии поддержана работа Честный Знак в формате ФФД 1.2. и поддержка продажи маркированной упакованной воды.

Продажа маркированной продукции «Честный Знак» лицензируется отдельно, Лицензия на ключе: 5-9.

В программе, в разделе "Форматы фискальных данных" добавлен справочник
 «Тип маркируемой продукции ("Честный знак")»:

image-1653645675143.png

Рис. 1

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

 Внимание!!! Справочник НЕ редактируемый. Дополняется разработчиками по мере ввода в действие новых типов маркируемых товаров.

Шаг 1. Добавление номенклатуры в справочник.
Справочник услуг:

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

image-1653645765189.png

Рис.2

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

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

image-1653645880148.png

Рис. 3

Добавление происходит путем считывания штрих-кода Data Мatrix каждой новой партии товара. Подтвердить добавление штриха в справочник, и последующее добавление в чек путем сканирования Data Мatrix кода.


Если штрих-код уже ранее был прикреплен и существует в справочнике, то добавление не происходит. Поднимается информационное сообщение (Рис. 4):

image-1653645937360.png

Рис. 4

Шаг 2. Продажа маркируемой продукции 
Пользователь в быстрой продаже/быстром чеке сканирует марку (Data Matrix код) с товара:
1. Система находит и добавляет в чек товарную позицию (Рис. 5).
2. Система передает код в ФР, ФР печатает код на чеке и передает в ОФД.

image-1653645980145.png

                                                                                                     Рис. 5

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

  • [М+] — товар проверен и успешно отправлен в «Честный знак».
  • [М-] — товар не прошёл проверку в системе «Честный знак» и его нельзя продать.
  • [М] — товар не прошёл проверку и не был передан в «Честный знак», необходимо пробить товар повторно (возможно, не было связи с интернетом или касса работала в автономном режиме)
  1. Если штрих-код в БД не найден, поднимается информационное сообщение (Рис. 6):

image-1653646082403.png

Рис. 6

Важные моменты:

При сканировании марки на ключе защиты проверяется лицензия: проект-модуль: 5-9. Если модуль на ключе  отсутствует, то поднимается информационное сообщение "Нет лицензии на "Честный знак".

Внимание!!!

  1. Каждый товар маркируемой продукции добавляется в чек отдельной позицией.
  2. Повторная продажа уникального кода Data Matrix запрещена.
    Поднимается информационное сообщение (Рис. 7):

image-1653646153647.png

Рис. 7

Шаг 3. Возврат маркируемой продукции

Возврат маркировочной продукции осуществляется по кнопки  - Возврат.

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

  1. В окне возврата необходимо заполнить поле «Причина возврата»
  2. Подтверждение возврата маркировочной продукции происходит путем считывания штрих-кода Data Мatrix товара (Рис. 8):

image-1653646210815.png

Рис. 8

Признак отправки данных о возврате маркируемой продукции в ОФД – это наличие в чеке фискального регистратора метки маркировки [М].

      3. Если не происходит подтверждение возврата маркировочной продукции поднимается информационное сообщение           (Рис.9):

image-1653646360167.png

Рис. 9

     4. После проведения возврата , товар может быть повторно продан.

 

Внимание!!!

Товар подлежит возврату, только в случае если код Data Matrix товара не поврежден.
Если Data Matrix товара поврежден, то ПО не позволит вернуть товар, т.к. это нарушает правила оборота товара и открывает путь к мошенничеству. Если товар был возвращен, то возврат товара в оборот необходимо решать через личный кабинет участника товарооборота: https://честныйзнак.рф/. Возврат товара в оборот подлежит обязательной перемаркировке.


Настройка кодов "Честный Знак"

https://честныйзнак.рф/upload/Структура DataMatrix.pdf или Структура DataMatrix_ЧЗ.pdf.

В файле находится описание кодов Датаматрикс.
Обновляется примерно раз в 6 мес.

В abonementmanager.ini 2 секции [TrueMark] и [TrueMark.RegExp].

[TrueMark]
RegExpListFillMode=0
; Порядок формирования списка для проверки соответствия трека Честному знаку
;0 - Если [TrueMark.RegExp] не пустая, то используется только содержимое [TrueMark.RegExp], в противном случае используются только встроенные регулярки
;1 - Если [TrueMark.RegExp] не пустая, то используется только содержимое [TrueMark.RegExp] и этот список дополняется встроенными регулярками


Регулярные выражения для конкретной группы вносятся в [TrueMark.RegExp] :

пример для  обуви :  ^01(0(\d{13}))21(.{13})\x1d91(.{4})\x1d92(.{88})

[TrueMark.RegExp]
0=^01(0(\d{13}))21(.{13})\x1d91(.{4})\x1d92(.{88})

Лицензирование на виртуальном ключе. Установка и настройка.

Для всех версий ПО Абонемент, с 01.05.2023 года доступно лицензирование на виртуальном ключе.

В случае необходимости запуска объекта на физическом ключе защиты -

стоимость физического ключа составляет 2 000 руб. без НДС.

Описание:

Лицензирование по виртуальным ключам в системе ПО Абонемент построено по клиент-серверной архитектуре. Серверный компонент – это служба Сервера блокировок ServerT1, она запрашивает информацию о лицензиях соответствующего объекта с облачного сервера лицензий и транслирует её клиентским компонентам или рабочим местам.

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

Установка:

Скопировать папку ServerT1 в папку с ПО Абонемент на сервере. Соответствующая папка есть в сборке нужной Вам версии ПО Абонемент, а так же доступна по ссылке: ServerT1_2_3_20_3_06.06.2023.rar и на FTP: ftp://ftp.shelter.ru/Abonement/FullVersion/Licence/ 

В конфигурационном файле ServerT1.ini  настройки можно оставить по умолчанию.

В конфигурационном файле LicenceOnline.ini необходимо проставить параметры, полученные Вами после обработки заявки:

CustomerID=00000 (полученный Вами код объекта)

DongleID= 00000000000000000 (полученный Вами код объекта)

image.png

Код объекта можно узнать в тех. поддержке ПО Абонемент или в отделе по работе с дилерами/клиентами.

Проинсталлировать службу запустив исполняемый файл с параметром: –install,

Для удобства в папке уже есть ярлык с нужным параметром, нужно предварительно в свойствах ярлыка выставить нужные пути и запустить его «от имени Администратора»:

image.png

В службах Windows должна появится соответствующая служба, которая прописана в ServerT1.ini:

image.png

Запустить службу и проверить информацию о лицензиях можно по ссылке в браузере:

http://127.0.0.1:7711

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

На остальных рабочих местах адрес сервера блокировок указывается по стандартной схеме - IP адрес и порт службы ServerT1 на Вашем сервере.

В случае запуска сервера блокировок в десктопном режиме необходимо:

запустить исполняемый exe.ru. нажать кнопку "Setting Licence online":

image.png

После появления информационного окна с данными CustomerID=00000 и DongleID=

- нажать ОК:

image.png

Далее в следующих окнах так же нажать ОК:

image.png

image.png

Запросить информацию об имеющихся на виртуальном ключе лицензиях, можно нажав на кнопку "Key Info". результатом будет окно с имеющимися лицензиями и сроками действия:

image.png


На этом настройка сервиса лицензирования, работающего на виртуальном ключе, закончена.

Установка киоска (терминала, инфотерминала) самообслуживания

Краткий вариант инструкции (будет расширяться):

  1. Ставим Denwer
  2. Распаковываем Connecter в Fitness
  3. Закидываем туда же LIB
  4. LIB прописываем в переменные среды (системные)
  5. Закидываем в каталог установленного Denwer C:\WebServers\home\localhost\www нужный Вам модуль киоска/инфотерминала
  6. Настраиваем connecter.ini: доступ к базе; приватный ключ; useURLEncode; по желанию настраиваем работу с ФР (URunPos.ini) - настройка такая же, как и в Абонементе. Боремся с купюроприемником, используя библиотеку MoneyAcceptor из поставки (протокол CashCode). Настраиваем карт ридер, если есть.
  7. Идем в модуль инфокиоска, расположенном в каталоге Denwer и... делаем настройку в config.php
    define('SCHEDULE_XML_PATH', 'http://IP:PORT'); // TCPHost и TCPPort
    define('USE_URL_DECODE', 0); // значение параметра UseURLEncode в файле connecter.ini
    define('PRIVATEKEY', 'ТУТ ВАШ ПРИВАТНОЕ СЛОВО'); // указывается в файле connecter.ini    

Запускаем Connecter, запускаем Denwer и радуемся..

Рекомендовано использовать Denwer версии 5.3.

Установка киоска (терминала, инфотерминала) самообслуживания_ВЕРСИЯ 2

Краткий вариант следующий:

  1. Необходимо определить, достаточно ли производителен конечный ПК (планшет/моноблок) для Chrome+Connecter+Denwer+TCPCardReader (в порядке убывания требуемых ресурсов)
  2. Разместить на конечном ПК Chrome + TCPCardReader
  3. Разместить Denwer и Connecter либо на конечном ПК либо на сервере (В зависимости от результатов пункта 1)

Настройки

  • TCPCarderader и decodecards под ним и Connecter настроить аналогично рабочим местам Абонемент.

    В секции TCPCardReader в connecter.ini может быть неверно указан адрес на котором запущен TCPCardReader. Подключиться на адрес 0.0.0.0 невозможно. Вероятно, имелось ввиду 127.0.0.1

    HOST=0.0.0.0
    

    Также в секции devices использование ридера отключено:

    [DEVICES]
      UseCardReader=0
    

    Настройте виртуальный ФР под Connecter. Убедитесь, что оплата в настройках инфокиоска отключена, если нет соответствующей лицензии.
  • В Denwer добавить веб-часть модуля инфокиоск, так, чтобы он был доступен с конечного ПК (в случае если Denwer установлен на конечном ПК, то используются настройки Denwer по умолчанию)
  • Развернуть Connecter. 

    По запуску Connecter на сервере - убедитесь что порт, на котором запущен TCPCardReader на планшете доступен с сервера. Как правило, настройки брандмауера по умолчанию блокируют подключения с удалённых ПК.

    По запуску Connecter на планшете - судя по всему запуск успешен, но каких-либо запросов в него не поступало.
    При настройке:

    [HTTPServer]
      BindingIp=192.168.0.20
    


    Connecter будет доступен только при обращении по адресу 192.168.0.20 и не доступен по 127.0.0.1
    Также не рекомендуем указывать DBConnectCount менее 3.

  • Connecter должен быть настроен на БД объекта
  • Connecter должен быть доступен с ПК на котором развёрнут Denwer.
  • Connecter должен быть настроен на работу с TCPCardReader (Настраивается точно так же как и для abonementmanager.exe)
  • Connecter должен быть настроен на работу с сервером блокировок, и в данной секции необходимо указать проект и модуль согласно таблице (https://support.shelter.ru/ru/node/8922.html) чтобы модуль имел доступ ко всем требуемым функциям.
  • После запуска и проверки доступности и работоспособности Connecter переходите к настройкам веб-части переходя на конечном ПК по ссылке http://<адрес_денвер>/info/settings
  • В первую очередь настраиваете данные для подключения к Connecter. Проверяете их с помощью страницы check_server. Сохраняете.
  • Проверяете, что модуль доступен по предполагаемой ссылке, что функционал отрабатывает.
  • Настраиваете bat-файл, в котором производится выгрузка explorer, запуск необходимых служб/приложений, и запуск Chrome с требуемыми ключами.

Далее донастраиваете веб-часть согласно требуемому функционалу.

Подключение Банковского терминала

Подключение Банковского терминала

Подключение Банковского терминала Tinkoff ( По протоколу Inpas)

Необходимые файлы:

  • amCC_Inpas.dll
  • amCC_Inpas.ini

Пример содержимого amCC_Inpas.ini

[DLL.CreditCard-Inpas]
  CurrencyCode=643
  OperationCode=1
  TerminalID=00000003  
  isShowResult=1


TerminalID можно получить из log'a DualConnector'a  в строке с тегом [27]


Для выполнения возврата при оплате по QR необходима информация идентифицирующая транзакцию с банковского слипа. 

Новости

21.08.2023
С начала 2023 года на базе ПО Abonement наша компания совместно с дилерами произвела автоматизацию 21 объекта в городах России, Беларуси...
21.02.2023
Согласно утверждённым этапам и датам ввода маркировки упакованной воды, с 1 марта 2023 года предприятия, осуществляющие её...
26.08.2022
Новым проектом команды Абонемент стала комплексная автоматизация аквапарка с зоной активных развлечений Atlantic в городе...
29.03.2022
Полный список доработок и обновлений доступен в файле Version.txt в сборке версии.

Задать вопрос

Отмена