Введение

Компания Sodexo предоставляет комплексные сервисные решения, включая организацию корпоративного питания.

Sodexo использует собственную систему для учета и контроля корпоративного питания, в качестве системы автоматизации общепита используется система R-Keeper 7.

Схема работы

Взаимодействие R-Keeper с учетной системой Sodexo осуществляется посредством ретранслятора карт Farcards и специальной интерфейсной библиотеки Sodexo.dll:

Функционал библиотеки Sodexo.dll:

  • получение информации о карте (сумма, доступная для списания)
  • оплата заказа
  • отмена заказа

Важно!

Система Sodexo работает по лимитам  и не возвращает баланс по карте. Лимит рассчитывается от суммы текущего заказа - считывать карту необходимо при оплате заказа, а не во время его редактирования

Дистрибутив

Дистрибутив доступен на FTP-сервере ftp://ftp.ucs.ru/rk7/INSTALL/RK7_Sodexo

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

Для использования Sodexo.dll дополнительное лицензирования не требуется.

Формат карт Sodexo

На картах Sodexo закодировано 37-м знаков на второй дорожке, например:

1355010000000011000000637064650777777
DELPHI

С 21-го символа идет номер карты, длина номера - 10 знаков (ведущие нули можно опустить)

Примечание

Для преобразования номера карты на кассе R-Keeper v6 необходимо использовать универсальный перекодировщик FIX_LEN - параметры настройки см. ниже.

Установка

R-Keeper 7.4.xx и 6.103 и ниже

Кассовая часть R-Keeper версии 7.4.xx и версии 6.103 (и ниже) используют для взаимодействия с Farcards протокол версии 23, соответственно, для установки требуется использовать Farcards не выше версии 5.07.

Для установки необходимо:

  • загрузить с FTP ftp://ftp.ucs.ru/r-keeper/versions/PERSCARD/FARCARDS/fc507.7z дистрибутив Farcards 5.07
  • создать каталог, например \rkeeper\PDS\FARCARDS и скопировать в него содержимое дистрибутива
  • загрузить с FTP ftp://ftp.ucs.ru/r-keeper/versions/PERSCARD/netdll.7z архив с библиотеками связи и распаковать содержимое архива в рабочий каталог FARCARDS
  • загрузить с FTP ftp://ftp.ucs.ru/rk7/INSTALL/RK7_Sodexo/ дистрибутив библиотеки Sodexo.dll не ниже версии 1.0.0.9
  • распаковать содержимое дистрибутива в рабочий каталог FARCARDS

R-Keeper 7.5.xxx и 6.105 и выше

Кассовая часть R-Keeper версии 7.5.xx и версии 6.104 (и выше) используют для взаимодействия с Farcards протокол версии 29, соотв. для установки требуется использовать Farcards версии 6.01 и выше:

Для установки необходимо:

  • загрузить с FTP ftp://ftp.ucs.ru/r-keeper/versions/PERSCARD/FARCARDS/ дистрибутив актуальной версии Farcards (не ниже 6.01)
  • создать каталог, например \rkeeper\PDS\FARCARDS и скопировать в него содержимое дистрибутива
  • загрузить с FTP ftp://ftp.ucs.ru/r-keeper/versions/PERSCARD/netdll.7z архив с библиотеками связи и распаковать содержимое архива в рабочий каталог FARCARDS
  • загрузить с FTP ftp://ftp.ucs.ru/rk7/INSTALL/RK7_Sodexo/ дистрибутив библиотеки Sodexo.dll не ниже версии 1.0.0.9
  • распаковать содержимое дистрибутива в рабочий каталог FARCARDS

Документация по установке Farcards доступна в статье Установка и настройка системы ПДС.

Настройка

Farcards

Для настройки Farcards необходимо:

  • в FARCARDS.INI в секции  [FarServer] установить тип ретранслятора Type =1 и подключить библиотеку Sodexo.dll:
[FarServer]
Type = 1
DLL=Sodexo.dll
...
DELPHI
  • в FARCARDS.INI в секции [LinkDLL] подключить транспортные библиотеки для взаимодействия с кассовой системой R-Keeper:
[LinkDLL] 
1 = RTcp 
2 = pds_netk
DELPHI

Дальнейшая настройка Farcards зависит от версии кассовой системы R-Keeper и подробно описана в статье о системе ПДС.

Sodexo.dll

Параметры интерфейсной библиотеки Sodexo.dll хранятся в файле Sodexo.ini:

[Main]
LogLevel=3
PDSIdent=1

[Sodexo]
RestaurantID=1433
PosID=1328
CheckLimit=100
DELPHI

Описание параметров Sodexo.ini:
 
Секция [Main]:

  • LogLevel - уровень логирования (0..3)
  • PDSIdent - идентификатор ПДС-интерфейса, используется только для RK7,  должен соотв. значению параметра Идентификатор в свойствах интерфейса - см. раздел настройки RK7

Секция [Sodexo]:

  • RestaurantID - идентификатор ресторана, назначается и предоставляется компанией Sodexо
  • PosID - идентификатор кассовой станции (терминала), назначается и предоставляется компанией Sodexо
  • CheckLimit - предельный лимит суммы чека, задействуется в случае использования Farcards 5.07 и ниже

Для работы Sodexo.dll требуются библиотеки ssleay32.dll и libeay32.dll, которые поставляются в дистрибутиве.

Настройка r_keeper_7

Стандартная настройка системы RK7 для связи с Farcards подробно описана в документации системы ПДС, ниже приведены настройки, специфичные для связи с системой Sodexo:

  • в справочнике Сервис  Интерфейсы выбрать интерфейс [Персональная дисконтная система(ПДС)] и проверить значение параметра Идентификатор - такое же значение должно быть указано в параметре PDSIdent конфигурационного файла Sodexo.ini:
  • в справочнике Сервис ⇒ Станции и Устройства выбрать необходимый кассовый сервер и на закладке Устройства выбрать PDS-интерфейс, используемый для связи с системой Sodexo
  • в свойствах PDS-интерфейса в разделе Опции установить параметр "Look Up Card By Mail Addr" в значение Yes
  • в справочнике Деньги ⇒ Валюты создать новую валюту, например "Карта SODEXO", и установить параметры "Не в сдаче", "Без сдачи" и "Интерфейс":

Примечание

В случае создания в справочнике Сервис ⇒ Интерфейсы отдельного ПДС-интерфейса для связи с учетной системой Sodexo, необходимо указать этот интерфейс в свойствах валюты (параметр "Интерфейс")
  • в справочнике Сервис ⇒ Обработка сигналов устройств ⇒ MCR алгоритмы создать новый MCR-алгоритм на базе предустановленного алгоритма [Персональные дебетовые (ПДС)]
  • в свойствах созданного MCR-алгоритма для параметра Скрипт добавить следующий скрипт:
var 
len: int64;
str:string;

begin
if ( (pos('=', Parameter) = 0) and (length(Parameter) = 37) ) then
begin
if SYS.ObjectInheritsFrom(TObject(GUI.ActiveForm), 'TMagnCardForm') then 
begin
GUI.RKMessageDlg('Проверка баланса карты SODEXO запрещена',0,4, 100000)
//RKMessageDlg('текст',тип окна (ошибка инфо предупреждение), кнопки, время отображения)
Result := false;
RK7.PerformOperation(rkoEsc, 1);
Exit; 
end;

str:=copy(Parameter, 21, 10);
len:=StrToInt(str);
//parameter:='10007267'; //test_card
parameter:=IntToStr(len);
Result := true;
end
else
begin
Result := false;
end;
end;
DELPHI