Перейти к основному контенту

RkPayQR - Настройки под ресторан (Печать пречека)

Перед настройкой под режим со столами сначала необходимо выполнить общие настройки в системе r_keeper_7

С настройкой под ресторан QR-код выводится на пречеке.
Соответственно, необходимо дополнить существующий макет пречека настройками под генерацию QR-кода

Настройка макета пречека

Зайти в менеджерской r_keeper_7 в пункт меню:

Настройки→ Печать → Документы и макеты

Перейти к пункту бокового меню:

Расчет с покупателем → Пречек

  1. Выбрать текущий макет пречека (не предустановка),или создать копию предустановки
  2. Дополнить название пречека значением "RkPayQR" (пример: Пречек RkPayQR)

    image-1649062055354.png

  3. Перейти в дизайн макета
  4. В свойствах макета добавить глобальные переменные (после входа в макет сразу нажать Свойства):

    printtextQR - тип “string”

    printtextErr - тип “string”

    ToPaySum - тип “double”

    image-1649064926220.png

     

  5. Создать 2 Бенда, 3 Мемо как на изображении ниже:

     

    image-1649065006470.png


    Обязательно указать бендам источники данных - Виртуальный и Чеки как на изображении выше

    Содержимое первого Мемо:
    Оплата QR-кодом
    Содержимое второго Мемо:
    <QRProperties 150;15%>
    [printtextQR]
    Содержимое третьего Мемо:
    Отсканируй QR-код в мобильном
    приложении банка
  6. Перейти в Мемо с параметрами 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

image-1649081605911.png

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 в пункт меню:

Настройки→ Печать → Схемы печати

  1. Найти текущий макет пречека в используемой схеме печати и удалить его

    image-1628861293884.png

  2. В используемой схеме печати в корне нажать ПКМ → Добавить представление документа

    image-1628778678599.png

  3. В появившемся окне выбрать созданный макет Пречек RkPayQR и нажать кнопку ОК
  4. Убедиться, что у представления макета RkPayQR класс основного принтера имеет значение Для пречеков

    image-1649065567276.png