Impressão

Impressão

  • Faz-se uso da classe SmartPOSPrinterRequestBuilder.

Este SDK não tem suporte para criação de recibo de pagamento customizado. Caso o integrador queira fazer uso da impressora nesse formato, deve-se utilizar a API do fabricante com suporte do mesmo.

Observações

O plugin é capaz de imprimir recibos do tipo:
    ReceiptType {
        ESTABLISHMENT, // Via estabelecimento
        CUSTOMER, // Via cliente
        REPRINT_ESTABLISHMENT, // Reimpressão de via do estabelecimento
        REPRINT_CUSTOMER, // Reimpressão de via do cliente
        DETAILED_REPORT, // Relatório detalhado¹
        CONSOLIDATED_REPORT, // Relatório consolidado¹
        SHIFT_REPORT // Relatório de fechamento de turno¹
    }

¹Para esses fluxos, nesse momento, é necessário receber um objeto pronto do respectivo tipo.

Exemplo de Impressão

val request = SmartPOSPlugin.createPrintRequestBuilder()
                .printData(Printer.PrintData(transactionData = transactionData))
                .receiptType(ReceiptType.ESTABLISHMENT)
                .callback(object : Callback<SmartPOSPrinterResponse>() {
                    override fun onStart() {
                        handlePrintStarted()
                    }

                    override fun onSuccess(response: SmartPOSPrinterResponse) {
                        handlePrintSuccess()
                    }

                    override fun onFail(error: Throwable) {
                        handlePrinterError()
                    }

                    override fun onComplete() {
                        handlePrintFinished()
                    }

                }).build()
            Zoop.post(request)
Parâmetros de entrada
Chave Tipo Objetivo Exemplo
printData Printer.PrintData Objeto contendo os dados de impressão Printer.PrintData(transactionData = transactionData)
receiptType ReceiptType Tipo do recibo ReceiptType.ESTABLISHMENT

Referência

// Tipo do objeto a ser passado, nos casos de compra/cancelamento, sempre é passado do tipo TransactionData, os outros devem ser ignorados.
// Os tipos relacionados a relatório, são utilizados com o respectivo ReceiptType.
    PrintData(
        val transactionData: TransactionData? = null,
        val consolidatedReportData: ConsolidatedReportData? = null,
        val detailedReportData: DetailedReportData? = null,
        val closedShiftsReportData: ClosedShiftsReportData? = null
    )

    ReceiptType {
        ESTABLISHMENT("VIA ESTABELECIMENTO"),
        CUSTOMER("VIA CLIENTE"),
        REPRINT_ESTABLISHMENT("REIMPRESSAO VIA ESTABELECIMENTO"),
        REPRINT_CUSTOMER("REIMPRESSAO VIA CLIENTE"),
        DETAILED_REPORT("RELATORIO CONSOLIDADO"),
        CONSOLIDATED_REPORT("RELATORIO CONSOLIDADO"),
        SHIFT_REPORT("FECHAMENTO DE TURNO")
    }   

// Venda / Cancelamento / Reimpressão

    data class TransactionData(
    val value: Int?,
    val paymentType: Int?,
    val installments: Int?,
    val status: String?,
    val brand: String?,
    val address: String?,
    val sellerName: String?,
    val acquiring: String?,
    val pan: String?,
    val autoCode: String?,
    val documentType: String?,
    val document: String?,
    val nsu: String?,
    val date: String?,
    val hour: String?,
    val cv: String?,
    val arqc: String?,
    val aid: String?,
    val idPix: String?,
    val sellerReceipt: String?,
    val customerReceipt: String?,
    val approvalMessage: String?,
    var transactionId: String? // Id da transação
    val receiptId: String? = null, // Id do recibo, caso aplicável (hoje, apenas transações Pix)
    val pixId: String? = null, // Id do Pix
    val cardFingerprint: String? = null // Token único do cartão.
)

// Relatório consolidado

data class ConsolidatedReportData(
    val issueDate: String?,
    val sellerName: String?,
    val documentType: String?,
    val document: String?,
    val serialNumber: String?,
    val fromDate: String?,
    val toDate: String?,
    val fromTime: String?,
    val toTime: String?,
    val transactionData: List<ConsolidatedReportTransactionData>?,
    val summary: ConsolidatedReportSummary?
)

data class ConsolidatedReportTransactionData(
    val brand: String?,
    val status: String?,
    val totalValue: Int?,
    val totalTransactions: Int?
)

data class ConsolidatedReportSummary(
    val totalApproved: Int?,
    val totalCanceled: Int?,
    val totalTransactionsApproved: Int?,
    val totalTransactionsCanceled: Int?
)

// Relatório detalhado

data class DetailedReportData(
    val issueDate: String?,
    val sellerName: String?,
    val documentType: String?,
    val document: String?,
    val serialNumber: String?,
    val fromDate: String?,
    val toDate: String?,
    val fromTime: String?,
    val toTime: String?,
    val totalApproved: Int?,
    val totalCanceled: Int?,
    val approvedTransactions: List<DetailedReportTransactionData>?,
    val canceledTransactions: List<DetailedReportTransactionData>?
)


data class DetailedReportTransactionData(
    val paymentType: Int?,
    val amount: Int?,
    val date: String?,
    val time: String?,
    val brand: String?
)

// Relatório de fechamento de turno

data class ClosedShiftsReportData(
    val issueDate: String?,
    val sellerName: String?,
    val documentType: String?,
    val document: String?,
    val serialNumber: String?,
    val fromDate: String?,
    val toDate: String?,
    val fromTime: String?,
    val toTime: String?,
    val transactionData: List<ClosedShiftsReportTransactionData>?,
    val summary: ClosedShiftsReportSummary
)

data class ClosedShiftsReportTransactionData(
    val status: String?,
    val brand: String?,
    val value: Int?,
    val installments: Int?,
    val date: String?,
    val time: String?,
    val paymentType: Int?,
    val sumAmount: Int?,
    val transactionsAmount: Int?
)

data class ClosedShiftsReportSummary(
    val totalApproved: Int?,
    val totalCanceled: Int?,
    val totalTransactionsApproved: Int?,
    val totalTransactionsCanceled: Int?
)