Введение

Согласно вступившему в силу закону «54-ФЗ», контрольно-кассовая техника должна отправлять электронные версии чеков через интернет оператору фискальных данных (ОФД), а через него — в ФНС.

Поддержка всех фискальных регистраторов (ФР) под новый закон в r_keeper осуществляется на основе универсального драйвера Universal driver for fiscal printers — UniFR.dll, начиная с r_keeper 7.5.7. По своей сути UniFR является интерфейсом. Работу непосредственно с ФР осуществляет драйвер нижнего уровня.

Принципиальная схема работы: r_keeper > Фискальный Регистратор <> Оператор Фискальных Данных.

Для отправки Электронного чека при формировании чека передаются дополнительные реквизиты: почта и телефон. После оформления чека ФР связывается с ОФД и передает данные по чеку. Если передан реквизит:

  • Почта — ОФД отправляет чек на указанную почту
  • Телефон — ОФД отправляет СМС.

Новые версии драйверов находятся в актуальных дистрибутивах r_keeper, но их можно скачать и отдельно с FTP-сервера: ftp://ftp.ucs.ru/rk7/drivers/. Версия отдельных драйверов может отставать от актуальных версий r_keeper 7. Обновления драйверов выпускаются только для UniFR, Атол и Штрих.
Обратите внимание: за всю передачу данных в ОФД отвечает фискальный регистратор.

Настройка универсального драйвера

Добавьте универсальный драйвер на кассовую станцию. Для этого:

  1. Перейдите в меню Сервис > Станции и Устройства
  2. Выберите нужны кассовый сервер, а в нем — кассовую станцию
  3. Перейдите на вкладку Устройства и добавьте драйвер Universal driver for fiscal printers из группы устройств Фискальный принтер
  4. Подтвердите создание логического принтера и сделайте его активным
  5. Выберите тип фискального регистратора — FiscRegTypeID в соответствии с вашим ФР. Поле LowDriverModule заполнится автоматически

    • Настройки драйвера верхнего уровня производятся в свойствах драйвера — раздел Опции
    • Настройки драйвера нижнего уровня производятся в поле LowDriverParams. Варианты настроек драйвера нижнего уровня представлены ниже.
  6. Сохраните изменения.

Готово, универсальный драйвер фискального регистратора добавлен.  

Настройка драйвера нижнего уровня для Штриха

Для настройки драйвера для Штриха:

  1. В поле FiscRegTypeID выберите 155 SHTRIH 54
  2. В поле LowDriverParams нажмите на три точки для раскрытия параметров драйвера нижнего уровня
  3. Заполните параметры:
    • Log Level — уровень логирования:
      • 0 — Errors only
      • 1 — External function
      • 2 — All function calls
      • 3 — High level transport
      • 4 — Low level transport
      • 5 — All
    • LogRotateSize — размер в MB ограничения лога для ротации
      • Если размер лога превысит значение этого параметра, то будет произведена ротация лога
      • Если параметр ноль, то ротация по размеру не производится
    • LogRotateCount — количество логов для ротации.
      • Если параметр ноль, то ротация не производится
      • При ротации логов:
        • fpShtr54_0.LOG > fpShtr54_0.1.LOG
        • fpShtr54_0.1.LOG > fpShtr54_0.2.LOG
        • etc. до LogRotateCount.
    • Language of messages — язык сообщений. Совпадает с расширением файла локализации RUS, LAT, ENG
    • Communication protocol — протокол обмена:
      • Old — стандартный
      • Alternative — протокол ККТ 2.0
    • Connection type — интерфейс подключения:
      • COM Port — RS232
      • TCP/IP — TCP сокет. Работает начиная с версии драйвера 7.32.27.0
    • Com Port Number — номер порта RS232
    • COMbaud — скорость обмена по интерфейсу RS232
    • TCPaddress — IP адрес интерфейса TCP сокет. Работает начиная с версии драйвера 7.32.27.0
    • TCPport — порт интерфейса TCP сокет. Работает начиная с версии драйвера 7.32.27.0
    • PasswOperat — пароль кассира
    • PasswAdmin — пароль администратора
    • Cut after lines — прокрутка бумаги на N линий перед отрезом
    • DoubleWFont — номер шрифта для печати текста удвоенной ширины
    • DoubleHFont — номер шрифта для печати текста удвоенной высоты
    • LineLength — максимальная длина строки печати обычным шрифтом
    • BoldLineLength — максимальная длина строки печати жирным шрифтом
    • OFD Status Warning Timeout — время в секундах до вывода сообщения предупреждающего о том, что существует чек не отправленный в ОФД
    • OFD Status Error Timeout — время в секундах до блокировки работы, если чек не отправлен в ОФД
    • ReceiptClose8E — по умолчанию 0.
      Для совместимости с аппаратами, не поддерживающими команду FF45h.
      • Если ноль, то при наличии TaxType в Receipt, чек будет закрываться командой FF45h с СНО
      • Если не ноль, то независимо от наличия TaxType в Receipt, чек будет закрываться командой 8Eh без СНО
    • Use FN serial number as device serial number — выберите, какой номер будет использоваться:
      • Device Num — использовать номер устройства 
      • FN Num — использовать номер фискального накопителя
      • Device Num + "#" + FN Num — использовать номер девайса + решетка + номер фискального накопителя
    • Z report data with comma different counters — данные Z-отчета из разных счетчиков, например из кассы и регистра операций, через запятую
      Пример заполнения поля: CASH_RGST_72,OPER_RGST_152.
    • Prefix of the name of the cashier for the OFD — префикс имени кассира для отправки в ОФД. Используйте только в случае, если кассир не передает позицию кассира
    • Не печатать в бумажном чеке признак предмета расчета — обратите внимание: при включении этого параметра значение атрибута все равно будет зафиксировано в фискальном накопителе
    • Do not print Z-report on paper — начиная с версии драйвера fpRU_AtolDTO.7.62.72.0-10209, добавлен параметр NonPapperZReport, который позволяет не печатать Z-отчет при закрытии общей смены.

Настройка драйвера нижнего уровня для Атол

Для настройки драйвера для Атол:

  1. В поле FiscRegTypeID выберите 154 ATOL 54
  2. В поле LowDriverParams нажмите на три точки для раскрытия параметров драйвера нижнего уровня
  3. Заполните параметры:

    • Log Level — уровень логирования:
      • 0 — Errors only
      • 1 — External function
      • 2 — All function calls
      • 3 -—High level transport
      • 4 — Low level transport
      • 5 — All
    • LogRotateSize — размер в MB ограничения лога для ротации
      • Если размер лога превысит значение этого параметра, то будет произведена ротация лога
      • Если параметр ноль, то ротация по размеру не производится
    • LogRotateCount — количество логов для ротации.
      • Если параметр ноль, то ротация не производится
      • При ротации логов:
        • fpAtol54_0.LOG > fpAtol_0.1.LOG
        • fpAtol_0.1.LOG > fpAtol_0.2.LOG
        • etc. до LogRotateCount.
    • Language of messages — язык сообщений. Совпадает с расширением файла локализации RUS, LAT, ENG
    • Com Port Number — номер порта RS232
    • Baud rate — скорость обмена с RS232
    • System administrator password — пароль системного администратора [0...99999999]
    • InvertDrawerOpened — инверсия сигнала открытия денежного ящика
    • Communication password — пароль связи [0...65535]
    • Налоги — распознавание налогов из r_keeper
      • Auto — автоматическое обнаружение ФР налогов из справочника Налоги
      • Direct — индекс и секция налогов передаются в ФР без перекодировки
      • Departament — всегда передаётся налог с индексом 0, начисление налогов должно быть настроено для секции в ФР
      • TaxRateIndex — ФР сам ищет налог по секциям, используя вместо секций — индекс налога 
    • Paper width for unfiscal print— ширина нефискальной печати в символах, измеряется в миллиметрах ширины бумаги.
      Если параметр равен нулю, то драйвер пытается прочитать значение ширины печати из регистра 18h ФР. И если в регистре будет ноль, то ФР ищет ширину печати по известному индексу модели.
    • Comma separated list of disabled TLV Tags — по умолчанию пустой. Список номеров тегов, которые драйвер не будет пытаться передавать в ФР
    • OFD Status Warning Timeout — время в секундах до вывода сообщения предупреждающего о том, что существует чек, не отправленный в ОФД
    • OFD Status Error Timeout — время в секундах до блокирования работы, если чек не отправлен в ОФД
    • Fiscal documents format version — версия формата фискального документа:
      • FFD version auto — считывается с устройства 
      • FFD version 1.0
      • FFD version 1.05 — включается функционал авансового платежа и передачи ИНН кассира
      • FFD version 1.1 — not implemented yet
    • Protocol Version — версия протокола
      • 2 — протокол Атол 2.4
      • 3 — протокол Атол 3.0
    • Work without FN module. UTII mode — работа без FN модуля. Значение по умолчанию 0. Если не 0, то номера SerialNum, LastShiftNum, LastDocNum, LastReceiptNum считываются не из ФН, а из регистров ФР. Обратите внимание, что эти значения могут не совпадать с содержимым ФН и напечатанными значениями на чеке
    • Physical level — выбор порта:
      • RS232
      • TCP
    • IP adress — IP-адрес ФР
    • IP port — порт TCP ФР
    • Automatic mode — настройка предполагает работу без оператора
    • QRcodePrintingType — настройка печати QR-кода
      • AsImage — в виде картинки, определяется высотой . Необходимо наличие BarCodeGen.dll
      • Hardware — с помощью аппаратного обеспечения C1h, определяется длиной.
    • Использовать команду 87 для нефискальной печати — команда 87 используется для печати широким или высоким шрифтом нефискальной информации
    • Delay before printing — задерживать печать, если в устройстве есть бумага. Измеряется в секундах
    • Print discount in line — печать скидки в линию, а не под каждой позицией в чеке. Параметр добавлен в драйвер версии fpRU_AtolDTO.7.62.74.0-10215.7z
    • Замена наименования для ВНЕРЕАЛИЗАЦИОННЫЙ ДОХОД — впишите замену наименования
      • Если есть замена, то ФР заменит наименования блюд с признаком Внереализационный доход по требованиям Приказа ФНС России №ММВ-7-20/207 от 09.04.2018
      • Если пусто, наименование не будет заменяться.

Примечание

В r_keeper_7 реализована поддержка только протокола Атол 2.4

Настройка фискальных типов валют

Далее необходимо указать фискальные типы для различных валют в данном фискальном регистраторе. Для этого:

  1. Перейдите в меню Деньги > Валюты
  2. Выберите нужную валюту и перейдите в ее свойства
  3. Раскройте раздел Фискальные типы. В поле с используемым ФР необходимо установить соответствие между типом валюты и ее фискальным типом в фискальном регистраторе используемой модели
  4. Сохраните изменения. 

Настройка фискальных типов налогов

Далее необходимо указать фискальные типы для различных налогов в данном ФР. Для этого:

  1. Перейдите в меню Деньги > Налоги
  2. Выберите налоговую ставку
  3. Раскройте раздел Фискальные типы. В поле с используемым ФР необходимо установить соответствие между номером налога и индексом налога в фискальном регистраторе используемой модели

Для печати налогов в чеке ФР необходимо выставить в макете чека параметр Печатать налоги.

Добавление кнопки Электронный чек

Если после обновления r_keeper 7 на кассе автоматически не появилась кнопка Электронный чек, то ее необходимо добавить вручную. Для этого:

  1. Перейдите в меню Настройки > Графический интерфейс > Селекторы
  2. Выясните, какой селектор операций сейчас используются на кассовой станции с помощью справочника Использования селекторов:
    • Для быстрого чека: раскройте ветку Заказ > Селектор операций > Быстрый чек: Селектор операций и нажмите на шестеренку
    • Для обычного чека: раскройте ветку Заказ > Селектор операций > Чек: Селектор операций и нажмите на шестеренку
  3. Скопируйте селектор и вставьте с подэлементами
  4. Переименуйте селектор 
  5. В разделе Основное в поле Страница по-умолчанию выберите страницу как в оригинале
  6. Перейдите в меню Настройки > Графический интерфейс > Функциональные клавиши  
  7. Перейдите в группу Функц. Дизайн Функциональные клавиши > ФД Операции с заказом > ФД Селектор операций
  8. Сделайте копию кнопки Пользов. свойства и переименуйте ее

    Примечание

    При отсутствии группы ФД, что характерно для чистой установки версий от 7.5.5 и выше, кнопку Пользов.свойства ищите в группе Операции с заказом > Селектор операций.

  9. Добавьте созданную кнопку на одну из страниц скопированного селектора. Например, на страницу Доп с удалением предустановленной кнопки Пользов.свойства.

    Вы можете использовать страницу Селектор операций и добавить на эту страницу кнопку, но тогда необходимо изменить макет страницы селектора, добавив на макет кнопку.
  10. Добавьте новый селектор в использование
  11. Перезагрузите кассу и проверьте настройки. При нажатии на кнопку ФЗ-54 должна появиться форма для ввода реквизитов Почта, Телефон.

Для изменения заголовка окна:

  1. Перейдите в меню Настройки > Графический интерфейс > Формы
  2. Создайте копию формы Метродотель > Редактор пользовательских свойств > 1024 x 768 TS: Редактор пользовательских свойств
  3. Внесите изменения
  4. Выберите данную форму в используемой схеме форм
  5. Создайте копию предустановленной схемы формы и настройте ее использование

Готово, теперь индивидуальная форма будет отображена на экране кассы. 

Макет чека

Печать QR-кодов на чеке

Для печати QR-кода на чеке добавьте в печатный макет команды:

  • QRCode
  • QRProperties <высота>
  • Уровень коррекции QR-кода.

Например:

<QRCode>
<QRProperties 100;15%>
<QRCode  "[QRCodeField]" >

Примечание

Для корректной печати графики на принтере TM200 необходимо обновить прошивку до версии 8.05 или выше.

Ограничения

В макете чека:

  • Запрещено использовать настройку Только сумму, так как в ОФД необходимо передавать все позиции
  • Запрещено использовать настройку Использовать альт. название, если не заполнены альтернативные названия.

Диагностика проблем

Перед началом диагностики проблем, соберите логи. Если ошибка воспроизводится для диагностики необходимо:

  • Включить максимальное логирование.
    • UniFR: logLevel=All
    • fpAtol54: Log Level = Все
    • fpShtr54: Log Level = Talkative
  • Файлы логов:
    • UniFR.dll: UniFR.log
    • fpAtol54.dll: fpAtol54.log
    • fpShtr54.dll: fpShtr54.log
  • В случае если ошибка воспроизводится:
    • удалить предыдущие логи
    • воспроизвести ошибку с новым уровнем логирования
    • приложить файлы к задаче

Если ошибка не воспроизводится:

  1. Приложите логи как есть, но уровень все равно повысьте до максимального
  2. По шагам опишите, как получить ошибку
  3. Приложить скриншот ошибки.