Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Olá pessoal, é possível pegar a chave da NF-e através do componente antes de enviar ?

Após enviar pego assim:

ACBrNFe1.Enviar(0, False);

sChave := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe;

Preciso pegar antes do ACBrNFe1.Enviar(0, False);

  • Membros Pro
Postado

Sidnei_Alves1

ModACBr é um data module ou uma UNIT ?

pois com este comando:

sChave := ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID;

Retorno apenas o número da nota, e eu preciso da Chave !

  • Membros Pro
Postado

Olá, regys.silveira, sim perfeitamente, após enviar tranquilo 100% consigo pegar a chave através do componente.

O problema é que preciso pegar a chave antes de enviar !

Postado

// Monta os numeros da Chave de Acesso da NFe 2.00

function MontaChaveAcessoNFe_v200( codUF: integer; dtEmissao: TDateTime; CNPJ, tpEmis: string; Modelo, Serie, NumeroNF: integer): string;

var

emissao : string[10];

chave : string;

begin

emissao := formatdatetime('DD/MM/YY', dtEmissao);

chave := IntToStr(codUF) +

copy( emissao, 7, 2) +

copy(emissao, 4, 2) +

FiltraNumeros(CNPJ) +

StrZero(Modelo, 2) +

StrZero(Serie, 3) +

StrZero(NumeroNF, 9) +

tpEmis +

StrZero(NumeroNF, 8);

Result := chave + Modulo11(chave);

end;

OBS: tpEmis = producao ou homologação

// função do Modulo 11

function Modulo11(Numero: String): String;

var

i,j,k : Integer;

Soma : Integer;

Digito : Integer;

CNPJ : Boolean;

begin

Result := '';

Try

Soma := 0; k:= 2;

for i := Length(Numero) downto 1 do

begin

Soma := Soma + (StrToInt(Numero)*k);

inc(k);

if k > 9 then k := 2;

end;

Digito := 11 - Soma mod 11;

if Digito >= 10 then Digito := 0;

Result := Result + Chr(Digito + Ord('0'));

except

Result := 'X';

end;

end;

// função StrZero

function StrZero(Valor: Integer; TamanhoRet: Integer): String;

var

VarStr : String;

TamanhoStr: Integer;

begin

VarStr := Trim(IntToStr(Valor));

TamanhoStr := Length(VarStr);

if TamanhoStr >= 0 then

begin

for TamanhoRet := 1 to TamanhoRet - TamanhoStr do

VarStr := '0' + VarStr;

end;

StrZero := VarStr;

end;

// função Filtra Numeros

function FiltraNumeros(Texto: String): String;

var

i: Integer;

Validos: String;

begin

Result := '';

Validos := '0123456789';

for I := 1 to Length(Texto) do

if Pos(Texto, Validos) > 0 then

begin

Result := Result + Texto;

end;

end;

  • Moderadores
Postado

Olá, regys.silveira, sim perfeitamente, após enviar tranquilo 100% consigo pegar a chave através do componente.

O problema é que preciso pegar a chave antes de enviar !

Utilize o método "gerarchave", basta adicionar pcnAuxiliar ao uses que ele estará disponível.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Membros Pro
Postado

Opa, Angelo Gomes

agora sim funcionou após a dica de Validar antes, embora o Sidnei havia dito isso, mas não compreendi... mas agora esta ok.

ACBrNFe1.NotasFiscais.Valida;

sChave:= Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);

Muito obrigado, sucesso a todos.

  • 4 anos depois...
Postado
Em 8/10/2012 at 15:01, Régys Silveira disse:

Após enviar utilize a propriedade "ACBrNFe.NotasFiscais.Items.NFe.procNFe.chNFe" para ler a chave.

Muito obrigado... me ajudou muito Feliz 2017

Atenciosamente

___________________________________________

Adolfo Jefferson Fernandes Lopes

Top Software Consultoria em Informática Ltda. 1992
Top Software Ltda. 2017
(41) 99144-1838 whats ** 3323-1622

[email protected]
http://imastercontroll.blogspot.com/

  • Este tópico foi criado há 2883 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.