Chave Nfe

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Chave Nfe

Mensagem por janio »

Código: Selecionar todos

/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/

Function ChaveNFe( Uf, datemi, cnpj, modelo, serie, numnfe, tpEmis )
Local CodUf
Local dEmis
Local ch

CodUf = VerUFibge ( uf )
dEmis = hb_dtoc( datemi, 'YYMM' )
Ch    = CodUf + dEmis + cnpj + modelo + strzero( val(serie), 3 ) + strzero(numnfe,9) + tpEmis + strzero(numnfe,8)
Dv    = Modulo11( ch ,2,9)

Return ( Ch + Dv )

/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
Function VerUFibge ( uf )
Local oRet

Do Case
Case uf = "RO"
	oRet := "11"
Case uf = "AC"
	oRet := "12"	
Case uf = "AM"
	oRet := "13"
Case uf = "RR"
	oRet := "14"
Case uf = "PA"
	oRet := "15"
Case uf = "AP"
	oRet := "16"
Case uf = "TO"
	oRet := "17"
Case uf = "MA"
	oRet := "21"
Case uf = "PI"
	oRet := "22"
Case uf = "CE"
	oRet := "23"
Case uf = "RN"
	oRet := "24"
Case uf = "PB"
	oRet := "25"
Case uf = "PE"
	oRet := "26"
Case uf = "AL"
	oRet := "27"
Case uf = "SE"
	oRet := "28"
Case uf = "BA"
	oRet := "29"
Case uf = "MG"
	oRet := "31"
Case uf = "ES"
	oRet := "32"
Case uf = "RJ"
	oRet := "33"
Case uf = "SP"
	oRet := "35"
Case uf = "PR"
	oRet := "41"
Case uf = "SC"
	oRet := "42"
Case uf = "RS"
	oRet := "43"
Case uf = "MS"
	oRet := "50"
Case uf = "MT"
	oRet := "51"
Case uf = "GO"
	oRet := "52"
Case uf = "DF"
	oRet := "53"
EndCase

Return oRet
/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
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)) 


fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Chave Nfe

Mensagem por marcos.gurupi »

Parabens pela contruibuicao. Qual seria o significado do parametro Tpemis ? Seria S para SAIDA ou E para ENTRADA?

Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Chave Nfe

Mensagem por janio »

O parametro Tpemis passou a compor a chave da nfe a partir da vs 2.0

Assim, deve ser informado:

"1" para Normal – emissão normal;
"2" para Contingência FS – emissão em contingência com impressão do DANFE em Formulário de Segurança;
"3" para Contingência SCAN – emissão em contingência no Sistema de Contingência do Ambiente Nacional – SCAN;
"4" para Contingência DPEC - emissão em contingência com envio da Declaração Prévia de Emissão em Contingência –
DPEC;
"5" para Contingência FS-DA - emissão em contingência com impressão do DANFE em Formulário de Segurança para Impressão de Documento Auxiliar de Documento Fiscal Eletrônico (FS-DA).
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Chave Nfe

Mensagem por marcos.gurupi »

Caro, me permita descontar. Eu acho que se trata de 0 para entrada e 1 para saida.

Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Chave Nfe

Mensagem por fladimir »

perdão pela minha ignorância, mas esta função seria para o cliente conferir (validar) a chave do danfe se esta correta?

Não entendi direito a aplicabilidade?

Eu uso o ACBRNFe, não sei se influencia na resposta....

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Chave Nfe

Mensagem por janio »

marcos.gurupi,

O parametro Tpemis serve exatamente para o que falei. Pode conferir.

fladimir,

Em diversas situações no manuseio da nfe precisamos saber da respectiva chave. Se vc possuir uma rotina para consulta da nfe direto no site da receita, por exemplo, vai precisar da chave para fazer essa consulta. Além disso, eu guardo no banco de dados tudo relacionado a nfe: chave, path do xml, protocolo disso, protocolo daqui, etc, etc, etc, etc.

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Chave Nfe

Mensagem por fladimir »

Ah sim entendi... obrigado colega, era o q imaginava...

[]´s Feliz 2012
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Chave Nfe

Mensagem por billy1943 »

Notei na rotina do colega Janio que ele não usa o número aleatório, colocando em seu lugar o mesmo número da NFe.

Como eu utilizo no SEFAZ-SP, na versão 2.0, foi informado para gerar o código numérico aleatório para compor a chave, evitando acesso indevido, a rotina do nosso colega não propiciaria tal acesso ?
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Chave Nfe

Mensagem por janio »

Colega,

Eu uso o ACBrNfeMonitor e este gera a chave examente como fiz na rotina, ou seja, colocando no espaço destinado ao numero aleatorio o mesmo numero da nfe.

Até hj nao deu problema.

No link abaixo um colega explica pq tambem resolveu usar o mesmo numero da nfe no campo "numero aleatorio"

viewtopic.php?f=20&t=11816
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Chave Nfe

Mensagem por billy1943 »

Deixe-me explicar onde vejo onde possa haver acesso indevido aos dados:

- basta gerar uma rotina com o CNPJ de uma empresa, para um determinado ano/mês, começar de um determinado número de nota/série, e esse programa gerará todas as chaves das NFe dessa empresa.

Não que eu classifique isso de problema, mas você gostaria que alguém tivesse acesso a todo o seu faturamento ?
Ele ficará sabendo os seus produtos, preços de venda, clientes, etc.

Quem não usar o número aleatório estará sujeito a isso.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Responder