Tabela de códigos de Comando

A seguir apresentamos os valores possíveis para o parâmetro Comando e a ação que a aplicação deve executar ao recebê-lo. É importante que a automação comercial trate todos os comandos desta tabela.

ComandoDescrição
0Está devolvendo um valor para, se desejado, ser armazenado pela automação
1Mensagem para o visor do operador
2Mensagem para o visor do cliente
3Mensagem para os dois visores
4Texto que deverá ser utilizado como título na apresentação do menu ( vide comando 21)
11Deve remover a mensagem apresentada no visor do operador (comando 1)
12Deve remover a mensagem apresentada no visor do cliente (comando 2)
13Deve remover mensagem apresentada no visor do operador e do cliente (comando 3)
14Deve limpar o texto utilizado como título na apresentação do menu (comando 4)
15Cabeçalho a ser apresentado pela aplicação. Refere-se a exibição de informações adicionais que algumas transações necessitam mostrar na tela.
Um exemplo é a transação de Empréstimo do Correspondente Bancário, que em certo ponto precisa que sejam mostradas informações para o cliente detalhando o empréstimo que está sendo contratado (como Valor da parcela, vencimento, etc..).
16Deve remover o cabeçalho apresentado pelo comando 15.
20Deve apresentar o texto em Buffer, e obter uma resposta do tipo SIM/NÃO.
No retorno o primeiro caráter presente em Buffer deve conter 0 se confirma e 1 se cancela.
21Deve apresentar um menu de opções e permitir que o usuário selecione uma delas.
Na chamada o parâmetro Buffer contém as opções no formato 1:texto;2:texto;...i:Texto;...
A rotina da aplicação deve apresentar as opções da forma que ela desejar (não sendo necessário incluir os índices 1,2, ...).
Após a seleção feita pelo usuário, retornar em Buffer o índice i escolhido pelo operador (em ASCII)
22Deve apresentar a mensagem em Buffer, e aguardar uma tecla do operador. É utilizada quando se deseja que o operador seja avisado de alguma mensagem apresentada na tela.
23Este comando indica que a rotina está perguntando para a aplicação se ele deseja interromper o processo de coleta de dados ou não. Esse código ocorre quando a CliSiTef está acessando algum periférico e permite que a automação interrompa esse acesso (por exemplo: aguardando a passagem de um cartão pela leitora ou a digitação de senha pelo cliente)
Observação: É importante que a “Aplicação da Automação Comercial” não coloque “delays” ao tratar este comando. Neste ponto, algum dispositivo (pinpad, leitora de código de barras...) está efetuando algum processamento (lendo cartão/código de barras, coletando senha) e um “delay” causa atrasos no acesso aos dados do dispositivo, que pode não estar mais disponível acarretando perda de dados e erro de comunicação.
29Análogo ao comando 30, porém deve ser coletado um campo que não requer intervenção do operador de caixa, ou seja, não precisa que seja digitado/mostrado na tela, e sim passado diretamente para a biblioteca pela automação.
Um exemplo são as formas de pagamento que algumas transações requerem para identificar qual o tipo de pagamento que está sendo usado.
O valor a ser coletado refere-se ao campo indicado em TipoCampo, cujo tamanho está entre TamMinimo e TamMaximo. O campo deve ser devolvido em Buffer.
30Deve ser lido um campo cujo tamanho está entre TamMinimo e TamMaximo. O campo lido deve ser devolvido em Buffer.
31Deve ser lido o número de um cheque. A coleta pode ser feita via leitura de CMC-7, digitação do CMC-7 ou pela digitação da primeira linha do cheque.
No retorno deve ser devolvido em Buffer:
“0:”(digitação da primeira linha do cheque),
“1:”(Leitura do CMC-7) ou
“2:”(Digitação do CMC-7),
seguido do número coletado manualmente ou pela leitura/digitação do CMC-7, respectivamente.
Quando a primeira linha do cheque for coletada manualmente, o formato é o seguinte: Compensação (3), Banco (3), Agencia (4), C1 (1), ContaCorrente (10), C2 (1), Numero do Cheque (6) e C3 (1), nesta ordem. Notar que estes campos são os que estão na parte superior de um cheque e na ordem apresentada.
Sugerimos que na coleta seja apresentada uma interface que permita ao operador identificar e digitar adequadamente estas informações de forma que a consulta não seja feita com dados errados, retornando como bom um cheque com problemas.
34Deve ser lido um campo monetário ou seja, aceita o delimitador de centavos e devolvido no parâmetro Buffer.
35Deve ser lido um código em barras ou o mesmo deve ser coletado manualmente.
No retorno Buffer deve conter “0:” ou “1:” seguido do código em barras coletado manualmente ou pela leitora, respectivamente.
Cabe ao aplicativo decidir se a coleta será manual ou através de uma leitora. Caso seja coleta manual, recomenda-se seguir o procedimento descrito na rotina ValidaCampoCodigoEmBarras[1] de forma a tratar um código em barras da forma mais genérica possível, deixando o aplicativo de automação independente de futuras alterações que possam surgir nos formatos em barras.
No retorno do Buffer também pode ser passado “2:”, indicando que a coleta foi cancelada, porém o fluxo não será interrompido, logo no caso de pagamentos múltiplos, todos os documentados coletados anteriormente serão mantidos e o fluxo retomado, permitindo a efetivação de tais pagamentos.
41Análogo ao Comando 30, porém o campo deve ser coletado de forma mascarada.
42Menu identificado. Deve apresentar um menu de opções e permitir que o usuário selecione uma delas.
Na chamada o parâmetro Buffer contém as opções no formato classe
A rotina da aplicação deve apresentar as opções da forma que ela desejar (não sendo necessário incluir os índices 1,2, ..., nem códigos do campo, tipo e classe) e após a seleção feita pelo usuário, retornar em Buffer o índice i escolhido pelo operador (em ASCII).
O código das opções é a identificação (Tabela de códigos de meios de pagamento, configurações e menus) do campo da opção, ela pode ser utilizada na identificação da opção escolhida.
Dentro de cada “classe” existe a codificação de “tipos”, e cada par (classe, tipo) indica a natureza da opção. Inicialmente foi implementada apenas a identificação para as formas de pagamento. A ideia é adicionar códigos que identificam as opções do menu para possibilitar que o PDV identifique essas opções sem o auxílio do operador.
·       Classes:
o   0: Classe não definida
o   1: Forma de pagamento, tipos abaixo:
§  1: Dinheiro
§  2: Cheque
§  3: Débito
§  4: Crédito
§  5: Saque
§  6: Outra forma
Os demais menus não estão identificados. Os menus não identificados recebem o valor zerado nesses campos, indicando que ainda não houve a necessidade de classificá-los.
As classes de opção têm como objetivo definir um contexto para o qual o código que identifica o tipo de opção seja determinado. Assim, uma opção no menu é identificada sempre a partir do par tipo da opção e classe da opção.
Esse comando passa a ser utilizado quando o parâmetro adicional ItemMenuIdentificado for utilizado (Habilitação de configurações especiais). Nesse caso, o comando 21 (coleta de menu) será substituído na maior parte dos casos, sendo obrigação da aplicação estar preparada para tratar os dois comandos, quando esse parâmetro estiver habilitado.