Описание интерфейса связи RK7 и Абонемент через FarCards.
Структурная схема.

рис.1 Структурная схема.
Структура взаимодействия модулей и программ
RKeeper при оплате на специальную валюту обращается к FarCards, который вызывает подключенную к нему sdmHTTPFarCard.dll. Последняя dll обращается к ключу защиты и если лицензия найдена (проект 2 модуль 11), отправляется XML запрос на TCP/IP сервер - программу HTTPRKtoSH.exe. Этот сервер обращается к ShelterConnect.dll, которая работает с базой данных Абонемент.
- Используемые версии ПО
- Версия станции и кассового сервера 7.5.7.65.
- Версия FarCards 6.04
- !Важно! pds_netk.dll из версии RK7 7.5.3.х
- Абонемент версия 127
- HTTPRKtoSH от 16.06.2017
- ShelterConnect.dll от 07.02.2017
- sdmHTTPFarCard.dll от 18.04.2018
Дистрибутив со всем необходимым можно скачать на FTP
Настройки RKeeper7.

Рис.2. Кассовые станции и устройства
2. Зайти в меню Сервис – Интерфейсы. Добавить новый интерфейс. Назовем его RKtoAbonement. См рис. 3 В данном интерфейсе указываем , ранее заведенный PDS interface#1. Код интерфейса нужно запомнить и прописать в файле HTTPRKtoSH.ini. См. настройки HTTPRKtoSH.exe.
Для передачи ППР позиций меню в Абонемент (с версии 136) и последующей печати их в чеке, необходимо в параметр интерфейса xml dish attributes установить как:
xml dish attributes = 2560.ItemKind

Рис.3. Интерфейс
3. Заходим в меню Сервис - Обработка сигналов и устройств и добавить MCR алгоритм. Указываем тип «Интерфейс». Объект Интерфейс RKtoAbonement, заведенный в пункте 2.
Если указать тип «Валюта», то будет ошибка 232: "Не получается напечатать чек: Персональное ограничение для "" = 0.00."
Можно завести несколько интерфейсов для разных типов идентификаторов. Сделаем два интерфейса, один карт E-Marine (Рис.4) и другой для Mifare (Рис.5).

Рис4. MCR алгоритмя для E-Marine карт.
Пример скрипта для карт 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;beginResult := false;if pos('Em-Marine',Parameter)>0 thenbegini := pos(']',Parameter);j := pos(',',Parameter);resulttext:=copy(Parameter,i+2,3);resulttext:=resulttext+copy(Parameter,j+1,5);Result := true;Parameter:=resulttext;end;end;

Рис5. MCR алгоритмя для 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;beginResult := false;if pos('Mifare[',Parameter)>0 thenbegini := pos('[',Parameter);j := pos(']',Parameter);Parameter := copy(Parameter,i+1, j-i-1);if length(Parameter) > 0 then beginResult := true;res1:=strtoint64('$'+Parameter);Parameter:= Int64ToStr(Res1 and $FFFFFFFF );end;end;end;

Рис 6. Свойства валюты.
Настройки FarCards.

[FarServer]Type = 1DLL = sdmHTTPFarCard.dllGate = 1log = 30XMLCP=1251[LinkDLL]1 = pds_netk[pds_netk]NetServerName=rkfcabininame=netk.ini
[netkern]TESTMESSAGES=0protocols=tcpsoc.dll[TCPSOC]port=2234
Настройка sdmHTTPFarCard.dll
Настройка HTTPRKtoSH.exe
Настройка ShelterConnect.ini
[Database]
;Настройка на БД Абонемент
DBname = 127.0.0.1/3080:C:\_UCS\_FITNESS\IBDATA\FITNESS.FDB
DBUser = ucs
DBPassword = oQKH8n0BFUE=
[ExternalClient]
;Код типа идентификатора для поиска
IdentPhysType = 2
;Преобразовывать в CP866
ToOEM = 0
;Запрещать операции превышающие сумму баланса и лимита кредита гостя (в противном случае в r_k возвращается текущий баланс гостя 99999)
NeverRestrictTransaction = 0
ConvertOperationNeed = 1
ClientID = 1
FolioMask = 1
ShowBalance = 1
ShowBalanceFirst = 1
RoomInfoMode =4
TransSection =0
[log]
FileName = ShelterConnect.log
Level = 100
DebugLevel = 100
[GarbageCollector]
Enabled = 0
LifeTime = 120
[SCRK6]
;Не подлежат изменению для интерфейса с r_k7
AlcoholicOperation =999;
Messages =SCRK6.eng.msg
UseScreenHeader0 =1
UseScreenHeader1 =1
UseScreenSequelCode =1
ShowBalance = 1
ShowBalanceFirst = 1
ShowBalanceEverywhere = 1
UseDetails = 1
UseSuperDetails = 1
[TranslateOperation]
;Таблица соответствия Кода групп станций r_k и создаваемой в Абонемент услуги
1 = 301
2 = 301
3 = 301
4 = 301
5 = 301
6 = 301
7 = 301
8 = 301
9 = 301
11 = 301
12 = 301
13 = 301
14 = 301
15 = 301
16 = 301
17 = 301
10 = 301
999 = 301
[TranslatePayment]
;не используется в Абонемент
1 = 1005,910
1000632 = 1005,901
8 = 1005,901
3 = 1005,901Процесс обслуживания клиента в RK7
|
Рис.8 Создание заказа в RK7 _______________________________________________________ |
Рис.9 Оператор прикладывает браслет (карту) гостя (также возможен ручной ввод номера ФОЛИО). На экране появляется информация о клиенте, в т.ч. баланс счета. |
|
Рис.10 После оплаты заказ в RK7 закрывается и считается оплаченным. На ФОЛИО гостя в ПО Абонемент создается услуга соответствующей стоимости, а также передается информация о содержимом заказа и примененных скидках. |
Рис.11 Также с помощью браслета клиента можно получить список закрытых на ФОЛИО данного клиента чеков ____________________________________________________________________ |
Разделение блюд по разным услугам в Абонемент
В тех или иных случаях требуется закрывать блюда из одного чека r_keeper на различные услуги в Абонемент.
В таком случае, для корректного разделения содержимого чека, передачи идентификаторов чеков для возможности последующего возврата, разделение должно происходить на стороне r_keeper.
Для подобного разделения необходимо запустить два экземпляра сборки FarCards и HTTPRKtoSH, настроенные на разные порты сообщения и на разные услуги в Абонемент: первое настраивается в соответствующих ini файлах запускаемых модулей (netk.ini, HTTPRKtoSH.ini, sdmHTTPFarCards.ini), второе настраивается в ShelterConnect.ini (в секции [TranslateOperation]).
В примере ниже, алкогольная продукция ООО "бар", будет закрываться на услугу с кодом 302 Абонемент - Бар, остальные на услугу 301 - Ресторан.
Настройки r_keeper:
В r_keeper необходимо настроить дополнительный PDSinterface, направив его на второй используемый FarCards. Настройки ПДС интерфейсов будут выглядеть как показано на рис.12-13
Важно! Настройки оригинального интерфейса необходимо изменить (В частности параметр "Pass ALL Receipts XML data" обоих интерфейсов должен иметь значение "By Script")
|
Рис.12-13 Настройки интерфейсов кассового сервера |
Далее, так же необходимо задублировать интерфейсы в справочнике Интерфесы. Назначенный код нового интерфейса необходимо заполнить в соответствующем HTTPRKtoSH.ini.
Примеры настроек показаны на рис.14-15.
|
Рис.14-15 Пример настройки интерфейсов в r_keeper |
Необходимо задублировать и MCR-алгоритм, назначив новый дополнительному интерфейсу.
Далее, необходимо разделить блюда меню по параметру "Отдел ФР". Примеры блюд в справочнике Классификации блюд представлены на рис.16-17.
(Заведение нескольких отделов в r_keeper разобрано в статье)
|
Рис.16-17 Примеры настроек блюд в справочнике Клиссификации блюд |
Следующим пунктом необходимо настроить дополнительную валюту и изменить настройки основной валюты закрытия в Абонемент.
В частности в Ограничениях для валюты необходимо указать Классификацию - Отдел ФР, и выбрать необходимый отдел, заполненный на предыдущем шаге, а также указать соответствующий интерфейс.
Примеры настроек валют приведены на рис.18-19.
|
Рис. 18-19 Примеры настроек валют |
Для реализации данной схемы, необходимо наличие каких-либо принтеров на кассовой станции, для разделения закрываемых блюд.
В настройках принтеров должны быть выбраны в группе "Дополнительно" - "Классификация" принтер для случаев, в которых данный принтер не должен задействоваться.
На примере на рис.20-21 Принтер STAR используется для печати блюд ООО "бар".
|
Рис.20-21 Пример настроек принтеров кассовой станции |
После применения данных настроек, сумма к оплате данными валютами будет разделена согласно настройками, как показано на рис.22.
Для корректного закрытия в Абонемент, прийдётся предъявлять идентификатор для каждой валюты.
|
Рис.22 Пример интерфейса Быстрого чека r_keeper при использовании данных настроек |
В Абонемент будут созданы две услуги на фолио, обе из которых будут иметь корректно обрабатываемое содержимое чека. Пример фолио на которое производилось закрытие заказа с рис.22 показано на рис.23.
![]() |
Обновления
| 18.05.2018 |
Обновлена sdmHTTPFarCards.dll - уменьшено количество кликов пользователя в rKeeper. Добавлена возможность просмотра баланса по карте из основного меню кассы Rkeeper. Для поиска закрытых по идентификатору чеков в rKeeper требуется на списке закрытых чеков применить фильтр "Поиск по карте", и приложить идентификатор к считывателю. |
|
|
|
| 18.01.2019 | Из-за изменений, повлёкших ошибки при работе с версией версии r_k 7.6.2.xx, была переработана работа с кодировкой и с версии sdmHTTPFarCards.dll 1.17.0.0 параметр Shelterconnect.ini ToOEM должен быть установлен как ToOEM=0 |
| 10.02.2019 |
Обновлена ShelterConnect.dll (версия 1.2) - исправлена ошибка, когда при аннулировании/отмене чека корректирующая транзакция на фолио не корректировала закрытие. Абонемент версия 136 - поддержана передача ППР из r_k и печать в детализированном чеке закрытия на номер. |















