shtrih-m / javapos_shtrih

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

Штрих-Мобайл, операционные теги и 688 драйвер #158

Closed Tango600 closed 1 year ago

Tango600 commented 1 year ago

Работает ли ШМобайл с прошивкой 20041 и 688 драйвером? Без опертегов чек формируется без ошибок, но если начать записывать fsWriteOperationTag то появляется ошибка 51 при закрытии чека. Опертеги записываются после printRecItem. При записи до, происходит ошибка явно указывающая на то что этой самой RecItem нет и теги крепить не к чему. Записываются теги 1226 и 1224. ИНН в 1226, 10 цифр дополняется пробелами до 12.

02-09 17:21:17.702 W/System.err( 7450): jpos.JposException: 51, Некорректные параметры в команде 02-09 17:21:17.702 W/System.err( 7450): at com.shtrih.jpos.fiscalprinter.JposExceptionHandler.getJposExceptionWithoutDetails(JposExceptionHandler.java:8) 02-09 17:21:17.702 W/System.err( 7450): at com.shtrih.jpos.fiscalprinter.JposExceptionHandler.getJposException(JposExceptionHandler.java:1) 02-09 17:21:17.702 W/System.err( 7450): at com.shtrih.jpos.fiscalprinter.JposExceptionHandler.handleException(JposExceptionHandler.java:2) 02-09 17:21:17.702 W/System.err( 7450): at com.shtrih.jpos.fiscalprinter.FiscalPrinterService.handleException(FiscalPrinterService.java:3) 02-09 17:21:17.702 W/System.err( 7450): at com.shtrih.jpos.fiscalprinter.FiscalPrinterService.endFiscalReceipt(FiscalPrinterService.java:3) 02-09 17:21:17.702 W/System.err( 7450): at jpos.FiscalPrinter.endFiscalReceipt(FiscalPrinter.java:2) 02-09 17:21:17.702 W/System.err( 7450): at com.shtrih.fiscalprinter.ShtrihFiscalPrinter113.endFiscalReceipt(Unknown Source:2)

VitalyKravtsov2016 commented 1 year ago

Добрый день. Можно лог посмотреть?

VitalyKravtsov2016 commented 1 year ago

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

Tango600 commented 1 year ago

С какими параметрами запускать logcat ?

VitalyKravtsov2016 commented 1 year ago

Нужен вывод классов com.shtrih

vladislav-larionov commented 1 year ago

У нас такая же проблема, только на Штрих Мобайл с прошивкой 20045. Также пробовали не указывать 1226 тег, но ошибка всё равно появляется. ИНН дополняли до 12 символов. Ещё проверяли на Штрих-нано-ф, и на нём всё работает, ошибок нет. shtrih.log Код печати:

override fun ShtrihFiscalPrinter.printCheque(receipt: Receipt) {
    fiscalReceiptType = if (receipt.type == Receipt.Type.SELL) {
        FiscalPrinterConst.FPTR_RT_SALES
    } else {
        FiscalPrinterConst.FPTR_RT_REFUND
    }
    beginFiscalReceipt(true)
    writePaymentTags(receipt.tags)
    printNormal(FiscalPrinterConst.FPTR_S_RECEIPT, receipt.cheque)
    val unitName = if (receipt.type == Receipt.Type.SELL) {
        SELL_UNIT_NAME
    } else {
        REFUND_UNIT_NAME
    }
    receipt.positions.forEach { position ->
        setParameter(SmFptrConst.SMFPTR_DIO_PARAM_ITEM_PAYMENT_TYPE, position.methodType)
        setParameter(SmFptrConst.SMFPTR_DIO_PARAM_ITEM_SUBJECT_TYPE, position.subjectType)
        val vatInfo = mapToVatInfo(position.ndsType)
        printItem(
            description = position.name,
            price = position.amount.toKopeck(),
            vatInfo = vatInfo,
            unitName = unitName,
            type = receipt.type,
            quantity = (position.quantity * 1000000).toInt(),
            unitPrice = floor(position.amount.toKopeck() / position.quantity).toLong()
        )
        if (receipt.tags.containsKey(AGENT_ATTRIBUTE_TAG_ID)) {
            if (receipt.vendorInn != null) {
                fsWriteOperationTag(VENDOR_INN, receipt.vendorInn)
            }
        }
    }
    printRecTotal(receipt.totalAmount.toKopeck(), receipt.totalAmount.toKopeck(), "0")
    endFiscalReceipt(false)
    waitForPrinting()
}

private fun ShtrihFiscalPrinter.printItem(description: String, price: Long, quantity: Int = 0, vatInfo: Int, unitPrice: Long = 0,
    unitName: String, type: Receipt.Type) {
    if (type == Receipt.Type.SELL) {
        printRecItem(description, price, quantity, vatInfo, unitPrice, unitName)
    } else {
        printRecItemRefund(description, price, quantity, vatInfo, unitPrice, unitName)
    }
}
VitalyKravtsov2016 commented 1 year ago

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

VitalyKravtsov2016 commented 1 year ago

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