Ir para conteúdo
  • Cadastre-se

dev botao

Validação do GTIN (EAN)


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

Recommended Posts

  • Consultores

Como você pretende fazer essa Validação?

[]'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.
Link para o comentário
Compartilhar em outros sites

  • Consultores

Minha pergunta se refere ao algorítimo. :)

[]'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.
Link para o comentário
Compartilhar em outros sites

Poderia usar o próprio algorítimo de validação do componente ACBRNfe:

function ValidaEAN(const vEAN:String):Boolean;

var

Temp1, Temp2, Digito: Integer;

Temp3, Temp4: String;

begin

Result := False;

Temp2 := 0; Temp3 := '';

if ((Length(vEan) <> 8) and (Length(vEan) <> 12) and (Length(vEan) <> 13) and (Length(vEan) <> 18)) then

Exit;

Temp4 := '31313131313131313';

Temp4 := Copy(Temp4,(Length(Temp4)-Length(vEan)),Length(vEan)-1);

Digito := StrToInt(Copy(vEan,Length(vEan),1));

Temp3 := Copy(vEan,1,Length(vEan)-1);

for Temp1 := 1 to Length(Temp3) do

Temp2 := Temp2+StrToInt(Temp3[Temp1])*StrToInt(Temp4[Temp1]);

Temp2:=10-Round(Frac(Temp2/10)*10);

if Temp2 = 10 then

Temp2 := 0;

Result := (Temp2 = Digito);

end;

Sistemas para toda área Goumert, pequeno varejo e baladas.

www.controleautomacao.com.br

Link para o comentário
Compartilhar em outros sites

  • 5 semanas depois ...
  • Fundadores

É preciso uma revisão no ACBrNFe e ACBrSPED, existem muitas funções repetidas como por exemplo a validação de CNPJ e I.E.

Hoje existe em ACBrUtil as funçoes:

function EAN13Valido( CodEAN13 : String ) : Boolean ;

function EAN13_DV( CodEAN13 : String ) : String ;

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 para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
  • Moderadores

daniel_paixao, não encontrei a função "ValidaEAN(const vEAN:String):Boolean;" no ACBRNfe, poderia me mostrar onde está?

Como fica os códigos de barras com 8, 12 e 14 dígitos para emissão de NF-e ? Só consigo transmitir NF-e com 13 dígitos.

Esta em ACBrUtil.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Regys, encontrei as funções EAN13Valido e EAN13_DV no ACBrUtil, porém não encontrei a função ValidaEAN que o daniel_paixao postou acima.

Se o ACBr só tem a função para validar EAN13 como é feita a validação dos códigos EAN de 8, 12 e 14 dígitos? Tentei transmitir NFe de produtos com EAN de 8 e 14 dígitos e a SEFAZ-MT não aceitou, alguém poderia explicar como funciona isso tudo?

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • 2 semanas depois ...
  • 1 ano depois...
  • Este tópico foi criado há 3929 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.