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. |