Chave de Acesso com AcbrNfeMonitor Duvida?
Moderador: Moderadores
-
marciotullio
- Usuário Nível 1

- Mensagens: 16
- Registrado em: 28 Ago 2009 15:17
- Localização: Joao Pessoa
Chave de Acesso com AcbrNfeMonitor Duvida?
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.
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.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Chave de Acesso com AcbrNfeMonitor Duvida?
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,
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
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
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Re: Chave de Acesso com AcbrNfeMonitor Duvida?
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:
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:
Exemplo da geração:
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:
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.
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'
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
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)
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)
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.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Chave de Acesso com AcbrNfeMonitor Duvida?
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
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
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

- Mensagens: 16
- Registrado em: 28 Ago 2009 15:17
- Localização: Joao Pessoa
Re: Chave de Acesso com AcbrNfeMonitor Duvida?
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
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.
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
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?
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
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

- Mensagens: 16
- Registrado em: 28 Ago 2009 15:17
- Localização: Joao Pessoa
Re: Chave de Acesso com AcbrNfeMonitor Duvida?
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))