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

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

  7. Добавьте к названию макета DCTips
  8. Переведите Статус из Черновик в Активный
  9. Перейдите в редактирование дизайна макета, нажав левой кнопкой на ... в поле Макет или нажав дважды на [Дизайн макета]
  10. Внизу макета создайте новый Виртуальный бенд, для этого нажмите на белое поле правой кнопкой мыши и нажмите “Создать бенд”, после этого выберете “Виртуальный”.
    Растяните мышкой бенд вниз, кликните правой кнопкой мыши и нажмите “Создать мемо”.
    Растяните мемо за его края на ширину чека.
    Если в бенде выше есть мемо с <EndRoll>, то нужно его перетащить мышкой ниже созданного ранее.
    • Бенд - блок чека, в который можно добавлять мемо.
    • Мемо - поля чека выводящие информацию.
  11. Войдите в режим редактирования нажав правой кнопкой мышки на мемо, и выбрав пункт "Режим редактирования" и кликните по мемо левой кнопкой дважды.
  12. В мемо вставьте нужный вариант скрипта, в зависимости от ширины макета. По умолчанию 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;
    end
    CODE
    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;
    end
    CODE
    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;
    end
    CODE
    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;
    end
    CODE

    Ниже пример вставки скрипта.

    Номер мемо в скрипте (Memo10) совпадает с номером редактируемого Memo, это обязательное условие для корректной работы скрипта.

  13. Сохраните макет, нажав ОК.
  14. Снова откройте текущую схему печати, название которой вы посмотрели ранее в использование схем печати, выберете текущий макет пречека, посмотрите какой Класс осн. принтера выбран, стоит ли галочка Паковать перед печатью, запомните это.
  15. Добавьте созданный ранее макет Пречека DCTips: нажмите на свободном месте правой кнопкой мыши, затем выберите Добавить представление документа
  16. Выберете раздел Расчёт с покупателем, подраздел Пречек и нажмите дважды на макет Пречек DCTips.

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

    • Для термопринтеров (модуль EPSON):

      QRCodeXYSize = 200 QRCodeIndent = 135
      CODE
    • Для фискальных регистраторов (модуль Universal driver for fiscal printers) большинства типов:

      BarcodeHeight = 200
      CODE
    • Для фискальных регистраторов (модуль Universal driver for fiscal printers) типа 169 FR Atol DTO10:

      BarcodeHeight = 100
      CODE
    • Для фискальных регистраторов (модуль Universal driver for fiscal printers) типа 182 FR Custom:

      BarcodeHeight = 50
      CODE

Как проверить пречекLink to Как проверить пречек

  1. Под учетной записью официанта, DCTips ID которого уже внесено в менеджерскую станцию, создайте заказ и распечатайте пречек.
  2. На принтере распечатается пречек с QR кодом.
  3. При наведении камеры телефона на QR-код должна распознаваться ссылка. Ссылка должна вести на страницу с оплатой чаевых сотруднику.