Описание интерфейса связи 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.

1. Зайти в меню Сервис – Кассовые станции и устройства. Добавить устройство: PDS interface#1. См. Рис. 2
Параметр PDS Server Name = rkfcab – имя сервера FarCard, через который будет обеспечиваться связь с системой Абонемент.
Внимание! LookupCardByMailAddr = YES
Mail Addr Type Kind = 2
Если параметр Pass All Receipts XML data установить Yes Always (fail if impossible) то при закрытии на любую валюту этот заказ будет передаваться в Абонемент. Для этого должны быть сделаны соответствующие настройки в ShelterConnect.ini и в настройках программы. Не рекомендуемая схема работы.
Если PDS interface#1 уже есть, то рекомендуется его удалить и добавить новый.

Рис.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;
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;
 

Рис5. MCR алгоритмя для Mifare карт без ограничения по длине номера.

 
Пример скрипта для карт 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. Завести валюту: «На Фолио в АБ». (Рис.6) Так же можно установить наценку для чаевых и  чаевые будут передаваться в Абонемент и отдельно там фиксироваться  - НЕ ТЕСТИРОВАЛОСЬ.
Важно обратить внимание на заполнение полей:
- Без сдачи – флаг установлен
- Доп инфо с клавиатуры – флаг установлен
-Автозаполнение – Вся сумма + подтверждение.
Формат доп инфо - символ F и решетки.(F#########). Символ F является ключевым, для определения типа идентификатора FOLIO.
- Не учитывать в потратах ПДС – флаг должен быть снят.

Рис 6. Свойства валюты.

 

Настройки FarCards. 

FarCards устанавливается на любом компьютере в одной сети с кассой и кассовым сервером. Если модуль лицении прописан в одном ключе с Абонементом, то FarCards обязательно устанавливается на машину, где установлен этот ключ, как правило это сервер. Более подробную инструкцию по установке FarCards можно найти тут http://support.ucs.ru/ru/node/6673#header-10
Принтскрины запушенного окна FarCards отображены на Рис.7.
 
 
Рис 7. FarCards
 
Пример настройки ini файлов. 
 
FARCARDS.INI
[FarServer]
Type = 1
DLL = sdmHTTPFarCard.dll
Gate = 1
log = 30
XMLCP=1251
 
[LinkDLL]
1 = pds_netk
 
[pds_netk]
NetServerName=rkfcab
ininame=netk.ini
 
NETK.INI:
[netkern]
TESTMESSAGES=0
protocols=tcpsoc.dll
[TCPSOC]
port=2234
 

Настройка sdmHTTPFarCard.dll

FarCards обращается к sdmHTTPFarCard.dll, которая должна находиться в папке с FarCards. sdmHTTPFarCard.dll защищена ключом защиты UCS Shelter. Этот ключ должен физически находиться на машине, где запущен FarCards. В случае связи с ПО Абонемент  или гостиничной системой Shelter, можно воспользоваться одним ключом, если FarCards запущен на одном сервере с Shelter или Абонемент.
Настройки осуществляются в файле HTTPFarCard.ini. Ниже приведен его пример. В данных настройках sdmHTTPFarCard.dll обращается к TCP/IP серверу, который запущен на машине 198.154.196.224 и слушает 2277 порт. В секции [PARAMS] задаются параметры, которыми обворачивается XML запрос. В Настройках TCP/IP сервера, могут использоваться аналогичные параметры, например для определения «свой/чужой». В файле HTTPFarCards1.log ведется логирование XML команд.
SdmHTTPFarCard.dll передает данные на TCP/IP сервер/ Для интеграции с Абонементом используется HTTPRKtoSH.exe
 
Настройки осуществляются в файле HTTPFarCard.ini:
[PARAMS]
  ClientCode = HOTEL 
  UserCode = UCS
  UserPwd = 12345
  LangCode = RU
 
[SERVER]
  Host =198.154.196.224 
  Port =2277
 
[LOG]
  FileName=HTTPFarCards1.log
  Level = 100
  DebugLevel = 100
 
 

Настройка HTTPRKtoSH.exe

HTTPRKtoSH.exe является сервером, который слушает TCP/IP и обрабатывает XML запрос от sdmHTTPFarCard.dll.  HTTPRKtoSH.exe по умолчанию всегда вызывает функции ShelterConnect.dll, которая должна находить в одной директории с ним. Основные настройки осуществляются в файле HTTPRKtoSH.ini
[SERVER]
  Port = 2277
   ;порт на который передает данные   sdmHTTPFarCard.dll. 
 
RKInterfaceID=7
  ;код  интерфейса RKtoAbonement. Настраивается  меню Сервис – Интерфейсы. Добавить новый интерфейс.
 
 AllCheckToHotel = 1  
                                    
  IdentPhysType = 2
 
  Autostart = 1
  Autohide =1
 
[LOG]
  FileName =  C:\UCS\HTTPtoAB\LOG\HTTPRKtoSH.log
 
  Level = 100
  DebugLevel =100
 
  ByMonthes = 1
  ByDays = 1
  ByHours = 1
 
 

Настройка ShelterConnect.ini

ShelterConnect.ini - настроечный файл ShelterConnect.dll, который управляет тем, в каком формате данные будут переданы во внешнюю систему.
Пример содержимого файла (параметры без комментариев изменению не подлежат):
[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 требуется на списке закрытых чеков

применить фильтр "Поиск по карте", и приложить идентификатор к считывателю.

30.07.2018

Обновлена sdmHTTPFarCards.dll (версия 1.2.0.10)- исправлена кодировка отображения кириллицы в имени гостя получаемом, при прокатывании карты в rKeeper.

(В Shelterconnect.ini необходимо установить параметр  ToOEM = 1)

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 и печать в детализированном чеке закрытия на номер.