Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 4069 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

  Pessoal o AcbrValidade não gera um digitoVerificador correto para esse numero

 

  205344800000

 

 Ele está gerando  "6"  o correto seria  "0"

 

  Porém se eu usar essa função abaixo vai gerar um digito correto e o ACBR consegue validar o codigo 100%  e vou conseguir imprimir e ler por qualquer Scanner

 

  Function CalculaDigEAN13(Cod: String): String;
  // Passe os 12 primeiros codigos de barras que ele retorna o codigo verificador...
   Function Par(Cod: Integer): Boolean;
   Begin
    Result := Cod Mod 2 = 0;
   End;

  Var I, SomaPar, SomaImpar: Integer;
  Begin
   SomaPar := 0;
   SomaImpar := 0;
   For I := 1 To 12 Do
    If Par(I) Then
     SomaPar := SomaPar + StrToInt(Cod)
    Else
     SomaImpar := SomaImpar + StrToInt(Cod);
   SomaPar := SomaPar * 3;
   I := 0;
   While I < (SomaPar + SomaImpar) Do
    Inc(I, 10);
   Result := IntToStr(I - (SomaPar + SomaImpar));
  End;

 

Detalhe se testei esse codigo "205344800000"

no site abaixo e também validou o mesmo e gerou digito "0"

 

http://www.gs1pt.org/servicos/digito-controlo/3/76/calculo-digito-de-controlo

 

Então acredito que deva ter algum problema com a função que gerar o digito verificador

ps  eu estou usando a ultima versão do ACBR.

Editado por luciano_f
  • Moderadores
Postado

O componente ACBrValidador é usado para VALIDAR e não para gerar o dígito.

 

Se vc informa um código com menos dígitos do que o esperado ele completa adicionando zeros no início da string e por isso dá que o dígito calculado é 6 e não 0. Se vc informar o código com 13 dígitos  o DV será calculado corretamente.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.xpos.com.br
Postado

 Testa ai para você ver se colocar um código assim "2053448000000"  ele não vai me trazer o digito verificador

 

  deveria trazer "0"  mais não traz nada

  • Moderadores
Postado

Lógico, o dígito esperado é o 0, então não será exibida nenhuma exceção, coloque qualquer outro número diferente de 0 no final e ele irá exibir o dígito correto.

 

Como já disse, o ACBrValidador é para VALIDAR informações e não para gerar dígitos, vc pode alterá-lo pra sua necessidade, mas ele não foi desenvolvido com essa finalidade.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.xpos.com.br
Postado

 Deixa eu ver se entendi ele só exibe o digito caso o código de barras seja invalido caso contrario ele só valida e não exibe o digito 

 

 então porque a propriedade para exibir o digito ?  para mim que ele iria exibir o digito em qualquer situação

  • Consultores
Postado

Só há necessidade de exibir o dígito caso ele tenha sido inserido de forma incorreta. Caso o dígito tenha sido válido, você já sabe qual é e não há necessidade do componente lhe dizer novamente.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado (editado)

 Colegas muito grato pela atenção e me desculpem pela minha ignorancia

 

 que vergonha.

 

 rs rs rs rs rs rs

Editado por luciano_f
  • Este tópico foi criado há 4069 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.