Jump to content
Notícias do ACBr

click.png

click.png

click.png

logo_acbr_paygo.png

TEF ACBr PayGo
Seja um revendedor e ofereça uma solução completa para seu cliente.


Saiba mais

beneficios.png

click.png

click.png

click.png

click.png

click.png

click.png

Validador EAN ou GTIN


Go to solution Solved by Daniel Simoes,
  • Este tópico foi criado há 1084 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui

Recommended Posts

  • Consultores

Boa tarde. 

 Não entendi sua segunda postagem, de qualquer forma ainda não tem nada nos planos de curto prazo para essa implementação.

Att.

  • Like 1
Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Moderadores
35 minutos atrás, Helio Beltrao Jr. disse:

Boa tarde,

Foi porque postei em outro lugar e o Felipe Resende reclamou mais nao sabia ok

 

Boa tarde, Helio Beltrao Jr..

Eu não reclamei, só realizei os procedimentos básicos, conforme as regras do fórum, peço desculpas e que não entenda como uma advertência.

Equipe ACBr

Felipe Eduardo Resende Mesquita

Ajude o Projeto ACBr crescer - Assine o SAC

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

 

 

 

Link to comment
Share on other sites

  • Fundadores
  • Solution

A validação do GTIN é uma rotina bem simples... Veja:

procedure TACBrValidador.ValidarGTIN;
var
  DigOriginal, DigCalculado, Codigo: String;

  function CalcularDV(ACodigoGTIN: String): String;
  var
    Dig, I, DV: Integer;
  begin
    DV := 0;
    Result := '' ;

    // adicionar os zeros a esquerda, se não fizer isso o cálculo não bate
    // limite = tamanho maior codigo (gtin14) - 1 (digito)
    ACodigoGTIN := PadLeft(ACodigoGTIN, 13, '0');

    for I := Length(ACodigoGTIN) downto 1 do
    begin
      Dig := StrToInt(ACodigoGTIN[I]);
      DV  := DV + (Dig * IfThen(odd(I), 3, 1));
    end;

    DV := (Ceil(DV / 10) * 10) - DV ;
    Result := IntToStr(DV);
  end;

begin
  if not StrIsNumber(fsDocto) then
  begin
    fsMsgErro := 'Código GTIN inválido, o código GTIN deve conter somente números.' ;
    Exit;
  end;

  if not(Length(fsDocto) in [8, 12, 13, 14]) then
  begin
    fsMsgErro := 'Código GTIN inválido, o código GTIN deve ter 8, 12, 13 ou 14 caracteres.' ;
    Exit;
  end;

  Codigo       := Copy(fsDocto, 1, Length(fsDocto) - 1);
  DigOriginal  := fsDocto[Length(fsDocto)];
  DigCalculado := CalcularDV(Codigo);

  fsDigitoCalculado := DigCalculado;
  if DigOriginal <> DigCalculado then
  begin
   fsMsgErro := 'Código GTIN inválido.' ;

   if fsExibeDigitoCorreto then
     fsMsgErro := fsMsgErro + ' Dígito calculado: ' + fsDigitoCalculado ;
  end;
end; 

Creio que algo semelhante seja facilmente adaptado para outras linguagens...

  • Like 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.