10. Печать чека (без UI)
Перед печатью чека необходимо запросить разрешение на печать "ru.modulkassa.pos.permission.PRINT_CHECK"
у пользователя и подключиться к сервису МодульКассы.
Теперь можно отправлять чек на печать:
val baseCheck = Check(
id = UUID.randomUUID().toString(),
docType = DocumentType.SALE,
employee = "Иванов Иван Иванович",
printReceipt = true,
email = "some@email.ru",
inventPositions = listOf(
InventPosition(
name = "Материнская плата AS—Rock H32M R3.0, Socket1150, iH81, 2DDR3, PCI-Ex16, 2SATA2, 2SATA3",
price = BigDecimal("200"),
barcode = "2880000023757",
vatTag = 1103,
quantity = BigDecimal.ONE,
measure = "pcs",
inventCode = "2880000023757"
),
InventPosition(
name = "Жесткий диск",
price = BigDecimal("100"),
barcode = "2880000023757",
vatTag = 1103,
quantity = BigDecimal.ONE,
measure = "pcs",
inventCode = "2880000023757"
)
),
moneyPositions = listOf(MoneyPosition(
paymentType = CARD,
sum = BigDecimal("300")
)),
taxMode = COMMON
)
printCheck.setOnClickListener {
modulkassa?.let {
PrintCheckAction(baseCheck)
.execute(it, object : ActionCallback<FiscalInfo> {
override fun succeed(result: FiscalInfo?) {
runOnUiThread {
Toast.makeText(this@MainActivity, "Printed - $result",
Toast.LENGTH_LONG).show()
}
}
override fun failed(message: String, extra: Map<String, Any>?) {
runOnUiThread {
Toast.makeText(this@MainActivity, "$message", Toast.LENGTH_LONG).show()
}
}
})
}
}
В чеке можно указать не более двух MoneyPosition
, причем оплата с типом PaymentType.CARD
может быть только одна. В таком случае сумма денежных позиций должна совпадать с суммой товаров по позициям, иначе при регистрации чека вернется ошибка.
Внимание! Используя данный вариант печати чека, необходимо дополнительно позаботиться об обработке возникающих ошибок, визуализации процесса регистрации чека и отображении логики разрешения коллизий (повторить/отменить оплату и т.д.). Кроме того, при указании типа оплаты безналичными обращение к внешнему эквайрингу не предусмотрено - заложена только регистрация чека в ККТ, без принятия платежных транзакций.