shtrih-m / javapos_shtrih

Реализация JavaPOS драйвера принтера фискального регистратора для устройств Штрих-М
http://www.shtrih-m.ru
MIT License
33 stars 16 forks source link

Не работает повторная печать последнего чека #159

Closed vladislav-larionov closed 1 year ago

vladislav-larionov commented 1 year ago

При повторной печати последнего чека появляется ошибка ErrorCode: 106, ErrorCodeExtended: 0, "THere is no documents to print", time = 1 ms. Воспроизводится на Штрих Мобайл (версия ПО: A.4, сборка ПО: 20045) и на Штрих Нано ф (версия ПО: C.1, сборка ПО: 159). Если смотреть через драйвер на ПК, то платёж есть. Проблема появилась с обновлением на версию 688. На 687 проблема тоже есть. С какой конкретно версии она появилась, к сожалению, не знаю. shtrih.log

Код вызова печати:

override fun ShtrihFiscalPrinter.repeatLastCheque() {
    try {
        printDuplicateReceipt()
    } catch (exception: JposException) {
        if (exception.errorCode != RECEIPT_PRINTING_ERROR_CODE
                || exception.errorCodeExtended != DUPLICATE_ALREADY_PRINTED_ERROR_EXTENDED_CODE) {
            throw exception
        } else {
            logError(exception)
        }
    }
}
VitalyKravtsov2016 commented 1 year ago

Ошибка, сегодня исправлю.

VitalyKravtsov2016 commented 1 year ago

Поправил: https://github.com/shtrih-m/javapos_shtrih/releases/tag/689

vladislav-larionov commented 1 year ago

Ошибка с кодом 106 из описания действительно пропала. Но появилась другая - JposException. ErrorCode: 114, ErrorCodeExtended: 389, "89, Документ открыт другим оператором". При повторной попытке распечатать последний платёж появляется другая ошибка JposException. ErrorCode: 114, ErrorCodeExtended: 386, "86, Нет документа для повтора". shtrih.log

VitalyKravtsov2016 commented 1 year ago

Ошибку "86, Нет документа для повтора" выдает ФР. Задача драйвера подать команду "Повтор документа" - он это делает. В ФР не всегда есть копия последнего документа. Копия документа очищается при отмене чека или при программировании некоторых полей таблиц. Приложению проще распечатать документ из своей базы.

VitalyKravtsov2016 commented 1 year ago

Ошибка "89, Документ открыт другим оператором" возникает при попытке напечтать копию последнего чека с паролем системного администратора. Так сделано потому, что чек может быть напечатан с паролем оператора, а отчет печатается с паролем администратора. При подаче команды "Повтор документа" мы не знаем копия какого документа в ФР - там может быть отчет с гашением и для него нужен пароль администратора. Странно, что для повтора чека не подходит пароль администратора. Чтобы поправить можно в файле jpos.xml установить одинаковый пароль оператора и администратора: "operatorPassword=30" "sysAdminPassword=30"

vladislav-larionov commented 1 year ago

Ошибку 89 удалось поправить установкой одинаковых паролей оператора и администратора, спасибо.

Подскажите, пожалуйста, ошибка ErrorCode: 114, ErrorCodeExtended: 386, "86, Get error description", time = 2166 ms эквивалентна ошибке JposException. ErrorCode: 114, ErrorCodeExtended: 386, "86, Нет документа для повтора"? shtrih.log Она сразу появляется при попытке напечаталь повторный чек, без ошибки с кодом 89. На старых версиях драйвера такого поведения не было. Проблема проявилась на PAX A930 (Версия ПО: C.2, Сборка ПО: 37240). На штрих мобайл и штрих нано всё в порядке.

VitalyKravtsov2016 commented 1 year ago

Ошибка, там должно читаться описание ошибки из ФР. Сейчас поправлю.

VitalyKravtsov2016 commented 1 year ago

Поправил: https://github.com/shtrih-m/javapos_shtrih/releases/tag/690

Tango600 commented 1 year ago

Теперь ошибка Ошибка при печати X-отчёта: Attempt to invoke virtual method 'void com.shtrih.fiscalprinter.command.TextDocumentFilter.printXReport()' on a null object reference

Tango600 commented 1 year ago

Драйвер 691

VitalyKravtsov2016 commented 1 year ago

Странно, сейчас поправлю.

Tango600 commented 1 year ago

image А вот и причина.

VitalyKravtsov2016 commented 1 year ago

Поправил: https://github.com/shtrih-m/javapos_shtrih/releases/tag/692