Разработать десктоп-программу для взаимодействия с кассовым оборудованием (контрольно-кассовой техникой) для печати фискальных и не фискальных чеков.
Текущее ПО по взаимодействию с ККТ - ККМ сервер. По сути необходимо разработать полный аналог.
Программа должна вставать как локальный веб-сервер на определенном порту, принимать http запросы от браузера и выполнять взаимодействие с оборудованием.
На начальном этапе необходимо обеспечить поддержку оборудования следующих разработчиков:
Конкретные методы по взаимодействия с каждым оборудованием можно найти в соответствующей документации по ссылкам выше.
Минимально необходимые операции:
Печать фискальных чеков помимо приема непосредственно фискальных строк должна поддерживать печать текста с различным форматированием (размер шрифта и выравнивание), QR и штрихкода в произвольном месте чека.
Программа должна поддерживать все актуальные для данных производителей способы соединения ККТ с компьютером (com-порты, usb, эмуляция com-порта, ethernet и т.д.) и все актуальные модели ККТ.
Программа должна иметь интерфейс для настройки подключения, выполнения диагностики подключения, тестирования всех операций, а также расширенное логирование всех процессов.
Периодически ПО отказывается выполнять поданные команды c различными ошибками. Разработчик ссылается на устаревшую технику или проблемы с соединением. Почти все подобные случаи решаются физической перезагрузкой кассы или компьютера, дальше чеки пробиваются корректно.
Однако тот факт, что все наши клиенты, которые раньше имели другое кассовое ПО (от разных разработчиков), бесперебойно работали на том же оборудовании и в той же экосистеме, наводит на мысль, что проблема заключается в трудноуловимом плавающем баге самого кассового ПО, а не в оборудовании или окружении.
Ситуация усугубляется тем, что статистически ошибки возникают очень редко, из нашей статистики – в день примерно 4 ошибочных на 6200 успешных чеков, то есть проблема возникает в 0.00064% случаев. Поэтому воспроизвести или отловить этот момент очень сложно.
Т.к. данное ПО является проприетарным, а разработчик не предпринемает активных действий для решения вышеуказанных проблема, возникла необходимость в разработке собственного кассового ПО.
Для управления эмуляцией ошибок в кассе предусмотрен параметр Эмуляция ошибок ККМ в кассах ККМ.
Смоделированы сделующие ситуации:
В этом случае после оплаты и печати слипа интерфейс зависнет в бесконечной загрузке.
Решение - перезагрузка | приблуда;
В РМК выбивайте несколько билетов, после оплаты и печати первого интерфейс зависнет.
Решение - перезагрузка | приблуда;
Ситуация - все билеты и слипы вылезли, но интерфейс висит.
Решение - перезагрузка | приблуда;
При попытке отправить на печать вылезет типичная ошибка ККМ.
Решение - перезагрузить кассу, дальше - перезагрузка | приблуда;
Перед тестированием не забудте проверить, что корректно определилась касса ККМ в текущей смене (по клике на значке кассы в верхнем правом углу)