SberQR - Настройки под фастфуд (Быстрый чек)
Перед настройкой под режим фастфуда сначала необходимо выполнить общие настройки в системе r_keeper_7
В режиме фастфуда есть два формата вывода QR-кода:
- Вывод QR-кода для оплаты на второй экран
- Печать QR-кода для оплаты на фискальном регистраторе или сервис-принтере, с передачей чека клиенту
Настройка под режим печати чека с QR-кодом
Настройка пользовательского макета
Зайти в менеджерской r_keeper_7 в пункт меню:
Настройки→ Печать → Документы и макеты
Перейти к пункту бокового меню:
Прочее → Пользовательский макет
- Создать новый макет (через правую кнопку мыши)
- Ввести название ПМ SberQR
- Перейти в дизайн макета
- В свойствах макета добавить глобальные переменные (после входа в макет сразу нажать Свойства):
printtextQR - тип “string”
printtextErr - тип “string”
test_1 - тип “string”
ToPaySum - тип “double”
- Создать 2 Бенда, 3 Мемо как на изображении ниже:
Обязательно указать бендам источники данных - Заказы и Чеки как на изображении выше
Содержимое первого Мемо:
ПЛАТИ QR-кодом
От SBER
Содержимое второго Мемо:
<QRProperties 150;15%>
[printtextQR]
Содержимое третьего Мемо:
Отсканируй QR-код в мобильном
приложении банка - Перейти в Мемо с параметрами QR-кода и указать следующий скрипт:
var
host, tOrder, PostData, Ghost, tSum, sumToSend, StrSum, restaurantcode1,code :string;
begin
begin
printtextQR := '';
printtextErr := '';
ToPaySum :=[Сумма];
host:='http://127.0.0.1:6800/terminal/Qr/';
tOrder := [Заказы.GUID];
tOrder := copy(tOrder,2,length(tOrder) - 2);
tSum := IntToStr(trunc(ToPaySum));
StrSum := FloatToStr(ToPaySum);
Code := inttoStr([RestaurantCode]);
sumToSend := tsum + copy(StrSum, pos('.',StrSum)+1,2);
PostData:= '?sum=' + sumToSend;
restaurantcode1:= '&restaurantCode=' + Code;
Ghost:= host + tOrder + PostData + restaurantcode1;
httppost(Ghost, PostData, printtextQR);
printtextErr := HttpLastErrorMessage();
if printtextQR[1] = '$' then
begin
printtextErr := copy(printtextQR, 2, length(printtextQR) - 1);
printtextQR := '';
test_1 := Ghost;
end
else
printtextQR := '<QRCODE ' + printtextQR + '>';
end;
end
Добавление пользовательского макета в схему печати
Зайти в менеджерской r_keeper_7 в пункт меню:
Настройки→ Печать → Схемы печати
- В используемой схеме печати в корне нажать ПКМ → Добавить представление документа
- В появившемся окне выбрать созданный пользовательский макет ПМ SberQR и нажать кнопку ОК
- Выставить класс основного принтера Для чеков
- Запомнить или записать код представления пользовательского макета - это понадобится при дальнейшей настройке
Настройка скрипта на форме быстрого чека
Настройка формы
Зайти в менеджерской r_keeper_7 в пункт меню:
Перейти к пункту бокового меню:
Заказ → Редактирование заказа (быстрый чек)
- Создать копию предустановленной формы Редактор заказа (быстрый чек) и назвать ее Редактор заказа (быстрый чек) SberQR. Также возможно использование уже скопированной ранее формы с другим названием
-
Перейти в редактирование формы, один раз нажать на белую зону (CheckView) и во вкладке События нажать двойной клик на пустое поле возле OnBeforeCheckViewEdit
-
Привести процедуру CheckViewOnBeforeCheckViewEdit к следующему виду:
procedure CheckViewOnBeforeCheckViewEdit(Sender: TObject; AEditType: TEditType; AObjectBef, AObjectAft: TObject; var AAllow: boolean; var AMessage: string);
var i: integer;
it: TCheckItem;
DishesList: string;
begin
////---- debug
if (SYS.ObjectInheritsFrom(TObject(AObjectAft), 'TPayLine')) then
begin
case TPayLine(AObjectAft).TransactionStatus of
tsNoTransaction: DishesList := 'tsNoTransaction';
tsCanceled: DishesList := 'tsCanceled';
tsCreated: DishesList := 'tsCreated';
tsAuthorizing: DishesList := 'tsAuthorizing';
tsAuthorized: DishesList := 'tsAuthorized';
tsConfirmed: DishesList := 'tsConfirmed';
tsVoided: DishesList := 'tsVoided';
tsDayClosed: DishesList := 'tsDayClosed';
else
DishesList := 'None';
end;
dbg.dbgprint('CVonBefCVEdit, TransactionStatus:' + DishesList + ', TPayline.Owner:' + TPayLine(AObjectAft).Owner +
', Name:' + TPayLine(AObjectAft).Name + ', Code:' + inttostr(TPayLine(AObjectAft).Code));
end;
////---- debug
if (SYS.ObjectInheritsFrom(TObject(AObjectAft), 'TPayLine')) then
if (TPayLine(AObjectAft).TransactionStatus = tsNoTransaction) and (TPayLine(AObjectAft).Code = XXXXX) then
begin
RK7.PerformRefObject(RK7.FindItemByCode(rkrefMaketSchemeDetails, YYYYY));
if gui.MessageDlgEx('Гость подвердил оплату QR ?', mtInformation, mbYes+mbNo, 'Да;Нет') = ID_No then
begin
AAllow := false;
end;
end;
end;
XXXXX заменить на код созданной валюты SberQR
YYYYY заменить на код представления пользовательского макета