Reimpressão

👍

Disponível a partir do Bundle Stone 7.4.5

Versão do pacote de apps Stone instalado na maquininha POS.

Requisitar uma impressão

Para requisitar a reimpressão de uma transação é necessário criar e enviar um Intent com os parâmetros abaixo:

val uriBuilder = Uri.Builder()
uriBuilder.authority("reprint")
uriBuilder.scheme("reprinter-app")
uriBuilder.appendQueryParameter("SHOW_FEEDBACK_SCREEN", "true")
uriBuilder.appendQueryParameter("SCHEME_RETURN", "reprintDeeplinkScheme")
uriBuilder.appendQueryParameter("ATK", "00000000000000")
uriBuilder.appendQueryParameter("TYPE_CUSTOMER", "MERCHANT")

val intent = Intent(Intent.ACTION_VIEW)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.data = uriBuilder.build()
startActivity(intent)

Campos utilizados para envio

Todos os campos estão em formato String e são obrigatórios

CampoDescrição
SHOW_FEEDBACK_SCREENMostrar ou não no final do fluxo a tela de sucesso ou erro
SCHEME_RETURNDetermina para onde será o retorno do deeplink. Deve ser o mesmo valor configurado no lugar da variável scheme no AndroidManifest
ATKId da transação
TYPE_CUSTOMERTipo da reimpressão: CLIENT (cliente) ou MERCHANT (lojista)

Retorno da impressão

Para conseguir o retorno do deeplink de reimpressão, pode ser utilizada a função abaixo que captura a informação que foi retornada pela Intent.

override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        if (intent != null && intent.data != null) {
            Log.d("PrintTest", intent.data.toString())
            Toast.makeText(this, intent.data.toString(), Toast.LENGTH_LONG).show()
        }
    }

Mapear retorno da impressão

Se for preciso mapear os casos de sucesso ou erro, poderá utilizar o intent.data com as seguintes possibilidades.

ResultadoDescrição
SUCCESSCaso a impressão tenha sido efetuada com sucesso
PRINTER_OUT_OF_PAPERImpressora sem papel ou com a tampa de bobina aberta
PRINTER_INIT_ERRORErro ao inicializar a impressora
PRINTER_LOW_ENERGYMáquina com baixa energia
PRINTER_BUSYImpressora ocupada, ocorre quando já está imprimindo algo
PRINTER_UNSUPPORTED_FORMATAlgum formato enviado não corresponde ao padrão de texto, imagem ou texto customizado
PRINTER_INVALID_DATALimite máximo do buffer foi ultrapassado
PRINTER_OVERHEATINGSuperaquecimento da impressora
PRINTER_PAPER_JAMPapel preso na caixa de bobina
PRINTER_PRINT_ERRORErro genérico da impressora