Chave de Acesso com AcbrNfeMonitor Duvida?

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

marciotullio
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 28 Ago 2009 15:17
Localização: Joao Pessoa

Chave de Acesso com AcbrNfeMonitor Duvida?

Mensagem por marciotullio »

1º Duvida Geral:Usar minha chave de acesso no ACBR. "ele aproveita o numero que eu passo"

2º Estou usando o mesmo TXT do emissor Oficial: Gero o TXT que uso no emissor do Gov. e utilizo o comando NFe.CriarEnviarNFeSefaz("c:\integrad\nf00014.txt",0,1)
para enviar o arquivo até ai tudo bem , mas dentro do TXT eu gero a chave para NFE , mas tanto o ACBR como o Emissor não aproveita a minha chave , será que ela tem erro? “logo abaixo”
ou não existe um padrão , cada um gera a sua o acbr e o emissor.

3º Chave de acesso: Se eu consegui-se enviar a minha chave e continuar com ela valida eu conseguiria , saber ja antes da geração do XML que nome ele teria e desta forma ja guardar , e poder fazer a checagem se o arquivo existia , chamar a reimpressão , e demais funções , atualmente só vou ter condição de guardar o valor correto se fizer a leitura do retorno do acbr. E no emissor não tenho como.

Emissor Governo
25-10/04-05.729.873/0001-53-55-001-000.085.890-090.508.006-9

Numero Gerado
25-10/04-05.729.873/0001-53-55-001-000.085.890-050.085.890-0

AcbrNfe
25-10/04-05.729.873/0001-53-55-001-000.085.890-057-298.730-8

a grande diferença esta no código numero que e aleatório , o acbr também gera aleatório haveria alguma condição dele não ser gerado aleatório e ser aproveitado o já informado?

grato.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Mensagem por Toledo »

Márcio, poste aqui a terceira linha do arquivo TXT (que começa com a letra B|) que você está gerando para o emissor do Governo.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Mensagem por rochinha »

Amiguinho,

Não perca tempo gerando a chave antes do ACBrNFe pois ela sempre será diferente.

Minha aplicação gera o .XML completo e envia para o ACBrNFe validar e minha chave temporária é modificada pela que ele recria.

Para armazenar a sua chave voce terá de recuperar dentro do .XML a informação infNFe-ID da mesma:

Código: Selecionar todos

<infNFe versao='1.10'  Id='NFe35100305103502000152550010000067200000067209' 
Nela voce encontra inclusive o digito verificador em módulo 11.

Parametros para gerar a Chave de acesso:

codUF - codigo da Unidade e Federação do Município de acordo tabela IBGE.
dtEmissao - data de emissão da nota fiscal
CNPJ - codigo CNPJ do emitente
Modelo - Modelo da Nota Fiscal NF-e (55)
Serie - codigo de serie da NFe
NumeroNF - Número da Nota Fiscal

Exemplo de chave:

Código: Selecionar todos

35 10 03 05103502000152 55 001 000006720 000006720 9
Exemplo da geração:

Código: Selecionar todos

emissao := DtoC(dtEmissao) 
CodigoNumerico := Random(99999999)

chave := ""
chave := chave + Str(codUF)  // 35
chave := chave + Substr(emissao,7,2) // 10
chave := chave + Substr(emissao,4,2) // 03
chave := chave + LimpaCNPJ(CNPJ) // 05103502000152
chave := chave + StrZero(Modelo,2,0) // 55
chave := chave + StrZero(Serie,3,0) // 001
chave := chave + StrZero(NumeroNF,9,0) // 000006720
chave := chave + StrZero(CodigoNumerico,9,0) // 123456789
 
Resultado := chave + Modulo11(chave)
Pelo que pude perceber o ACBrNFe 0.5.6a não esta gerando numero aleatório, percebi que ele esta repetindo o numero da nota fiscal no campo onde haveria o numero aleatório.

Portanto bastará modificar o final do cálculo:

Código: Selecionar todos

chave := chave + StrZero(NumeroNF,9,0) // 000006720
chave := chave + StrZero(NumeroNF,9,0) // 000006720
 
Resultado := chave + Modulo11(chave)
Depois é só calcular o digito final e obterá o numero de controle da NFe antes da geração.

Ainda assim a idéia mais sensata é pegar este código após a geração do .XML.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Mensagem por Toledo »

Amiguinho Rochinha, no caso do ACBrNFeMonitor, se você estiver usando o comando "NFE.CriarNFe", na chave "[identificacao]" existe um campo chamado "codigo" que corresponde ao Código numérico que compõe a Chave de Acesso.
Agora, para o cálculo do dígito verificador da Chave de Acesso, veja:
https://pctoledo.org/forum/viewto ... 669#p54948
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
marciotullio
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 28 Ago 2009 15:17
Localização: Joao Pessoa

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Mensagem por marciotullio »

Pesso ALL

consegui aqui , na teimosia , gerendo e conferindo , descobri que o acbr usa o começo do numero do cnpj para gerar o codigo que tem o digito agora e so conferir o digito e consegui.

Fiz a rotina lendo igual e fui ver de onde ele tirava o numero e identifiquei que era do cnpj fica assim entao

Código: Selecionar todos

  
cnumerico:= subst(vnumecgc,1,9)
xchaves  := PesqCdUf(emp->esta_do)+subst(dtoc(inf->dataemi),9,2)+subst(dtoc(inf->dataemi),4,2)+vnumecgc+vmodelo+StrZero(val(vserinf),3,0)+StrZero(val(vnumnfis),9,0)+StrZero(val(cnumerico),9,0)
vDig     := Modulo11(xChaves,2,9)
xChaves  := xChaves+Vdig
Return xChaves
com isso consigo montar o nome do xml , antes da validação e transmissão e ter maior controle sobre ele
vmesano=subst(dtoc(inf->dataemi),7,4)+subst(dtoc(inf->dataemi),4,2) // no Acbr configuro para gerar uma pasta para cada Mes. e informa a pasta \integrad\xml para ele guardar os xml

slinhas:="NFe.EnviarEmail("+vcorreio+",c:\integrad\xml\"+vmesano+"\"+vchavenf+"-nfe.xml,1)"+chr(13)+chr(10)

com este comando na sequencia consigo enviar email no final apos o retorno sem me preocupar em pegar o retorno.

grato.
emazoli
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 26 Set 2010 19:42
Localização: Sao Paulo/ SP

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Mensagem por emazoli »

Oi Marcio,

Voce conseguiu encontrar qual eh o algoritimo usado pelo Sefaz para o Codigo Numerico.

Voce mencionou que tinha a ver com o CNPJ, mas peloque eu verifiquei aqui nao tem nada a ver.

Se alguém souber me avise por favor. Obrigado. Erik
marciotullio
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 28 Ago 2009 15:17
Localização: Joao Pessoa

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Mensagem por marciotullio »

Amigo nao consegui achar o do sefaz não , mas usando o acbr consegui monta-lo e assim ter controle sobre todo o processo ja sabendo o nome do arquivo xml , ficando assim mais facil trabalhar em todas as fases do processamento.

Código: Selecionar todos

Function ChaveNfe()
         set cent on
         if vtiponfe="SAIDA"
    			sele inf
       		cnumerico:= subst(vnumecgc,1,9)
		    	xchaves  := PesqCdUf(emp->esta_do)+subst(dtoc(inf->dataemi),9,2)+subst(dtoc(inf->dataemi),4,2)+vnumecgc+vmodelo+StrZero(val(vserinf),3,0)+StrZero(val(vnumnfis),9,0)+StrZero(val(cnumerico),9,0)
         elseif vtiponfe="ENTRADA"
			   sele rmo
    		   cnumerico:= subst(vnumecgc,1,9)
			   xchaves  := PesqCdUf(emp->esta_do)+subst(dtoc(rmo->dtement),9,2)+subst(dtoc(rmo->dtement),4,2)+vnumecgc+vmodelo+StrZero(val(vserinf),3,0)+StrZero(val(vnunfent),9,0)+StrZero(val(cnumerico),9,0)
         endif
			vDig     := Modulo11(xChaves,2,9)
         xChaves  := xChaves+Vdig
			Return xChaves
         *
Function Modulo11(cStr,nPeso1,nPeso2)
         local nTot := 0                       
         local nMul := nPeso1                 
         local i                               
         *
         for i := Len(cStr) to 1 step -1
             nTot += Val(SubStr(cStr,i,1)) * nMul
             nMul := if(nMul=nPeso2, nPeso1, nMul+1)
         next
         return if(nTot%11 < 2, "0", Str(11-(nTot%11),1))
Responder