Установка и настройка ПО Abonement
- Установка серверной части
- Установка серверной части
- Приложение 1 - Настройка bat-файлов.
- Приложение 2 - Выполнение SQL-скриптов.
- Приложение 3 - Управление лицензиями.
- Приложение 4 - Отслеживание автоматического запуска приложений.
- Приложение 5 - Настройка автоматического резервного копирования.
- Установка клиентской части
- Перезагрузка сервера блокировок Abonement
- Интеграции Abonement
- Очистка базы данных
- Обновление Серверной части
- Web-Интерфейс для Сервера блокировок
- Модули EFT (автоматический процессинг)
- Модуль работы с маркированной продукцией "Честный Знак"
- Настройка кодов "Честный Знак"
- Лицензирование на виртуальном ключе. Установка и настройка.
- Установка киоска (терминала, инфотерминала) самообслуживания
- Установка киоска (терминала, инфотерминала) самообслуживания_ВЕРСИЯ 2
- Подключение Банковского терминала
Установка серверной части
Установка серверной части
папка с дитрибутивом называется 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)
Рис. 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 базы.
Пример выполнения скрипта перевода базы на английский язык
*по аналогии, выполняется любой другой скрипт
Рис.5. Нажимаем кнопку "Connect ot Database" (1) затем нажимаем кнопку"Script Executive" (2).
Рис.6. В открывшемся окне ставим галку "Use current connect", далее нажимаем "Script"->"Run from file..." и в открывшемся окне выбираем наш скрипт (например: Translate_DB_to_English.sql) и нажимаем кнопку "Открыть".
Рис.7. Выполнится скрипт, после чего появится информационное сообщение о его успешном выполнении.
После выполнения перечисленных выше действий - закрываем IBExpert.
Приложение 3 - Управление лицензиями.
Работа с ключом защиты ПО Абонемент.
Приложение 4 - Отслеживание автоматического запуска приложений.
Описание утилиты StarterA1.exe
Файлы программы лежат в папке \FullVersionVer...\UTILS
- Инсталлировать: StarterA1.exe /install - для инсталляции службы, создать ярлык и прописать в нём после пути к файлу "-install"
- Деинсталлировать: StarterA1.exe /uninstall
- Запустить службу: StarterA1.exe /start
- Остановить службу: StarterA1.exe /stop
[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
Порядок работы службы
[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
[database]
dbname = сервер/3080:C:\UCS\FITNESS\IBDATA\fitness.FDB
;где сервер – это имя или ip адрес компьютера, где установлена серверная часть, например 127.0.0.1/3080:C:\FITNESS\IBDATA\FITNESS.FDB
[LOCK.SERVER]
TCPHost = 127.0.0.1
TCPPort = 1111
8. В первый раз программы нужно запустить от имени администратора, иначе необходимо вручную зарегистрировать midas.dll из папки \LIB\ и frDlgDef.dll в папке \Reports\dll\ с помощью следующей команды (прописать в консоли windows, запущенной от имени администратора):
regsvr32 C:\UCS\FITNESS\LIB\midas.dll
regsvr32 С:\UCS\FITNESS\REPORTS\DLL\frDlgDef.dll
Перезагрузка сервера блокировок Abonement
Инструкция по проведению процедуры сброса сервера блокировок:
Сервер блокировок работает как служба.
- Для доступа к службам на сервере необходимо зайти в диспетчер задач (правая кнопка мыши на панели задач и нажать на Диспетчер задач):
- В открывшемся окне выбрать вкладку Службы (пункт 2 на рисунке ниже).
- Найти службу с именем: UCSServerT1Service
- Нажать правой кнопкой мыши на самой службе (пункт 3 на рисунке ниже).
В выпадающем списке выбрать "Остановить",
- Нажать правой кнопкой мыши на самой службе (пункт 3 на рисунке ниже)
В выпадающем списке выбрать "Запустить" (если служба не запуститься - то попробовать повторно Запустить).
Все подключения к базе обновятся принудительно.
Интеграции Abonement
Интеграция iiko и Абонемент / Shelter
Описание интеграции iiko и Абонемент / Shelter.
Структурная схема связки выглядит следующим образом:
Структура взаимодействия модулей и программ.
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.
- Выполнить стандартные настройки Connecter.
- Connecter Должен быть настроен на БД, в которую будет осуществляться закрытие.
- В секции [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, выполнить закрытие на номер, проверить результат.
Интеграция Абонемент и 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
[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
3. HTTPRKtoSH.exe
[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
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
Код услуги в Абонементе.
Настройки на стороне RK7
Все настройки производятся в станции менеджера.
1. Настройка кассовой станции и устройства (Сервис - Станции и устройства)
Добавляем в устройства PDS интерфейс.
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
Общая информация по полю 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 алгоритм
Указываем тип «Интерфейс». Объект Интерфейс 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. Настройка валюты (Деньги - валюты)
Заводим валюту в платежных картах. В названии НЕ используем кавычки "".
Так же можно установить наценку для чаевых и чаевые будут передаваться в Абонемент и отдельно там фиксироваться - НЕ ТЕСТИРОВАЛОСЬ.
5. Отображение кнопки оплата картой
Также для отображение кнопки оплаты в интерфейсе кассы необходимо будет настроить параметр оплата платежной картой, который находится в настройках менеджера. (Настройки - параметры - параметры работы станции - редактирование заказа - расчет/оплата заказа - оплата платежной картой, в свойствах поле "значение" установить "спрашивать" )
Настройки параметра отображения выглядит так:
Проверка настройки оплаты
Открываем кассовую станцию, создаем заказ и начисляем блюдо.
Нажимаем на оплатить.
Выбираем платежные карты
Нажимаем на созданную валюту, в нашем случае Abonement
Вводим идентификатор или номер фолио (рис А. идентификатор, рис. Б фолио)
Рисунок А.
Рисунок Б.
После ввода нажимаем на галочку и должны увидеть карточку клиента.
В нашем случае клиент с фолио номер 1598 это IIKO Maylo Maskovich. В зависимости от настройки утилит можно увидеть его реальный баланс. В нашем случае стоит параметр в утилитах на безлимит. Нажимаем на "оплата картой".
Подтверждаем наше действие. После успешной оплаты мы возвращаемся на стартовый экран. Либо мы должны увидеть ошибку в области обозначенной желтым цветом.
Проверить начисление мы можем, зайдя на фолио клиента в Абонементе.
На фолио должна появится услуга с указанным кодом в 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.
При выполнении скрипта отдавайте себе отчет, что вносимые изменения необратимы! Рекомендовано все скрипты выполнять изначально на тестовой БД!
Пример использования скрипта, в результате которого будет поддерживаться актуальная информация о проходах за последние 90 дней в таблице Access_Control_Log БД Абонемент(Создание задачи в "Планировщике задач" MS Windows):
Обновление Серверной части
краткая версия:
- Остановить Сервер блокировок
- Сбросить все соединения с БД
- Сделать Backup
- Stop fb
- Stop service ab
- Обновить Udf
- Start fb
- Накатить scripts необходимых версий.
Обновление БД и ПО.
!!!ВНИМАНИЕ!!!
Перед проведением обновления у Заказчика, рекомендуем сначала проверить все у себя в офисе на сборке клиента. Во избежание возникновения сбоев в работе ПО Абонемент, а так же безвозвратного повреждения рабочей версии программы и базы данных, необходимо сделать резервную копию БД и ПО. В случае сбоя при обновлении уже на объекте, развернуть резервную копию, тем самым восстанавливая работоспособность объекта, после чего все проверить на копии.
0.Подготовка.
Проверяем текущую версию ПО и БД Абонемент. Сделать это можно при загрузке ПО, во время появления окна ввода логина и пароля пользователя:
Проверить версию ПО можно, выбрав пункт меню "Сервис" -> "О программе":
Существует второй метод уточнить версию БД, но использовать его рекомендуется только в случае отсутствия данных об установленной версии ПО и БД, и невозможности произвести запуск ПО Абонемент. Запускаем 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
Результат:
Модули EFT (автоматический процессинг)
Модуль EFT - автоматический процессинг
Описание
Настройки EventsService.ini специализированные
[CreditCard]
Настройки EFT.ini
Взаимодействие
Общие данные поведения утилиты EFT.exe
Общий цикл EFT списания
Списание EFT в ручном режиме
EFT.ini (пример)
[SMTP]
ToAddress = ... вставить все адресаты в письмо
AdminAddress = ... вставить все адресаты в письмо
FromAddress = ... ОТПРАВЛЯТЬ С ЭТОГО E-MAIL
1. В EFT.ini выставить ManualMode = 1
2. Запустить EFT.exe и нажать Выполнить
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=... )
Тема: 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 нажать "Конвертировать файл от банка"
10. ГОТОВО! Вы великолепны! (При необходимости вернуть авто-режим ManualMode = 0 )
Модуль работы с маркированной продукцией "Честный Знак"
Честный знак. Поддержка маркированной продукции. Пользовательская документация.
Модели сканеров штрих-кода, протестированные и рекомендованные для использования с ПО Абонемент:
Honeywell 1952g
Honeywell HH400
Datalogic QuickScan QW2520
Mertech CL-2310
ATOL SB2108 Plus
В 141 версии ПО Абонемент поддержана работа с маркированной продукцией «Честный знак».
В 146 версии поддержана работа Честный Знак в формате ФФД 1.2. и поддержка продажи маркированной упакованной воды.
Продажа маркированной продукции «Честный Знак» лицензируется отдельно, Лицензия на ключе: 5-9.
В программе, в разделе "Форматы фискальных данных" добавлен справочник
«Тип маркируемой продукции ("Честный знак")»:
Рис. 1
По умолчанию справочник заполнен типами продукции, подлежащей обязательной маркировки.
Внимание!!! Справочник НЕ редактируемый. Дополняется разработчиками по мере ввода в действие новых типов маркируемых товаров.
Шаг 1. Добавление номенклатуры в справочник.
Справочник услуг:
Создаем номенклатурную позицию в справочнике услуг:
Рис.2
Все доп. товары справочника, подлежащие маркировке, должны ссылаться на тип маркируемой продукции. Для этого, в карточке услуги, в параметре «Тип маркируемой продукции» нужно выбрать тип из соответствующего справочника (Рис. 1).
После добавления товара (карточки услуги) в справочник Абонемента, номенклатурной позиции нужно присвоить штрих-код партии.
Рис. 3
Добавление происходит путем считывания штрих-кода Data Мatrix каждой новой партии товара. Подтвердить добавление штриха в справочник, и последующее добавление в чек путем сканирования Data Мatrix кода.
Если штрих-код уже ранее был прикреплен и существует в справочнике, то добавление не происходит. Поднимается информационное сообщение (Рис. 4):
Рис. 4
Шаг 2. Продажа маркируемой продукции
Пользователь в быстрой продаже/быстром чеке сканирует марку (Data Matrix код) с товара:
1. Система находит и добавляет в чек товарную позицию (Рис. 5).
2. Система передает код в ФР, ФР печатает код на чеке и передает в ОФД.
Рис. 5
После того как кассир пробьёт маркированный товар, касса отправит данные в «Честный знак» и при печати на чеке появится одно из следующих обозначений:
- [М+] — товар проверен и успешно отправлен в «Честный знак».
- [М-] — товар не прошёл проверку в системе «Честный знак» и его нельзя продать.
- [М] — товар не прошёл проверку и не был передан в «Честный знак», необходимо пробить товар повторно (возможно, не было связи с интернетом или касса работала в автономном режиме)
- Если штрих-код в БД не найден, поднимается информационное сообщение (Рис. 6):
Рис. 6
Важные моменты:
При сканировании марки на ключе защиты проверяется лицензия: проект-модуль: 5-9. Если модуль на ключе отсутствует, то поднимается информационное сообщение "Нет лицензии на "Честный знак".
Внимание!!!
- Каждый товар маркируемой продукции добавляется в чек отдельной позицией.
- Повторная продажа уникального кода Data Matrix запрещена.
Поднимается информационное сообщение (Рис. 7):
Рис. 7
Шаг 3. Возврат маркируемой продукции
Возврат маркировочной продукции осуществляется по кнопки - Возврат.
Поднимается функция «Возврат платежа, услуг и абонементов», т.е. полный возврат чека.
- В окне возврата необходимо заполнить поле «Причина возврата»
- Подтверждение возврата маркировочной продукции происходит путем считывания штрих-кода Data Мatrix товара (Рис. 8):
Рис. 8
Признак отправки данных о возврате маркируемой продукции в ОФД – это наличие в чеке фискального регистратора метки маркировки [М].
3. Если не происходит подтверждение возврата маркировочной продукции поднимается информационное сообщение (Рис.9):
Рис. 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 (полученный Вами код объекта)
Код объекта можно узнать в тех. поддержке ПО Абонемент или в отделе по работе с дилерами/клиентами.
Проинсталлировать службу запустив исполняемый файл с параметром: –install,
Для удобства в папке уже есть ярлык с нужным параметром, нужно предварительно в свойствах ярлыка выставить нужные пути и запустить его «от имени Администратора»:
В службах Windows должна появится соответствующая служба, которая прописана в ServerT1.ini:
Запустить службу и проверить информацию о лицензиях можно по ссылке в браузере:
На странице должна быть отображена таблица с лицензиями и сроками действия, доступные на виртуальном ключе (общий вид):
На остальных рабочих местах адрес сервера блокировок указывается по стандартной схеме - IP адрес и порт службы ServerT1 на Вашем сервере.
В случае запуска сервера блокировок в десктопном режиме необходимо:
запустить исполняемый exe.ru. нажать кнопку "Setting Licence online":
После появления информационного окна с данными CustomerID=00000 и DongleID=
- нажать ОК:
Далее в следующих окнах так же нажать ОК:
Запросить информацию об имеющихся на виртуальном ключе лицензиях, можно нажав на кнопку "Key Info". результатом будет окно с имеющимися лицензиями и сроками действия:
На этом настройка сервиса лицензирования, работающего на виртуальном ключе, закончена.
Установка киоска (терминала, инфотерминала) самообслуживания
Краткий вариант инструкции (будет расширяться):
- Ставим Denwer
- Распаковываем Connecter в Fitness
- Закидываем туда же LIB
- LIB прописываем в переменные среды (системные)
- Закидываем в каталог установленного Denwer C:\WebServers\home\localhost\www нужный Вам модуль киоска/инфотерминала
- Настраиваем connecter.ini: доступ к базе; приватный ключ; useURLEncode; по желанию настраиваем работу с ФР (URunPos.ini) - настройка такая же, как и в Абонементе. Боремся с купюроприемником, используя библиотеку MoneyAcceptor из поставки (протокол CashCode). Настраиваем карт ридер, если есть.
- Идем в модуль инфокиоска, расположенном в каталоге 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
Краткий вариант следующий:
- Необходимо определить, достаточно ли производителен конечный ПК (планшет/моноблок) для Chrome+Connecter+Denwer+TCPCardReader (в порядке убывания требуемых ресурсов)
- Разместить на конечном ПК Chrome + TCPCardReader
- Разместить 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 необходима информация идентифицирующая транзакцию с банковского слипа.