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.
Comando | Descrição |
---|---|
0 | Está devolvendo um valor para, se desejado, ser armazenado pela automação |
1 | Mensagem para o visor do operador |
2 | Mensagem para o visor do cliente |
3 | Mensagem para os dois visores |
4 | Texto que deverá ser utilizado como título na apresentação do menu ( vide comando 21) |
11 | Deve remover a mensagem apresentada no visor do operador (comando 1) |
12 | Deve remover a mensagem apresentada no visor do cliente (comando 2) |
13 | Deve remover mensagem apresentada no visor do operador e do cliente (comando 3) |
14 | Deve limpar o texto utilizado como título na apresentação do menu (comando 4) |
15 | Cabeç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..). | |
16 | Deve remover o cabeçalho apresentado pelo comando 15. |
20 | Deve 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. | |
21 | 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 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) | |
22 | Deve 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. |
23 | Este 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. | |
29 | Aná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. | |
30 | Deve ser lido um campo cujo tamanho está entre TamMinimo e TamMaximo. O campo lido deve ser devolvido em Buffer. |
31 | Deve 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. | |
34 | Deve ser lido um campo monetário ou seja, aceita o delimitador de centavos e devolvido no parâmetro Buffer. |
35 | Deve 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. | |
41 | Análogo ao Comando 30, porém o campo deve ser coletado de forma mascarada. |
42 | Menu 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. |