Closed Tango600 closed 1 year ago
Дополнение: Я пробовал дописывать пробелы слева, не помогло. Очень интересный глюк.
Вроде в ФФД так и написано: 1226, ИНН поставщика | Текст | Строка | ЦЦЦЦЦЦЦЦЦЦ или ЦЦЦЦЦЦЦЦЦЦЦЦ | Да | 12 | Если ИНН имеет длину меньше 12 цифр, то он дополняется справа пробелами. Данный реквизит принимает значение «000000000000» в случае если поставщику не присвоен ИНН на территории Российской Федерации
Обычно разработчик передавая ИНН полагает что он передаёт ИНН и больше ничего, что там в кассе внутри должно быть, уже выходит за рамки нормального формата данных.
По идее драйвер должен дополнять до 12 символов. Проверю.
У меня тоже есть аналогичная проблема. Правда она проявляется на устройстве Штрих Мобайл. На устройстве Штрих Нано ф такой проблемы нет, тег 1226 добавляется в тег 1059. К ИНН добавляю пробелы до длины 12. Если не дополнить, то в Штрих Нано ф тег добавляться не будет. На Штрих Мобайл с дополнением всё равно не появляется.
Информация по Штрих Мобайл: Версия ПО: A.4 Сборка ПО: 20045 Версия ФФД: 1.05
Информация по Штрих Нано ф: Версия ПО: C.1 Сборка ПО: 159 Версия ФФД: 1.05
Функция печати чека:
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 * 1000).toInt(),
unitPrice = floor(position.amount.toKopeck() / position.quantity).toLong()
)
if (receipt.tags.containsKey(AGENT_ATTRIBUTE_TAG_ID)) {
if (receipt.vendorInn != null) {
fsWriteOperationTag(1226, receipt.vendorInn)
}
}
}
printRecTotal(receipt.totalAmount.toKopeck(), receipt.totalAmount.toKopeck(), "0")
endFiscalReceipt(false)
waitForPrinting()
}
Передаю тег в документ.
Тег не остаётся в документе, ошибок нет. Если прибавить пробелов в конец до длинны 12 символов, то тег остаётся в документе.