Часто в практике автоматизации торговли возникает задача по экономии кассовой ленты или переходу на полностью электронный документооборот с покупателями. Разберемся, как программно реализовать отправку чека через ОФД без физической печати на ККТ Атол, используя ДТО (Драйвер торгового оборудования).
Прежде чем приступать к программной реализации, важно понимать правовые риски. Согласно 54-ФЗ, продавец обязан выдать чек. Бумажный чек является стандартным способом исполнения этой обязанности. Переход на электронный чек допустим только при соблюдении следующих условий:
Важно помнить, что если покупатель не предоставил свои данные или потребовал бумажный чек, обязанность по печати сохраняется. Дефицит ленты не является законным основанием для отказа клиенту в выдаче чека.
Для управления режимом печати в ДТО Атол используются специальные параметры, передаваемые при формировании чека. Рассмотрим шаги, необходимые для перевода кассы в «электронный» режим.
Для корректной работы необходимо передать контактные данные покупателя в объект драйвера. Если этого не сделать, касса, скорее всего, принудительно напечатает бумажный чек, так как данные для отправки (атрибут 1008) не будут зафиксированы.
Для управления режимом печати мы используем параметр LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY. Рассмотрим структуру кода для формирования чека:
// Запись контакта покупателя для отправки электронного чека (атрибут 1008)
fptr.setParam(1008, СокрЛП(МайлТелефон));
// Режим формирования (печатать, НЕ печатать)
// Если передаем TRUE, ККТ не будет печатать бумажный чек
Если МайлТелефон <> "" Тогда
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, TRUE);
Иначе
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, FALSE);
КонецЕсли;
В данном примере мы используем метод setParam с передачей атрибута 1008, в который записывается e-mail или телефон клиента. После этого мы устанавливаем флаг LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY в значение TRUE. Это дает команду кассовому аппарату пропустить этап печати на бумажной ленте, но при этом сформировать фискальный документ и отправить его в ОФД для последующей рассылки покупателю.
Обратите внимание, что выбор канала связи влияет на стоимость услуги:
Если вы не передадите контактные данные в параметре 1008, кассовый аппарат будет работать в стандартном режиме и продолжит расходовать бумагу, так как отсутствие контактов делает невозможной электронную отправку документа. Всегда проверяйте, что данные корректно заполнены перед вызовом метода openReceipt или аналогичных функций формирования документа.
Таким образом, для реализации задуманного вам необходимо: получить явное согласие от покупателя, запросить его контактные данные, передать их в драйвер через атрибут 1008 и выставить флаг LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY. Это позволит эффективно экономить расходные материалы, соблюдая требования законодательства.