Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado (editado)

Post Original :

Estou precisando Validar a Chave de Acesso DIGITADA pelo usuario.

No exemplo Delphi NFe não encontrei, eu já valido se esta vazio, se é somente numero, se tem 44 posições , mas preciso validar se esta correta.

Sei que o digito verificador é baseado no Modulo 11, posso ate fazer uma função, mas se já tiver no ACBr não vejo porque perder tempo.

 

Obrigado

 

O REGYS SILVEIRA RESPONDEU : 

Utilize o método ValidarChave que está na unit pcnAuxiliar.

Por favor, não aproveite tópicos, abra um novo

 

Mas antes de obter a resposta já havia resolvido da seguinte forma :

Encontrei em https://drgarcia1986.wordpress.com/2012/01/31/funcao-para-validar-a-chave-da-nfe/ uma função que estou usando e funcionou, coloco aqui 

function ValidarChaveNFe(const ChaveNFe: string):boolean;
const
  PESO : Array[0..43] of Integer = (4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 0);
var
  Retorno : boolean;
  aChave  : Array[0..43] of Char;
  Soma    : Integer;
  Verif   : Integer;
  I       : Integer;
begin
  Retorno := false;
  try
    try
      if not Length(ChaveNFe) = 44 then
        raise Exception.Create('');

      StrPCopy(aChave,StringReplace(ChaveNFe,' ', '',[rfReplaceAll]));
      Soma := 0;
      for I := Low(aChave) to High(aChave) do
        Soma := Soma + (StrToInt(aChave) * PESO);
 
      if Soma = 0 then
        raise Exception.Create('');
 
      Soma := Soma - (11 * (Trunc(Soma / 11)));
      if (Soma = 0) or (Soma = 1) then
        Verif := 0
      else
        Verif := 11 - Soma;
 
      Retorno := Verif = StrToInt(aChave[43]);
    except
      Retorno := false;
    end;
  finally
    Result := Retorno;
  end;
end;

 

 

Editado por Antonio Carlos L
  • Curtir 1
  • Obrigado 1
  • Este tópico foi criado há 3333 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.