gifts2017

Вывод общей скидки в чеке

Опубликовал Виталий Сухарев (itgro) в раздел Оборудование - Фискальный регистратор

Как вывести общую скидку на чек, используя только штатные средства 1с (на примере ФР от Штрих-М и конфигурации Управление Торговлей 10.3)

Думаю многим приходилось работать с подарочными картами и реализовывать их учет в своей конфигурации. В большинстве найденных мной реализаций подарочные сертификаты учитывались как оплата за товар и пробивались на чеке соответсвующим образом. В нашем случае ПС рассмаотривался как единоразовая скикда на товар при продаже данного товара. Задача состояла в том, чтоб вывести общую скидку на товар, равную велечине подарочного сертификата. При этом скидка должна была вычитываться из итогов чека.

 

Проанализировал тот функционал, что есть в УТ 10.3 стало понятно, что имеющимися средставми без доработок вывести скидку на чек невозможно. После изучения интерфейса драйвера для 1с от штрих-и и протокола ФР было принято решение использовать для вывода скидки команду в 16 записи.

 

Для вывода скидки были внесены изменения в функцию ПечатьЧека(Идентификатор, Пароль, НомерЧека, НомерСмены, ОписаниеЧека, СуммаНал, СуммаБезнал, ПризнакВозврата), находящуюся в общем модуле обработки ТОСервер.

В данной функции перед коммандой ЗакрытьЧек(...) было добавлено выполнение команды к фискальному регистратору:

КомандаВыполнена = Объект.Драйвер.DeviceControlHEX(Объект.ИДУстройства, КомандаКВыполнению, РезультатКоманды);

DeviceControlHEX возвращает истина в случае успешного выполнения, в переменную РезультатКоманды возвращается ответ от ФР в виде 16 строки.

Теперь нам нужно сгенерировать команду для назначения скидки. В соответсвии с документацией длина команды составляет 54 байта. Приведу подробное описание команды:

КомандаКВыполнению = "86" //код команды на назначение скидки
    + " 00 00 00 00" // пароль кассира (число) задом наперед (4 байта)
    + " 00 00 00 00 00" //здесь должна быть сумма в мде в 16 записи задом наперед (5 байт)
    + " 00" //использование налога 1  (0 не использовать, 1-4 № налоговой группы)
    + " 00" //использование налога 2  (0 не использовать, 1-4 № налоговой группы)
    + " 00" //использование налога 3  (0 не использовать, 1-4 № налоговой группы)
    + " 00" //использование налога 4  (0 не использовать, 1-4 № налоговой группы)
    + " 00 00 00 00 00 00 00 00 00 00"  //текст    (          )
    + " 00 00 00 00 00 00 00 00 00 00"  //текст    (          )
    + " 00 00 00 00 00 00 00 00 00 00"  //текст    (          )
    + " 00 00 00 00 00 00 00 00 00 00"; //текст    (          )

МДЕ здесь означает минимальная денежная еденица, т.е. сумму надо передавать в копейках. Пример строки для суммы скидки в 370 рублей: "88 90 00 00 00". Пример пароля касиира 30: "1E 00 00 00". В последние четыре строки нужно посимвольно ввести выводимый текст, где вместо 00 нужно подставить корректный код символа. Код можно посмотреть в обычной таблице символов windows, выбрав в данной таблице для просмотра system.

Данную команду можно выполнить многократно, при каждом выполнении в чек будет добавляться новая скидка.

 

P.S. Штрих-М выпустило обновление драйвера, в котором вывод скидки теперь можно сделать через печать нефискальной строки, пример команды:

Объект.Драйвер.НапечататьНефискСтроку(Объект.ИДУстройства, "&discount;100;0;0;0;0;Скидка 100 руб;");

Формат строки для вывода скидки должен быть следующим: "&discount;Сумма;Налог1;Налог2;Налог3;Налог4;Текст;".

Версия драйвера, с которой работает данная команда: 4.10_312

Ссылка на скачку: https://cloud.mail.ru/public/916fda3cda3a/DrvFR_4.10_312.exe

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа