Turnos
Relatório de Turnos
O relatório de turnos é constituído por três requisições:
- para recuperar o relatório do turno atual ou previamente fechado;
- para fechar o turno, que recebe uma estrutura recuperada no request anterior;
- para recuperar uma lista de todos os turnos fechados anteriormente.
Informação
Se houver um turno previamente fechado, então lista-se o turno subsequente a partir da data/hora do último turno. Senão, lista-se todas as transações do dispositivo desde a primeira transação.
Dica
Você pode imprimir a via passando o objeto retornado para o request de impressão.
Relatório do Turno Atual ou Previamente Fechado
Parâmetros
receiptType
: Tipo de relatório.- No caso do relatório de turnos, sempre
ReceiptType.SHIFT_REPORT
.
- No caso do relatório de turnos, sempre
shiftId
: Id do turno a ser recuperado, ou nulo para turno atual.
Exemplo
val request = SmartPOSPlugin.createReportsRequestBuilder()
.receiptType(ReceiptType.SHIFT_REPORT)
.shiftId(null)
.callback(object: Callback<ReportResponse>() {
override fun onFail(error: Throwable) {
// Erro processando relatório
}
override fun onSuccess(response: ReportResponse) {
// Relatório de turno
val data = response.reportData.closedShiftsReportData
}
})
.build()
Zoop.post(request)
Retorno
data class ClosedShiftsReportData(
val issueDate: String?, // Data de emissão do relatório
val sellerName: String?, // Nome do seller
val documentType: String?, // Tipo de documento ("CPF" ou "CNPJ")
val document: String?, // Documento
val serialNumber: String?, // Número de série do terminal
val fromDate: String?, // Data de início do relatório
val toDate: String?, // Data final do relatório
val fromTime: String?, // Hora inicial do relatório
val toTime: String?, // Hora final do relatório
val transactionData: List<ClosedShiftsReportTransactionData>?, // Lista de transações do turno conforme descrito abaixo
val summary: ClosedShiftsReportSummary, // Resumo do turno conforme descrito abaixo
val transactions: List<TransactionData>? = null // Transações do turno
)
data class ClosedShiftsReportTransactionData(
val status: String?, // Estado da transação ("approved" ou "canceled")
val brand: String?, // Bandeira do cartão
val value: Int?, // Valor em centavos
val installments: Int?, // Número de parcelas
val date: String?, // Data da transação
val time: String?, // Hora da transação
val paymentType: Int?, // Inteiro, seguindo a enum class Option, descrito abaixo
val sumAmount: Int?, // Valor total de transações com este status
val transactionsAmount: Int? // Quantidade de transações
)
data class ClosedShiftsReportSummary(
val totalApproved: Int?, // Valor total aprovado
val totalCanceled: Int?, // Valor total cancelado
val totalTransactionsApproved: Int?, // Quantidade total de transações aprovadas
val totalTransactionsCanceled: Int? // Quantidade total de transações canceladas
)
enum class Option(val code: Int) {
CREDIT(0), // Crédito
DEBIT(1), // Débito
CREDIT_WITH_INSTALLMENTS(2), // Crédito parcelado
VOUCHER(3), // Voucher
PIX(4), // Pix
UNKNOWN(-1) // Desconhecido
}
Fechar o Turno Atual
Parâmetros
closedShiftsReportData
: Objeto do tipoClosedShiftsReportData
recuperado da primeira requisição.
Exemplo
val request = SmartPOSPlugin.createCloseShiftRequestBuilder()
.closedShiftsReportData(shiftsReportData)
.callback(object: Callback<Boolean>() {
override fun onFail(error: Throwable) {
// Falha ao fechar turno
}
override fun onSuccess(response: Boolean) {
if (!response) {
// Falha ao fechar turno
return
}
// Turno fechado
}
})
.build()
Zoop.post(request)
Lista de Todos os Turnos Fechados
Exemplo
val request = SmartPOSPlugin.createClosedShiftsRequestBuilder()
.callback(object: Callback<ClosedShiftsResponse>() {
override fun onFail(error: Throwable) {
// Falha ao recuperar turnos fechados
}
override fun onSuccess(response: ClosedShiftsResponse) {
if (response.shiftsList.isEmpty()) {
// Sem turnos fechados
return
}
// List de turnos
response.shiftsList
}
})
.build()
Zoop.post(request)
Retorno
response.shiftsList
: Tipo:List<ReportContext.ClosedShifts>
data class ClosedShifts(
val title: String, // Título do turno, no formato "data hora". ex: "18/05/2023 08:00"
val index: Int // Índice do turno fechado, para ser utilizado na requição de recuperar um turno previamente fechado passando o parâmetro shiftId.
)