Последние версии драйвера идут с хорошим апи. Там нет nodejs биндинга, но есть web сервер, через который можно отдавать команды или написать под себя на go, он же в тренде =) https://integration.atol.ru/api/
Очень мало инфы вообще про разработку ПО для Atol, в какой-то момент я даже не знал, что есть офф библиотека под Linux для c++ (хотя и с закрытыми исходниками). В данном репозитории просто обётка под node.js, сделанная на коленке.
Двайвер поддерживает все кассы от Atol, но тут все жестко на FPrint-22ПТК и общение через serial (задано в конструкторе Atol).
const addon = require('bindings')('addon');
const kkm = new addon.Atol('./atol/libfptr.so', 'ttyACM0', addon.ModelFPrint22PTK, addon.ProtocolAtol30);
kkm.printText("hello from node.js\n\n\n");
kkm.printFooter();
Создаёт основной объект для работы с kkm.
libPath
(string): путь к libfptr.sotty
(string): название устройства (обычно ttyACM0)model
(int):ModelFPrint22K
илиModelFPrint22PTK
(константы из пакета)protocol
(int):ProtocolAtol20
илиProtocolAtol30
(константы из пакета)
printText
(string)printFooter
()openCheck
(integer): открытие чека, принимает константу вида ChequeSellzReprot
()
Скидки на чек запрещены в старом виде. Теперь только в рамках копеек общей суммы, например от 100.83 можно отбросить до 83 копеек. Таково новое законодательство.
Т.е. метод discount() для чека в новых кассах в принципе не работает... они решили учитывать каждую позицию и чтобы не париться "что делать со скидкой на чек" просто выкинули такую фишку. Пусть разруливает народ.
Файлы взяты из официального драйвера
- вынести функции вроде put_Summ через аддон, а саму логику с проверками аргументов перенести в JS