Основная информация

Примечание: В статье пойдет речь о связи RK6 с ПО "службы доставки" сторонних производителей. Т.е. каждый раз когда в статье упоминается "Служба доставки" имеется ввиду именно сторонее ПО, призведенное не нашей компанией.

  • Обмен информацией между БД системы доставки и R-Keeper осуществляется посредством реализации процедур импорта-экспорта определенного объема данных в CSV-файлы (разделитель «;») установленного формата (см. приложения 1 - 7).
  • Обмен файлами, предназначенными для экспорта-импорта данных осуществляется посредством размещения подготовленных файлов на специальном сетевом ресурсе (директории) на сервере в центральном офисе Компании, а также в сетевых ресурсах (директориях) серверов, установленных в подразделениях (ресторанах) Компании.
  • Указанные сетевые ресурсы должны быть доступны клиентам и серверам систем доставки и R-Keeper через ЛВС (центральный офис) и VPN каналы (подразделения (рестораны)), в том числе при подключении к указанным серверам в терминальном режиме (настройка подключения дисков).
  • Настройки функционала обмена данными системы доставки c R-Keeper: системные пути к общему и адресным сетевым ресурсам, время «сканирования» сетевых ресурсов на предмет наличия в них файлов обмена данными и прочее, - в части программной среды системы доставки выносятся в отдельный файл настроек (ini-файл).
  • Решение по способу хранения настроек функционала обмена данными системы доставки c R-Keeper в части программной среды R-Keeper определяется разработчиком ПО R-Keeper.

 

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

Приложение защищено программным лицензионным ключем (привязывается к коду ресторана), который перед использованием необходимо запросить, оплатить и получить в отделе лицензирования Компании ЮСИЭС. 

Полученный код прописывается в конфигурационном файле приложения-интерфейса (см.ниже).

 

Операции обмена данными

Выгрузка меню из RK и загрузка в службу доставки

Клиент системы доставки по некоторой команде оператора передает запрос на выгрузку данных о меню программному интерфейсу обмена информацией R-Keeper. Запрос на выгрузку данных должен передаваться посредством инициализации командной строки Windows в рамках ЛВС центрального офиса Компании.

Формирование данных для экспорта справочника «Меню» осуществляется из БД HeadOffice R-Keeper. Через некоторый промежуток времени, клиент системы доставки ищет файл Menu.csv на центральном сетевом ресурсе обмена данными.

Далее производится экспорт данных из этого файла в БД программными средствами системы доставки. Формат файла приведен в "Приложении 1".

После обработки полученного файла данных система доставки осуществляет автоматическое удаление файла Menu.csv из сетевого ресурса обмена данными.

Процедура импорта справочника «Меню» из БД "HeadOffice" R-Keeper в БД системы доставки предусматривает функции добавления новых позиций и обновления существующих. Соответствие между позициями справочника «Меню» в БД системы доставки и БД HeadOffice R-Keeper, технически устанавливается по сравнению кодов блюд в БД систем.

Выгрузка заказа

Формирование Заказов на доставку осуществляется пользователями в системе доставки.

Экспорт Заказов из БД системы доставки осуществляется по событию перевода Заказа на статус «Получен».

Клиент системы доставки формирует файл Order_New<Номер_стола>.csv, где <Номер_стола> - некоторый 4-х разрядный уникальный целочисленный идентификатор заказа, генерируемый в БД системы доставки из определенного диапазона для БД R-Keeper (например, Order_New9032.csv и OrderParts_New9032.csv), в которых находятся, соответственно, значения полей заказа и строк заказа, суффикс New – признак первоначальной выгрузки заказа в БД R-Keeper.

  • Формат файла приведен "Приложении 2". Файл выгружается в директорию сетевого ресурса обмена данными, расположенную на сервере подразделения, в зависимости от результатов маршрутизации на конкретное подразделение (ресторан) принятого Заказа в БД системы доставки.

Программное приложение, реализующее интерфейс обмена данными между системой доставки и R-Keeper со стороны R-Keeper осуществляет автоматическое периодическое сканирование адресных сетевых ресурсов на предмет наличия в них файлов импорта Заказов. При обнаружении в каком-либо адресном сетевом ресурсе выгруженных файлов Заказов осуществляется процедура импорта данных в БД R-Keeper того подразделения, в адресном сетевом ресурсе которого находился выгруженный файл Заказа. После проведения процедуры импорта, обработанные файлы удаляются из адресной директории обмена средствами программного интерфейса обмена данными R-Keeper.

Примечание: Со стороны разработчиков системы доставки возможна реализация уведомления программного интерфейса механизмов обмена данными R-Keeper о событии выгрузки Заказа посредством инициализации командной строки Windows в рамках ЛВС подразделения (ресторана) Компании.

При импорте Заказа в БД R-Keeper открывается стол, при этом:

  • Номер стола должен соответствовать параметру <Номер_стола> указанному в наименовании и составе соответствующего файла импорта;
  • Дата и время открытия стола соответствуют дате и времени Заказа, указанным в БД системы доставки;
  • Количество гостей, должно соответствовать количеству гостей в БД системы доставки.

Заказ сохраняется в БД R-Keeper в виде открытого (неоплаченного) стола с одновременной автоматической отправкой печати чеков на принтеры с распределением по цехам производства средствами системы R-Keeper. (аналог функции в R-Keeper ”сохранить заказ”).

Через установленный промежуток времени, клиент системы доставки ищет файл State_New<Номер_стола>.csv в директории адресного сетевого ресурса обмена данными на сервере в подразделении (ресторане) Компании, где <Номер_стола> - некоторый 4-х разрядный уникальный целочисленный идентификатор заказа, ранее переданный в R-Keeper в наименовании и составе соответствующего файла экспорта Заказа Order_New<Номер_стола>.csv. В этом файле может быть указан один из трех вариантов ответа от R_Keeper:

  • 1 - заказ успешно выгружен в стол <номер_стола>;
  • 0 – указанный стол <Номер_стол> уже открыт, заказ не выгружен;
  • 2 - заказ не выгружен <текст ошибки>, где <текст ошибки> - текст ошибки, генерируемой сервером приложений R-Keeper, по причине которой не был выгружен Заказ.
  • Пример файла-ответа приведен в "Приложении 3".

Примечание: Результат импорта-экспорта Заказа в систему R-Keeper отмечается в специальном информационном поле бланка Заказа в системе доставки.

  • В случае отсутствия файла с уведомлением об импорте Заказа проставляется – Заказ не получен R-Keeper
  • В случае флага «0» - Заказ получен, но не импортирован в R-Keeper;
  • В случае флага «1» - Заказ получен и импортирован в R-Keeper;
  • В случае флага «2» - Заказ получен, но не импортирован в R-Keeper. Указанный стол открыт.

Технология дальнейшей обработки Заказа в БД системы доставки в зависимости от результата процедуры выгрузки в БД R-Keeper будет прорабатываться в отдельной постановке задачи.

В случае повторной выгрузки измененного Заказа из системы доставки в R-Keeper, т.е. экспорта-импорта ранее уже выгруженного Заказа, измененный Заказ выгружается из системы доставки только в части изменения кол-ва гостей и данных о добавленных новых позициях состава Заказа (в том числе увеличения кол-ва ранее выгруженных позиций), в формате Order_Edit<Номер_стола>.csv.

Примечание: В случае увеличения кол-ва ранее выгруженных позиций состава Заказа в файле экспорта изменений в колонке «Количество» передается значение разности между старым и новым значением количества заказанной позиции.

Удаление позиций из состава Заказа, а также уменьшение количества ранее выгруженных позиций не выгружается из системы доставки и не обрабатывается системой R-Keeper. При этом программный интерфейс обмена данными системы R-Keeper должен классифицировать и обработать данный Заказ, как уже ранее выгруженный, чтобы исключить дублирования заказов в БД R-Keeper. А именно:

  • произвести изменение кол-ва гостей для соответствующего открытого стола в БД R-Keeper;
  • добавить позиции (или увеличить кол-во ранее выгруженных позиций) из состава Заказа в соответствующий открытый стол в БД R-Keeper;

По результатам импорта изменений Заказа программный интерфейс обмена данными R-Keeper возвращает файл State_Edit<Номер_стола>.csv. В этом файле может быть указан один из трех вариантов ответа от R_Keeper:

  • 1 – изменения заказа успешно выгружены в стол <номер_стола>;
  • 0 – указанный стол <Номер_стол> закрыт, изменения заказа не выгружены;
  • 2 – изменения заказа не выгружены <текст ошибки>.

Форматы файлов экспорта-импорта изменений Заказов, а также ответных результатов выгрузки этих изменений приведены в Приложениях 4 и 5. Правила маршрутизации и размещения файлов экспорта-импорта изменений аналогичны правилам первоначальной выгрузки Заказов, описанным выше.

Закрытие Заказа в системе доставки и стола в R-Keeper осуществляется средствами стандартного функционала систем и не предусматривает необходимости обмена данными.

Реализовано приложением FO_Util.exe.

Обновление меню - Getmenu.exe​ (если используется). Установка, настройка

Приложение экспортирует список блюд из базы данных RBO в текстовый файл оговоренного в техническом задании формата (Приложение 1).

  1. По отдельному запросу (например через трекер tracker.ucs.ru:8080) получить в компании "ЮСИЭС" дистрибутив данной утилиты.
  2. Распаковать в отдельный каталог.

В состав приложения входит:

  • Getmenu.exe - исполняемый файл.
  • Getmenu.ini - конфигурационный файл.
  1. Выполнить настройки в конфигурационном файле Getmenu.ini. Описание параметров Getmenu.ini:
[Options]
Database=RBO.UDB         - файл базы данных RBO
PriceName=Main           - название варианта меню, из которого брать цены
ResultFile=MENU.CSV      - название файла - результата экспорта

Приложение FO_Util.exe

Системные требования

RK6 с выделенным кассовым сервером (rkserver.exe) указанных ниже версий:

  • Общедоступная (на фтп) современная версия FO_Util.exe - работает с версией кассового сервера 6.97S и выше.

Важно: Стандартная версия FO_Utils требует лицензии.

Установка, настройка

  1. Скопировать с FTP дистрибутив ftp://ftp.ucs.ru/r-keeper/ExternalDelivery/FO_Util.7z.
  2. Распаковать в отдельный каталог

Состав приложения

  • FO_Util.exe - приложение fast-operator.
  • ExtInt.ini - основной конфигурационный файл
  • EXTINT.DLL
  • format.pp - файл настройки печати (описание см.выше)
  1. Выполнить настройки в конфигурационном файле ExtInt.ini для связи с кассовым сервером и каталогом обмена с внешней доставкой.
  • Настройки в ExtInt.ini:
Code=123456789     - Лицензионный код, привязан к коду ресторана!
Server=RLSERV      - Имя кассового сервера.
Adapter=0          - Номер адаптера NetBIOS для подключения к кассовому серверу.
Name=UNIT55        - Имя виртуальной станции. станция должна быть создана в редакторе, лицензия не нужна.
Folder=D:\Obmen\   - Путь к директории обмена с внешней доставкой.
Waiter=17          - Шифр официанта, на которого по- умолчанию будут оформляться заказы.
  • Шифр официанта (либо любого другого элемента справочника) можно посмотреть в карточке - белая цифра в правом верхнем углу.
  1. Настроить сервис печать (если необходимо). Для настройки сервис-печати используется файл format.pp - в нем можно настроить саму сервис-печать, печатаемый текст.

Редактирование Format.pp

Лучше объяснить, на примере. 

  • Допустим, в редакторе созданы следующие принтеры (в квадратных скобках указаны шифры принтеров):
Пицца[1], Горячий[2], Холодный[3], Кондитерка[4], Бар[5], Горячий Дубль[6]
  • И следующие группы сервис-печати:
Пицца[1], Горячий[2], Кондитерка[3], Холодный[4], Бар[5], Горячий-Пицца[6], Гор.-Хол.-Пицца[7], Гор-Хол[8], Перони[9], Перони2[10]б Курс[11]
  • Соответственно для печати на принтер Пицца[1] всех групп сервис-печати добавить в format.pp строку:
AddServiceCheck(1,[1,2,3,4,5,6,7,8,9,10,11]);
  • Для печати на принтер Горячий[2] всех групп сервис-печати добавить:
AddServiceCheck(2,[1,2,3,4,5,6,7,8,9,10,11]);
- и так далее, следуя аналогии. Ниже представлен пример рабочего файла:    
Procedure EnumServiceChecks; {Эта процедура вызывается один раз в начале выполнения и конфигурирует правила формирования сервис чекров}

 begin  

 {Для каждого необходимого сервис-чека нужно вызвать ADDServiceCheck. 
  Первый параметр - внутренний код принтера, второй - список групп сервис - печати, которые нужно туда отправить}

  AddServiceCheck(1,[1,2,3,4]);
  AddServiceCheck(2,[1]);
  AddServiceCheck(3,[3]);
 end;

{далее очевидные функции форматирования сервис-чеков}

Procedure PrintHeader(TableNum:String);

begin
 PrintLine('--------------------------------------');
 PrintLine('          ЗАКАЗ НА ДОСТАВКУ           ');
 PrintLine('  TABLE: '+TAbleNum);
 PrintLine('   '+ StringToDos(FormatDateTime('DD-MMM-YYYY  HH:NN',Now)));
 PrintLine('--------------------------------------');
end;

Procedure PrintDish(dishcode:String; DishNAme:String; Qnt:Double);

 begin
  PrintLine(DishCode+' '+DishName+' '+FormatFloat('###.###',Qnt));
 end;

Procedure PrintFooter;
begin
 PrintLine('====================================');
 PrintLine('');
 PrintLine('');
 PrintLine('');
 PrintLine('');
 PrintLine('');
 PrintLine('');
 PrintLine('');
 PrintLine(#27+'i'); - команда принтеру на отрез чека (ESC последовательность. в данном случае Epson совместимые принтера, 
                       ‘i’-полный отрез, ‘m’-частичный отрез)
end;
begin 
end;

 

Формат файлов обмена данными

Приложение 1 - Формат файла импорта-экспорта данных меню

В Win-кодировке:

КОД;НАИМЕНОВАНИЕ;ЦЕНА
1234;Васаби;1185,75
1235;Ролл «Калифорния»;11,5

Приложение 2 - Формат файла импорта-экспорта Заказа

В Win-кодировке:

НОМЕР СТОЛА;ДАТА;КОЛ-ВО ГОСТЕЙ;ШИФР ОФИЦИАНТА;ТИП МАГНИТНОЙ КАРТЫ
9032;06.03.2008 10:38;2;465;44
КОД ПРОДУКЦИИ;ЦЕНА;КОЛИЧЕСТВО
2013;10,5;3
2014;25,1;4

Приложение 3 - Формат файла результатов импорта-экспорта Заказа

В Win-кодировке:

1 - заказ успешно выгружен в стол 9032

Приложение 4 - Формат файла импорта-экспорта изменений Заказа

В Win-кодировке:

НОМЕР СТОЛА;ДАТА;КОЛ-ВО ГОСТЕЙ
9032;06.03.2008 10:38;2
КОД ПРОДУКЦИИ;ЦЕНА;КОЛИЧЕСТВО
2013;10,5;3
2014;25,1;4

Приложение 5 - Формат файла результатов импорта-экспорта изменений Заказа

В Win-кодировке:

0 - указанный стол 9032 закрыт, изменения заказа не выгружены