Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Preciso processar meu db, e criar as chaves de acessos para cada nf-e, estava

usando o emissor gratuito do governo, e para criar o sped fiscal precisa da chave,

estou usando a função abaixo, tenho uma dúvida:

vNumero := NotaUtil.Poem_Zeros(ANumero, 9); é o número da nf

vCodigo := NotaUtil.Poem_Zeros(ACodigo, 9); vCodigo a quem refere?

Gerei a chave usando os parametros mas deu diferente. Comparo com a emitida

pelo emissor do governo gratuito.

class function NotaUtil.ChaveAcesso(AUF: Integer; ADataEmissao: TDateTime;

ACNPJ: String; ASerie, ANumero, ACodigo: Integer; AModelo: Integer): String;

var

vUF, vDataEmissao, vSerie, vNumero,

vCodigo, vModelo: String;

begin

vUF := NotaUtil.Poem_Zeros(AUF, 2);

vDataEmissao := FormatDateTime('YYMM', ADataEmissao);

vModelo := NotaUtil.Poem_Zeros(AModelo, 2);

vSerie := NotaUtil.Poem_Zeros(ASerie, 3);

vNumero := NotaUtil.Poem_Zeros(ANumero, 9);

vCodigo := NotaUtil.Poem_Zeros(ACodigo, 9);

Result := vUF+vDataEmissao+ACNPJ+vModelo+vSerie+vNumero+vCodigo;

Result := Result+NotaUtil.Modulo11(Result);

end;

Ou se alguém tiver outra função para criar-la, de já agradeço.

Obrigado,

Leão

Denunciar esta mensagem

  • Moderadores
Postado

Esta opção é para criar a chave da versão 1

· cUF - Código da UF do emitente do Documento Fiscal

· AAMM - Ano e Mês de emissão da NF-e

· CNPJ - CNPJ do emitente

· mod - Modelo do Documento Fiscal

· serie - Série do Documento Fiscal

· nNF - Número do Documento Fiscal

· cNF - Código Numérico que compõe a Chave de Acesso

· cDV - Dígito Verificador da Chave de Acesso

Para a versão 2:

· cUF - Código da UF do emitente do Documento Fiscal

· AAMM - Ano e Mês de emissão da NF-e

· CNPJ - CNPJ do emitente

· mod - Modelo do Documento Fiscal

· serie - Série do Documento Fiscal

· nNF - Número do Documento Fiscal

· tpEmis – forma de emissão da NF-e //Foi acrescentado

· cNF - Código Numérico que compõe a Chave de Acesso //Diminuiu um dígito. De 9 passou para 8.

· cDV - Dígito Verificador da Chave de Acesso

Pág. 84 do Manual de Integração.

vNumero := NotaUtil.Poem_Zeros(ANumero, 9); é o número da nf

Correto.

vCodigo := NotaUtil.Poem_Zeros(ACodigo, 9); vCodigo a quem refere?

É um número aleatório, porém para não dificultar no momento que vc com os dados da nota precisa criar uma chave, no ACBr por padrão o pessoal adotou informar o mesmo número da nota.

Isto facilita no momento de gerar uma nova chave do contrário vc não saberá que número foi usado ao não ser que vc tenha um registro aonde foi gravado esta informação.


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Postado

Obrigado pela resposa, pequena dúvida.

no cNF, passo a chave completa do certificado ou de 1 até 8 copy(chave,1,8) ?

e o digito como passo esse parametro?

· cNF - Código Numérico que compõe a Chave de Acesso //Diminuiu um dígito. De 9 passou para 8.

· cDV - Dígito Verificador da Chave de Acesso

estou usando o NotaUtil.ChaveAcesso

para gerar a chave, existe outra forma?

Obrigado,

Leão

  • Moderadores
Postado

Leao, eu não uso o componente, portanto não conheço a função NotaUtil.ChaveAcesso

Mas se a os dados forem estes

function NotaUtil.ChaveAcesso(AUF: Integer; ADataEmissao: TDateTime;

ACNPJ: String; ASerie, ANumero, ACodigo: Integer; AModelo: Integer):

class function NotaUtil.ChaveAcesso(AUF: Integer; ADataEmissao: TDateTime;

ACNPJ: String; ASerie, ANumero, ACodigo: Integer; AModelo: Integer): String;

var

vUF, vDataEmissao, vSerie, vNumero,

vCodigo, vModelo: String;

begin

vUF := NotaUtil.Poem_Zeros(AUF, 2);

vDataEmissao := FormatDateTime('YYMM', ADataEmissao);

vModelo := NotaUtil.Poem_Zeros(AModelo, 2);

vSerie := NotaUtil.Poem_Zeros(ASerie, 3);

vNumero := NotaUtil.Poem_Zeros(ANumero, 9);

vCodigo := NotaUtil.Poem_Zeros(ACodigo, 9);

Result := vUF+vDataEmissao+ACNPJ+vModelo+vSerie+vNumero+vCodigo;

Result := Result+NotaUtil.Modulo11(Result);

------------------------------------------------------------------

Como vc passou, este ai está gerando a chave da versão 1, observe que não tem ali o tipo de emissão e código está com 9 digitos e não 8.

Para a versão 2, caso vc não encontre no componente, (mas eu creio que deve ter), vc pode gerar uma chave da seguinte forma:

Result:=cUF+AAMM+CNPJ+55+SERIE+nNF+tpEmiss+cNF

depois usa-se o modulo 11 que é igual a de cima

Result := Result+NotaUtil.Modulo11(Result);

--------------------------------------------------------------------

· cUF - Código da UF do emitente do Documento Fiscal

· AAMM - Ano e Mês de emissão da NF-e

· CNPJ - CNPJ do emitente

· mod - Modelo do Documento Fiscal

· serie - Série do Documento Fiscal

· nNF - Número do Documento Fiscal

· tpEmis – forma de emissão da NF-e //Foi acrescentado

· cNF - Código Numérico que compõe a Chave de Acesso //Diminuiu um dígito. De 9 passou para 8.

· cDV - Dígito Verificador da Chave de Acesso


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Postado

Obrigado, porém, não dar certo, porque a chave no emissor gratuito, a chave é

gerada aleatóriamente, e no meu fonte delphi7, é a mesma chave da nf-e.

Fiz assim, Importar TXT/XML, ele pega a chave e grava no meu db.

DNF.Modifica;

DNF.SITUACAO.Conteudo :='AUTORIZADA';

// DNF.RECIBO_NFE.Conteudo :=

DNF.NUMERO_NFE.Conteudo :=procNFe.chNFe;

DNF.NUMERO_PROTOCO.Conteudo:=procNFe.nProt;

DNF.HORA_AUTORI.Conteudo :=DateTimeToStr(procNFe.dhRecbto);

DNF.CSTAT.Conteudo :='100';

DNF.Salva;

Obrigado,

Leão

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