Impressão

Impressão

Aviso

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.

Faz-se uso da classe SmartPOSPrinterRequestBuilder.

Tipos de recibos

O plugin é capaz de imprimir recibos dos tipos abaixo:

ReceiptType.ESTABLISHMENT         // Via estabelecimento
ReceiptType.CUSTOMER              // Via cliente
ReceiptType.REPRINT_ESTABLISHMENT // Reimpressão de via do estabelecimento
ReceiptType.REPRINT_CUSTOMER      // Reimpressão de via do cliente
ReceiptType.CONSOLIDATED_REPORT   // Relatório consolidado
ReceiptType.DETAILED_REPORT       // Relatório detalhado
ReceiptType.SHIFT_REPORT          // Relatório de fechamento de turno
Informação

Para os recibos dos relatórios consolidado, detalhado e de fechamento de turno, nesse momento, é necessário receber um objeto pronto do respectivo tipo (vide Parâmetros de Entrada, mais abaixo).

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

ChaveTipoObjetivoExemplo
printDataPrinter.PrintDataObjeto contendo os dados de impressão.Printer.PrintData(transactionData = latestTransaction)
receiptTypeReceiptTypeTipo do recibo.ReceiptType.ESTABLISHMENT

Para os recibos de relatórios, deve-se usar o campo de printData respectivo de cada relatório:

  • consolidado: consolidatedReportData;
  • detalhado: detailedReportData;
  • de fechamento de turno: closedShiftsReportData.

Para os demais recibos, deve-se usar o campo transactionData.

PrintData(
    val transactionData: TransactionData? = null,
    val consolidatedReportData: ConsolidatedReportData? = null,
    val detailedReportData: DetailedReportData? = null,
    val closedShiftsReportData: ClosedShiftsReportData? = null
)

Venda/cancelamento e reimpressão de vias

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?
)