Página 1 de 1

Chave de Acesso com AcbrNfeMonitor Duvida?

Enviado: 23 Abr 2010 15:45
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.

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Enviado: 23 Abr 2010 18:24
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,

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Enviado: 24 Abr 2010 01:31
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.

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Enviado: 24 Abr 2010 07:44
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

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Enviado: 26 Abr 2010 12:15
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.

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Enviado: 26 Set 2010 23:35
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

Re: Chave de Acesso com AcbrNfeMonitor Duvida?

Enviado: 27 Set 2010 10:38
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))