RkPayQR - Настройки под ресторан (Печать пречека)
Перед настройкой под режим со столами сначала необходимо выполнить общие настройки в системе r_keeper_7
С настройкой под ресторан QR-код выводится на пречеке.
Соответственно, необходимо дополнить существующий макет пречека настройками под генерацию QR-кода
Настройка макета пречека
Зайти в менеджерской r_keeper_7 в пункт меню:
Настройки→ Печать → Документы и макеты
Перейти к пункту бокового меню:
Расчет с покупателем → Пречек
- Выбрать текущий макет пречека (не предустановка),или создать копию предустановки
- Дополнить название пречека значением "RkPayQR" (пример: Пречек RkPayQR)
- Перейти в дизайн макета
- В свойствах макета добавить глобальные переменные (после входа в макет сразу нажать Свойства):
printtextQR - тип “string”
printtextErr - тип “string”
ToPaySum - тип “double”
- Создать 2 Бенда, 3 Мемо как на изображении ниже:
Содержимое первого Мемо:
Обязательно указать бендам источники данных - Виртуальный и Чеки как на изображении выше
Оплата QR-кодом
Содержимое второго Мемо:
<QRProperties 150;15%>
[printtextQR]
Содержимое третьего Мемо:
Отсканируй QR-код в мобильном
приложении банка - Перейти в Мемо с параметрами QR-кода и указать следующий скрипт:
var
host,qResult, tOrder,trestGUID,tmidGUID, sumData, postData, tSum, sumToSend, strSum,code,restguid:string;
restcodeData,restguidData,midguidData,tablecodeData,stationcodeData,autoPayData:string;
autoPay,ttableCode,tstationCode,i,j,statusCode:integer;
begin
begin
printtextQR := '';
printtextErr := '';
qResult:='';
ToPaySum :=[Сумма];
host:='http://127.0.0.1:6800/terminal/Qr/';
autoPay:=1;
statusCode:=0;
tOrder := [Заказы.GUID];
ttableCode := [Заказы.Стол.Код];
tstationCode := [System.Станция.Код];
i:=Pos('{', tOrder); j:=Pos('}', tOrder);
tOrder := copy(tOrder,i+1,j-i-1);
trestGUID := [System.Ресторан.GUID];
i:=Pos('{', trestGUID); j:=Pos('}', trestGUID);
trestGUID := copy(trestGUID,i+1,j-i-1);
tmidGUID := [System.Кассовыйсервер.GUID];
i:=Pos('{', tmidGUID); j:=Pos('}', tmidGUID);
tmidGUID := copy(tmidGUID,i+1,j-i-1);
tSum := IntToStr(trunc(ToPaySum));
strSum := FloatToStr(ToPaySum);
code := inttoStr([RestaurantCode]);
sumToSend := tsum + copy(StrSum, pos('.',StrSum)+1,2);
sumData:= '?sum=' + sumToSend;
restcodeData:= '&restaurantCode=' + code;
restguidData:= '&restaurantGuid=' + trestGuid;
midguidData:= '&midServerGuid=' + trestGuid;
autoPayData:= '&autoPayment=' + IntToStr(autoPay);
tablecodeData:= '&tableCode=' + IntToStr(ttableCode);
stationcodeData:= '&stationCode=' + IntToStr(tstationCode);
//postData:= host + tOrder + sumData + restcodeData + restguidData + midguidData+autoPayData;
postData:= host + tOrder + sumData + restcodeData + restguidData + midguidData+autoPayData+tablecodeData+stationcodeData;
statusCode:=httppost(postData, 'QR', qResult);
printtextErr:='Тело запроса: '+ qResult;
if (statusCode <> 0) then
begin
if (statusCode = 400) then
begin
statusCode:=httppost(postData, 'QR change sum', qResult);
if (statusCode <> 0) then
begin
printtextQR := 'Ошибка формирования QR-кода: код ответа ' + IntToStr(statusCode);
end
else
begin
printtextQR := '<QRCODE ' + qResult + '>';
end;
end
else
begin
printtextQR := 'Ошибка формирования QR-кода: код ответа ' + IntToStr(statusCode);
end;
end
else
printtextQR := '<QRCODE ' + qResult + '>';
end;
end
host:='http://127.0.0.1:6800/terminal/Qr/'; - вместо 127.0.0.1 можно указать адрес клиента RkPayQR, если он установлен не локально
Если клиент RkPayQR находится не локально с кассовым сервером, укажите ip-адрес клиента RkPayQR в переменной "host"
autoPay:=0; - вместо значения "0" можно указать значение "1" в случае, если необходимо автоматически закрывать заказ в r_keeper_7. Для этого необходимо иметь в ресторане лицензию "R-Keeper модуль XML сохранение заказов ПО" (Lifetime), а также настроить связь с кассовым сервером в appsettings.json.
Если версия клиента ниже 1.0.3.7, то необходимо заменить строку с postData на закомментированную.
Для настройки XML-интерфейса в r_keeper_7 необходимо выполнить настройки из статьи на docs.rkeeper.ru (официальная документация)
Добавление макета пречека в схему печати
Если был дополнен уже привязанный макет пречека, то добавлять его повторно в схему печати не требуется и данный пункт настройки можно пропустить
Зайти в менеджерской r_keeper_7 в пункт меню:
Настройки→ Печать → Схемы печати
- Найти текущий макет пречека в используемой схеме печати и удалить его
- В используемой схеме печати в корне нажать ПКМ → Добавить представление документа
- В появившемся окне выбрать созданный макет Пречек RkPayQR и нажать кнопку ОК
- Убедиться, что у представления макета RkPayQR класс основного принтера имеет значение Для пречеков