Добавление QR-кода в макет пречека
- Перейдите в меню: Настройки > Печать > Использование схем печати. Узнайте схему печати, которая используется сейчас: приоритет снизу вверх — чем ниже, тем приоритетнее.
- Перейдите в меню: Настройки > Печать > Схемы печати
- Выберете используемую схему печати, которую узнали в прошлом пункте. Найдите документ Пречек, узнайте какой макет: номер и название сейчас используется по умолчанию.

- Перейдите в меню Настройки > Печать > Документы и макеты
- Перейдите в раздел Расчёт с покупателем и выберите пункт Пречек
- Скопируйте макет текущего пречека название и номер которого вы посмотрели в Схеме печати. Нажмите на иконку пречека правой кнопкой мышки и выберите Копировать, затем, на пустом месте Вставить

- Добавьте к названию макета DCTips
- Переведите Статус из Черновик в Активный
- Перейдите в редактирование дизайна макета, нажав левой кнопкой на ... в поле Макет или нажав дважды на [Дизайн макета]
- Внизу макета создайте новый Виртуальный бенд, для этого нажмите на белое поле правой кнопкой мыши и нажмите “Создать бенд”, после этого выберете “Виртуальный”.
Растяните мышкой бенд вниз, кликните правой кнопкой мыши и нажмите “Создать мемо”.
Растяните мемо за его края на ширину чека.
Если в бенде выше есть мемо с <EndRoll>, то нужно его перетащить мышкой ниже созданного ранее.- Бенд - блок чека, в который можно добавлять мемо.
- Мемо - поля чека выводящие информацию.

- Войдите в режим редактирования нажав правой кнопкой мышки на мемо, и выбрав пункт "Режим редактирования" и кликните по мемо левой кнопкой дважды.
В мемо вставьте нужный вариант скрипта, в зависимости от ширины макета. По умолчанию 40 символов.
Скрипт должен быть вставлен в Мемо, которое находится только в Виртуальном бенде.var sQR, wCode, sum, orderId, orgId, defaultWaiter, str, table: string; i: Integer; ch: char; begin str := [Заказы.Имястола]; sum := IntToStr(Trunc([Чеки.Сумма]-[Чеки.Оплачено])); table := ''; wCode := [Заказы.Основнойофициант.КодDCTips]; orgId := [System.Ресторан.КодресторанаDCTips]; defaultWaiter := [System.Ресторан.КодпоумолчаниюDCTips]; orderId := IntToStr(Trunc([Чеки.Номерчека])); for i := 1 to Length(str) do begin ch := str[i]; if ch = 'а' then table := table + 'a' else if ch = 'А' then table := table + 'A' else if ch = 'б' then table := table + 'b' else if ch = 'Б' then table := table + 'B' else if ch = 'в' then table := table + 'v' else if ch = 'В' then table := table + 'V' else if ch = 'г' then table := table + 'g' else if ch = 'Г' then table := table + 'G' else if ch = 'д' then table := table + 'd' else if ch = 'Д' then table := table + 'D' else if (ch = 'е') or (ch = 'ё') then table := table + 'e' else if (ch = 'Е') or (ch = 'Ё') then table := table + 'E' else if ch = 'ж' then table := table + 'j' else if ch = 'Ж' then table := table + 'J' else if ch = 'з' then table := table + 'z' else if ch = 'З' then table := table + 'Z' else if (ch = 'и') or (ch = 'й') then table := table + 'i' else if (ch = 'И') or (ch = 'Й') then table := table + 'I' else if ch = 'к' then table := table + 'k' else if ch = 'К' then table := table + 'K' else if ch = 'л' then table := table + 'l' else if ch = 'Л' then table := table + 'L' else if ch = 'м' then table := table + 'm' else if ch = 'М' then table := table + 'M' else if ch = 'н' then table := table + 'n' else if ch = 'Н' then table := table + 'N' else if ch = 'о' then table := table + 'o' else if ch = 'О' then table := table + 'O' else if ch = 'п' then table := table + 'p' else if ch = 'П' then table := table + 'P' else if ch = 'р' then table := table + 'r' else if ch = 'Р' then table := table + 'R' else if ch = 'с' then table := table + 's' else if ch = 'С' then table := table + 'S' else if ch = 'т' then table := table + 't' else if ch = 'Т' then table := table + 'T' else if ch = 'у' then table := table + 'u' else if ch = 'У' then table := table + 'U' else if ch = 'ф' then table := table + 'f' else if ch = 'Ф' then table := table + 'F' else if ch = 'х' then table := table + 'h' else if ch = 'Х' then table := table + 'H' else if ch = 'ц' then table := table + 'c' else if ch = 'Ц' then table := table + 'C' else if ch = 'ч' then table := table + 'ch' else if ch = 'Ч' then table := table + 'CH' else if ch = 'ш' then table := table + 'sh' else if ch = 'Ш' then table := table + 'SH' else if ch = 'щ' then table := table + 'sc' else if ch = 'Щ' then table := table + 'SC' else if (ch = 'ъ') or (ch = 'Ъ') then table := table + '' else if ch = 'ы' then table := table + 'y' else if ch = 'Ы' then table := table + 'Y' else if (ch = 'ь') or (ch = 'Ь') then table := table + '' else if ch = 'э' then table := table + 'e' else if ch = 'Э' then table := table + 'E' else if ch = 'ю' then table := table + 'iu' else if ch = 'Ю' then table := table + 'IU' else if ch = 'я' then table := table + 'ia' else if ch = 'Я' then table := table + 'IA' else table := table + ch; end; if (wCode = '') then wCode := defaultWaiter; if ((wCode <> '') AND (orgId <> '')) then begin sQR := 'https://tips.delivery-club.ru/pay/' + wCode + '?org='+ orgId + '&src=3&orderSum=' + sum + '&orderId=' + orderId + '&table=' + table; Memo7.text := Char(#10) + '<H2><W2>Безналичные чаевые' + Char(#10) + '<H1><W1> Чтобы оставить чаевые,' + Char(#10) + ' наведите камеру на QR-код' + Char(#10) + ' <QRCode ' + sQR + '>' + Char(#10) + ' Delivery Club Чаевые' + Char(#10) end; endCODEvar sQR, wCode, sum, orderId, orgId, defaultWaiter, str, table: string; i: Integer; ch: char; begin str := [Заказы.Имястола]; sum := IntToStr(Trunc([Чеки.Сумма]-[Чеки.Оплачено])); table := ''; wCode := [Заказы.Основнойофициант.КодDCTips]; orgId := [System.Ресторан.КодресторанаDCTips]; defaultWaiter := [System.Ресторан.КодпоумолчаниюDCTips]; orderId := IntToStr(Trunc([Чеки.Номерчека])); for i := 1 to Length(str) do begin ch := str[i]; if ch = 'а' then table := table + 'a' else if ch = 'А' then table := table + 'A' else if ch = 'б' then table := table + 'b' else if ch = 'Б' then table := table + 'B' else if ch = 'в' then table := table + 'v' else if ch = 'В' then table := table + 'V' else if ch = 'г' then table := table + 'g' else if ch = 'Г' then table := table + 'G' else if ch = 'д' then table := table + 'd' else if ch = 'Д' then table := table + 'D' else if (ch = 'е') or (ch = 'ё') then table := table + 'e' else if (ch = 'Е') or (ch = 'Ё') then table := table + 'E' else if ch = 'ж' then table := table + 'j' else if ch = 'Ж' then table := table + 'J' else if ch = 'з' then table := table + 'z' else if ch = 'З' then table := table + 'Z' else if (ch = 'и') or (ch = 'й') then table := table + 'i' else if (ch = 'И') or (ch = 'Й') then table := table + 'I' else if ch = 'к' then table := table + 'k' else if ch = 'К' then table := table + 'K' else if ch = 'л' then table := table + 'l' else if ch = 'Л' then table := table + 'L' else if ch = 'м' then table := table + 'm' else if ch = 'М' then table := table + 'M' else if ch = 'н' then table := table + 'n' else if ch = 'Н' then table := table + 'N' else if ch = 'о' then table := table + 'o' else if ch = 'О' then table := table + 'O' else if ch = 'п' then table := table + 'p' else if ch = 'П' then table := table + 'P' else if ch = 'р' then table := table + 'r' else if ch = 'Р' then table := table + 'R' else if ch = 'с' then table := table + 's' else if ch = 'С' then table := table + 'S' else if ch = 'т' then table := table + 't' else if ch = 'Т' then table := table + 'T' else if ch = 'у' then table := table + 'u' else if ch = 'У' then table := table + 'U' else if ch = 'ф' then table := table + 'f' else if ch = 'Ф' then table := table + 'F' else if ch = 'х' then table := table + 'h' else if ch = 'Х' then table := table + 'H' else if ch = 'ц' then table := table + 'c' else if ch = 'Ц' then table := table + 'C' else if ch = 'ч' then table := table + 'ch' else if ch = 'Ч' then table := table + 'CH' else if ch = 'ш' then table := table + 'sh' else if ch = 'Ш' then table := table + 'SH' else if ch = 'щ' then table := table + 'sc' else if ch = 'Щ' then table := table + 'SC' else if (ch = 'ъ') or (ch = 'Ъ') then table := table + '' else if ch = 'ы' then table := table + 'y' else if ch = 'Ы' then table := table + 'Y' else if (ch = 'ь') or (ch = 'Ь') then table := table + '' else if ch = 'э' then table := table + 'e' else if ch = 'Э' then table := table + 'E' else if ch = 'ю' then table := table + 'iu' else if ch = 'Ю' then table := table + 'IU' else if ch = 'я' then table := table + 'ia' else if ch = 'Я' then table := table + 'IA' else table := table + ch; end; if (wCode = '') then wCode := defaultWaiter; if ((wCode <> '') AND (orgId <> '')) then begin sQR := 'https://tips.delivery-club.ru/pay/' + wCode + '?org='+ orgId + '&src=3&orderSum=' + sum + '&orderId=' + orderId + '&table=' + table; Memo7.text := Char(#10) + '<H2><W2> Безналичные чаевые' + Char(#10) + '<H1><W1> Чтобы оставить чаевые,' + Char(#10) + ' наведите камеру на QR-код' + Char(#10) + ' <QRCode ' + sQR + '>' + Char(#10) + ' Delivery Club Чаевые' + Char(#10) end; endCODEvar sQR, wCode, sum, orderId, orgId, defaultWaiter, str, table: string; i: Integer; ch: char; begin str := [Заказы.Имястола]; sum := IntToStr(Trunc([Чеки.Сумма]-[Чеки.Оплачено])); table := ''; wCode := [Заказы.Основнойофициант.КодDCTips]; orgId := [System.Ресторан.КодресторанаDCTips]; defaultWaiter := [System.Ресторан.КодпоумолчаниюDCTips]; orderId := IntToStr(Trunc([Чеки.Номерчека])); for i := 1 to Length(str) do begin ch := str[i]; if ch = 'а' then table := table + 'a' else if ch = 'А' then table := table + 'A' else if ch = 'б' then table := table + 'b' else if ch = 'Б' then table := table + 'B' else if ch = 'в' then table := table + 'v' else if ch = 'В' then table := table + 'V' else if ch = 'г' then table := table + 'g' else if ch = 'Г' then table := table + 'G' else if ch = 'д' then table := table + 'd' else if ch = 'Д' then table := table + 'D' else if (ch = 'е') or (ch = 'ё') then table := table + 'e' else if (ch = 'Е') or (ch = 'Ё') then table := table + 'E' else if ch = 'ж' then table := table + 'j' else if ch = 'Ж' then table := table + 'J' else if ch = 'з' then table := table + 'z' else if ch = 'З' then table := table + 'Z' else if (ch = 'и') or (ch = 'й') then table := table + 'i' else if (ch = 'И') or (ch = 'Й') then table := table + 'I' else if ch = 'к' then table := table + 'k' else if ch = 'К' then table := table + 'K' else if ch = 'л' then table := table + 'l' else if ch = 'Л' then table := table + 'L' else if ch = 'м' then table := table + 'm' else if ch = 'М' then table := table + 'M' else if ch = 'н' then table := table + 'n' else if ch = 'Н' then table := table + 'N' else if ch = 'о' then table := table + 'o' else if ch = 'О' then table := table + 'O' else if ch = 'п' then table := table + 'p' else if ch = 'П' then table := table + 'P' else if ch = 'р' then table := table + 'r' else if ch = 'Р' then table := table + 'R' else if ch = 'с' then table := table + 's' else if ch = 'С' then table := table + 'S' else if ch = 'т' then table := table + 't' else if ch = 'Т' then table := table + 'T' else if ch = 'у' then table := table + 'u' else if ch = 'У' then table := table + 'U' else if ch = 'ф' then table := table + 'f' else if ch = 'Ф' then table := table + 'F' else if ch = 'х' then table := table + 'h' else if ch = 'Х' then table := table + 'H' else if ch = 'ц' then table := table + 'c' else if ch = 'Ц' then table := table + 'C' else if ch = 'ч' then table := table + 'ch' else if ch = 'Ч' then table := table + 'CH' else if ch = 'ш' then table := table + 'sh' else if ch = 'Ш' then table := table + 'SH' else if ch = 'щ' then table := table + 'sc' else if ch = 'Щ' then table := table + 'SC' else if (ch = 'ъ') or (ch = 'Ъ') then table := table + '' else if ch = 'ы' then table := table + 'y' else if ch = 'Ы' then table := table + 'Y' else if (ch = 'ь') or (ch = 'Ь') then table := table + '' else if ch = 'э' then table := table + 'e' else if ch = 'Э' then table := table + 'E' else if ch = 'ю' then table := table + 'iu' else if ch = 'Ю' then table := table + 'IU' else if ch = 'я' then table := table + 'ia' else if ch = 'Я' then table := table + 'IA' else table := table + ch; end; if (wCode = '') then wCode := defaultWaiter; if ((wCode <> '') AND (orgId <> '')) then begin sQR := 'https://tips.delivery-club.ru/pay/' + wCode + '?org='+ orgId + '&src=3&orderSum=' + sum + '&orderId=' + orderId + '&table=' + table; Memo7.text := Char(#10) + '<H2><W2> Безналичные чаевые' + Char(#10) + '<H1><W1> Чтобы оставить чаевые,' + Char(#10) + ' наведите камеру на QR-код' + Char(#10) + ' <QRCode ' + sQR + '>' + Char(#10) + ' Delivery Club Чаевые' + Char(#10) end; endCODEvar sQR, wCode, sum, orderId, orgId, defaultWaiter, str, table: string; i: Integer; ch: char; begin str := [Заказы.Имястола]; sum := IntToStr(Trunc([Чеки.Сумма]-[Чеки.Оплачено])); table := ''; wCode := [Заказы.Основнойофициант.КодDCTips]; orgId := [System.Ресторан.КодресторанаDCTips]; defaultWaiter := [System.Ресторан.КодпоумолчаниюDCTips]; orderId := IntToStr(Trunc([Чеки.Номерчека])); for i := 1 to Length(str) do begin ch := str[i]; if ch = 'а' then table := table + 'a' else if ch = 'А' then table := table + 'A' else if ch = 'б' then table := table + 'b' else if ch = 'Б' then table := table + 'B' else if ch = 'в' then table := table + 'v' else if ch = 'В' then table := table + 'V' else if ch = 'г' then table := table + 'g' else if ch = 'Г' then table := table + 'G' else if ch = 'д' then table := table + 'd' else if ch = 'Д' then table := table + 'D' else if (ch = 'е') or (ch = 'ё') then table := table + 'e' else if (ch = 'Е') or (ch = 'Ё') then table := table + 'E' else if ch = 'ж' then table := table + 'j' else if ch = 'Ж' then table := table + 'J' else if ch = 'з' then table := table + 'z' else if ch = 'З' then table := table + 'Z' else if (ch = 'и') or (ch = 'й') then table := table + 'i' else if (ch = 'И') or (ch = 'Й') then table := table + 'I' else if ch = 'к' then table := table + 'k' else if ch = 'К' then table := table + 'K' else if ch = 'л' then table := table + 'l' else if ch = 'Л' then table := table + 'L' else if ch = 'м' then table := table + 'm' else if ch = 'М' then table := table + 'M' else if ch = 'н' then table := table + 'n' else if ch = 'Н' then table := table + 'N' else if ch = 'о' then table := table + 'o' else if ch = 'О' then table := table + 'O' else if ch = 'п' then table := table + 'p' else if ch = 'П' then table := table + 'P' else if ch = 'р' then table := table + 'r' else if ch = 'Р' then table := table + 'R' else if ch = 'с' then table := table + 's' else if ch = 'С' then table := table + 'S' else if ch = 'т' then table := table + 't' else if ch = 'Т' then table := table + 'T' else if ch = 'у' then table := table + 'u' else if ch = 'У' then table := table + 'U' else if ch = 'ф' then table := table + 'f' else if ch = 'Ф' then table := table + 'F' else if ch = 'х' then table := table + 'h' else if ch = 'Х' then table := table + 'H' else if ch = 'ц' then table := table + 'c' else if ch = 'Ц' then table := table + 'C' else if ch = 'ч' then table := table + 'ch' else if ch = 'Ч' then table := table + 'CH' else if ch = 'ш' then table := table + 'sh' else if ch = 'Ш' then table := table + 'SH' else if ch = 'щ' then table := table + 'sc' else if ch = 'Щ' then table := table + 'SC' else if (ch = 'ъ') or (ch = 'Ъ') then table := table + '' else if ch = 'ы' then table := table + 'y' else if ch = 'Ы' then table := table + 'Y' else if (ch = 'ь') or (ch = 'Ь') then table := table + '' else if ch = 'э' then table := table + 'e' else if ch = 'Э' then table := table + 'E' else if ch = 'ю' then table := table + 'iu' else if ch = 'Ю' then table := table + 'IU' else if ch = 'я' then table := table + 'ia' else if ch = 'Я' then table := table + 'IA' else table := table + ch; end; if (wCode = '') then wCode := defaultWaiter; if ((wCode <> '') AND (orgId <> '')) then begin sQR := 'https://tips.delivery-club.ru/pay/' + wCode + '?org='+ orgId + '&src=3&orderSum=' + sum + '&orderId=' + orderId + '&table=' + table; Memo7.text := Char(#10) + '<H2><W2> Безналичные чаевые' + Char(#10) + '<H1><W1> Чтобы оставить чаевые,' + Char(#10) + ' наведите камеру на QR-код' + Char(#10) + ' <QRCode ' + sQR + '>' + Char(#10) + ' Delivery Club Чаевые' + Char(#10) end; endCODEНиже пример вставки скрипта.
Номер мемо в скрипте (Memo10) совпадает с номером редактируемого Memo, это обязательное условие для корректной работы скрипта.

- Сохраните макет, нажав ОК.
- Снова откройте текущую схему печати, название которой вы посмотрели ранее в использование схем печати, выберете текущий макет пречека, посмотрите какой Класс осн. принтера выбран, стоит ли галочка Паковать перед печатью, запомните это.

- Добавьте созданный ранее макет Пречека DCTips: нажмите на свободном месте правой кнопкой мыши, затем выберите Добавить представление документа
- Выберете раздел Расчёт с покупателем, подраздел Пречек и нажмите дважды на макет Пречек DCTips.

- В поле Класс осн. принтера выберете тот класс осн. принтера, и то состояние галочки Паковать перед печатью, которые вы запомнили ранее из старого макета.

- Удалите старый макет пречека из схемы печати, нажав на него правой кнопкой мышки, затем Удалить.

- Перейдите в настройки оборудования Сервис > Станции и Устройства и задайте в настройках всех принтеров, которые печатают пречеки размер QR-кода:
- Для каждой кассовой станции посмотрите какой принтер используется для печати пречеков
- Для этого выберете станцию, вкладка Свойства, в разделе Назначения принтеров посмотрите какой принтер используется Для пречеков, или другого класса, если в схеме печати как Класс осн. принтера указан иной класс.

- Во вкладке Принтеры найдите этот принтер и посмотрите какой модуль он использует.

Во вкладке Устройства найдите этот модуль и пропишите следующие значения:
Для термопринтеров (модуль EPSON):
QRCodeXYSize = 200 QRCodeIndent = 135CODEДля фискальных регистраторов (модуль Universal driver for fiscal printers) большинства типов:
BarcodeHeight = 200CODEДля фискальных регистраторов (модуль Universal driver for fiscal printers) типа 169 FR Atol DTO10:
BarcodeHeight = 100CODEДля фискальных регистраторов (модуль Universal driver for fiscal printers) типа 182 FR Custom:
BarcodeHeight = 50CODE
Как проверить пречек
- Под учетной записью официанта, DCTips ID которого уже внесено в менеджерскую станцию, создайте заказ и распечатайте пречек.
- На принтере распечатается пречек с QR кодом.
- При наведении камеры телефона на QR-код должна распознаваться ссылка. Ссылка должна вести на страницу с оплатой чаевых сотруднику.