Verificação da integridade de um código em barras

Permite, na coleta manual dos campos presentes em um código em barras, que o aplicativo faça a validação a medida que os campos estão sendo digitados, de forma a alertar o operador antecipadamente e permitir que ele corrija o erro. O formato de ativação da rotina é o seguinte:

int ValidaCampoCodigoEmBarras (Dados, Tipo)

Interface ASCII#

ValidaCampoCodigoEmBarrasA (Resultado, Dados, Tipo)
ParâmetroTipoInterface padrãoInterface ASCIIDescrição
ResultadoSaída, por valorNão usadoFixo 6Contém o resultado de resposta à chamada da rotina.
DadosEntrada, por valorchar *VariávelMensagem a ser apresentada no visor do PinPad
TipoSaída, por referênciashort *Fixo 6Informa o tipo do documento coletado segundo a seguinte codificação:

-1 → Ainda não foi possível definir o tipo
0 → Arrecadação
1 → Título

Recomendação:

É recomendável que aplicação do terminal, uma vez identificado que o documento será digitado, abra campos de coleta simulares aos presentes nos documentos a serem pagos. Para isso ela precisará identificar se é uma Ficha de Compensação/Titulo/Bloqueto ou Ficha de Arrecadação/Tributos. Essa identificação pode ser feita mediante uma pergunta ao operador ou através da rotina aqui descrita.

Se o usuário optar pelo reconhecimento automático ele deve abrir um campo como se fosse de Arrecadação e, a cada digito fornecido pelo operador, passar os dígitos já fornecidos para a rotina.Esse procedimento deve ser feito até o momento que a rotina devolver se o documento em questão é um Título ou Arrecadação. Nesse momento a aplicação não precisa mais chamar a rotina a cada dígito fornecido e deve, se necessário, modificar a formatação dos campos para captura.

Além da identificação do tipo do documento a rotina faz a consistência dos dígitos verificadores, retornando para aplicação se existe um erro e onde ele está localizado. A aplicação pode chamar a rotina passando os campos à medida que eles forem sendo coletados ou no final da coleta, onde será feita uma análise global do conteúdo digitado. Se a chamada for durante a digitação, os pontos corretos são:

  • Arrecadação: a cada um dos 4 blocos de digitação
  • Títulos: a cada grupo de dois blocos de digitação

No retorno a rotina devolve 0 se tudo estiver correto até o momento, -1 se for um código em barras não reconhecido ou um número de 1 a 4 indicando qual o campo está incorreto ou ainda o valor 5 para indicar que o número como um todo não está correto.

Exemplificamos a seguir como a aplicação do terminal deveria proceder, na forma mais genérica possível hoje em dia, para coletar um documento. No exemplo utilizaremos um título e deixaremos a automação ser informada que é esse tipo de documento. O documento que será utilizado é o seguinte:

23790.09505.91211.369656.04025.039209.1.17690000005625#

--------

Campo aberto pela automação

--------
2

Após a digitação do primeiro número chama a rotina passando “2” como parâmetro. No retorno a rotina devolveu o resultado 0 e Tipo = 0 (fictício pois nesse momento, para a configuração atual de códigos em barra, ela já teria feito a identificação)

--------
23

Após a digitação do primeiro número chama a rotina passando “23” como parâmetro. No retorno a rotina devolveu o resultado 0 e Tipo = 1

--------
2379009505

A automação reapresenta os campos já sabendo que é um título. Somente após a digitação do primeiro grupo de números ela chama a rotina passando “2379009505” como parâmetro. No retorno a rotina continua a devolver Tipo = 1. Já o resultado poderá ser 0, indicando que o bloco está correto ou 1 indicando que ele está errado.

--------
237900950591211369656

A automação continua a coletar os dígitos e somente após a digitação do segundo grupo de números ela chama a rotina passando “237900950591211369656” como parâmetro. No retorno a rotina continua a devolver Tipo = 1. Já o resultado poderá ser 0, indicando que os blocos estão corretos ou 1 ou 2 indicando que o primeiro ou o segundo bloco está errado.

--------
23790095059121136965604025039209191211

A automação continua a coletar os dígitos chamando a rotina no final do terceiro bloco com os dados 237900950591211369656 e no final do quarto bloco com todos os dados digitados. No retorno a rotina continua a devolver Tipo = 1 e o resultado refletirá a situação de erro ou não dos blocos passados como parâmetro. Em particular, se retornar o código 5 é porque existe algum dos blocos (não é possível identificar qual deles) com erro.

Finalizando, a automação também pode para efeito de consistência do código em barras optar por conferi-los apenas no final da digitação de todos os campos. Nesse caso, a rotina devolverá 1, 2, 3 ou 4 nessa ordem de prioridade caso encontre um ou mais blocos com erro e 5 na situação dos blocos internos estarem certos, mas o número como um todo possui algum erro.