Codigo da NFE, para que serve ?

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

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Codigo da NFE, para que serve ?

Mensagem por JoséQuintas »

janio escreveu:Codigo da nota: 8 dígitos
Ressaltar aqui novamente:

HOJE existe um dígito pra indicar se é contingência.
Esse dígito NÃO existia antigamente, então foi reduzido o código de 9 pra 8, acredito que isso causou a confusão do Itamar.
Ainda mais que mexemos nesse código somente duas vezes: uma na criação em 2008, e outra quando mudou talvez em 2010.
Lembrar dessas coisas de 9/11 anos atrás, fácil não lembrar direito, só confirmando no fonte.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Codigo da NFE, para que serve ?

Mensagem por Itamar M. Lins Jr. »

Ola!
Ué, se não pode repetir. Ou é aleatório e salva, ou o numero da NFe + x que sempre irá mudar e será diferente do numero da NFe/NFCe.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Codigo da NFE, para que serve ?

Mensagem por rochinha »

Amiguinhos,

Tentei usar um aleatório com ACBrNFeMonitor mas quando ele recebe a nota depois do envio e re-escreve o protocolo cria uma segunda nota, então estou salvando com numero da NFe e depois o numero do meu pedido interno.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Codigo da NFE, para que serve ?

Mensagem por JoséQuintas »

Pois é...
E pode chegar na nota 111.111
Ou se usar horário.... 11:11:11 ou 01:23:45
Ou código de cadastro 1.111
Até mesmo aleatório... poderia gerar uma sequência não permitida...
Acho que vamos acabar tendo que colocar a validação da Sefaz no aplicativo, por precaução.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Codigo da NFE, para que serve ?

Mensagem por Jairo Maia »

Olá pessoal,

Já que se trata de "maluquice", acabei fazendo uma função bem maluca, e que permite também eu montar a chave para determinada nota quando for preciso, sem que tivesse que abrir novo campo para salvar esse número. É bem maluco, mas passou nos testes, então aqui vai:

OBS: Lembrando, que no meu caso "cNumeroNota" sempre é enviado como caractere. Se enviar como numérico, basta tratar o parâmetro. Na época que montei essa função, corria um "boato" que a NT seria atualizada para não aceitar número em sequência também, impedindo usar algo como número nota + 1. Então ficou assim mesmo, e funciona.

Código: Selecionar todos

Func CodigoDaChaveNFE( cNumeroNota )
 Local x, nDigito, nControle, cCodigoNota, cVetos

 nDigito := Val( Right( cNumeroNota, 1 ) )
 
 nControle:=Val( Right( cNumeroNota, 6 ) )
 
 nDigito := If( nDigito = 0, 5, nDigito )  //se 0 define 5 e evita codigo em sequencia...
 
 cCodigoNota := Hb_NToS( nControle + If( Isimpar( nDigito ), nDigito * 9, nDigito * 11 ) + nDigito )
 
 cVetos := "[00000000][11111111][22222222][33333333][44444444][55555555]"
 cVetos += "[66666666][77777777][88888888][99999999][12345678][23456789]"
 cVetos += "[34567890][45678901][56789012][67890123][78901234][89012345]"
 cVetos += "[90123456][01234567]"
 
 While ( cCodigoNota $ cVetos ) .Or. ( cCodigoNota = cNumeroNota )

  cCodigoNota := Hb_NToS( Val( cCodigoNota ) + 3 )
  
 EndDo

Return ( cCodigoNota )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

Codigo da NFE, para que serve ?

Mensagem por pauloa1 »

Eu fiz assim:
primeiro digito a série os próximos 6 o n. da nota e o último gero um digito.
Até agora tudo certo.

Paulo
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Codigo da NFE, para que serve ?

Mensagem por Itamar M. Lins Jr. »

Ola!
O problema que aqui na Bahia a NFCe já não deixa usar o mesmo numero da NFe, porém para NFE pode usar.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

Codigo da NFE, para que serve ?

Mensagem por paiva_dbdc »

BOA tarde

uso uma funcao que Inverte o numero da nota

alguem me passou ...


++ outra opcao bem simples e´colocar o ANO por exemplo no FINAL . ou seja NUNCA vai ser sequencial e e´bem simples
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Codigo da NFE, para que serve ?

Mensagem por rubens »

Paiva só inverter o número da nota não adianta...
eu estou fazendo assim e acrescentando 1 no inicio do código..
Por exemplo se a nota for 303, invertido vai resultar 303.
Daí acrescento '1' + strzero( val(cCodigo),7 )
e pronto resolvido... não vai ser sequencial e não vai repetir o número da nota...

Código: Selecionar todos

   @ PROW()+1,00 SAY "Codigo="+CNF(cNumero)	// CODIGO DA NOTA
   @ PROW()+1,00 SAY "Numero="+cNUMERO	
   ...

FUNCTION CNF(cNumero)  
  	Local cCnf 		:= ''
	Local cCnfTmp  := Alltrim( Str( Val(cNumero) ) )
	Local x
	Local nTam		:= Len(cCnfTmp) 
	For x = 0 to Len(cCnfTmp)
		nTam 	:= Len(cCnfTmp)-x
		cCnf	+= SubStr( cCnfTmp, nTam, 1)
		If nTam = 1
			Exit
		EndIf
	Next
	cCnf := '1'+StrZero( Val (cCnf), 7 )
	RETURN cCnf
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Codigo da NFE, para que serve ?

Mensagem por Jairo Maia »

Olá Pessoal,

Pode também simplesmente usar StrZero( Random(), 8 ), e salvar esse número num campo, ou salvar a chave da nota num campo.
rubens escreveu:Daí acrescento '1' + strzero( val(cCodigo),7 )
e pronto resolvido... não vai ser sequencial e não vai repetir o número da nota...
Sim, mas você nunca poderá gerar a nota de números: 1111111 e 8765432.

Usando seu critério, a nota 1111111 será 11111111, e dará rejeição, e a nota 8765432 será 12345678, que também dará rejeição, pois são códigos não permitidos conforme consta na NT.

O mais importante ainda, é que qualquer nota com número superior a 7 dígitos seu sistema não vai gerar, pois a função StrZero() retornará 7 asteriscos, causando erro também.

Editado:A NT não diz nada por enquanto sobre número em sequência. Então se hoje usar número nota + X tudo bem. Mas não aconselho, acho que é uma questão de tempo isso ser alterado para impedir, já que o objetivo da NT é impedir códigos de fácil percepção.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

Codigo da NFE, para que serve ?

Mensagem por paiva_dbdc »

Rubens...

depende como como inverte rs
veja abaixo como faço



Codigo=89801000
Numero=10898



cControle := Left( F_Inverte(StrZero( val(crpeda->nota),9)) ,8) //Lembrando que o Controle/LOTE, é só 8 numeros e tem q.pegar os 8 da esquerda
vdet = [Codigo=]+cControle

function F_Inverte( cTexto )
/*
27/06/19
Ariolando M.
Inverte os caracteres contidos na String
Retorna o resultado, no mesmo tamanho recebido

Utilizado na NFELIB, para compor a Chave da NFe, no campo LOTE/ "Numero Aleatorio"
a utilização/chamada na NFe deve ser assim...

cControle := Left( F_Inverte(StrZero( nControle,9)) ,8) //Lembrando que o Controle/LOTE, é só 8 numeros e tem q.pegar os 8 da esquerda

*/
Local nI, cRet:=""
IF "C"$valtype( cTexto )
FOR nI = LEN( cTexto ) TO 1 Step -1
cRet += substr( cTexto, nI , 1 )
NEXT
ENDIF
RETURN( cRet )
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

Codigo da NFE, para que serve ?

Mensagem por paiva_dbdc »

corrigindo

a função que inverte esta correta ++++ o sefaz considera os 2 campos como NUMÉRICOS
por isso causa problema ficando iguais
ex: nfe 11000 código 00011000
SEFAZ considera ====

como já tinha implementado dessa forma corrigi

if val(Left(cRet,8)) = val(cTexto)
cRet := strzero(val(cTexto),6)+substr(dtos(date()),3,2)+[0]
endif

somente em casos que fiquem iguais
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Codigo da NFE, para que serve ?

Mensagem por JoséQuintas »

Talvez mais simples:
nota + dia + mês + ano de emissão, por exemplo, e mais a rotina do Jairo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder