Página 2 de 2

Codigo da NFE, para que serve ?

Enviado: 02 Set 2019 14:10
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.

Codigo da NFE, para que serve ?

Enviado: 02 Set 2019 17:05
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.

Codigo da NFE, para que serve ?

Enviado: 16 Set 2019 10:02
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.

Codigo da NFE, para que serve ?

Enviado: 16 Set 2019 16:42
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.

Codigo da NFE, para que serve ?

Enviado: 16 Set 2019 18:15
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 )

Codigo da NFE, para que serve ?

Enviado: 17 Set 2019 11:05
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

Codigo da NFE, para que serve ?

Enviado: 17 Set 2019 14:48
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.

Codigo da NFE, para que serve ?

Enviado: 17 Set 2019 16:26
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

Codigo da NFE, para que serve ?

Enviado: 17 Set 2019 18:00
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

Codigo da NFE, para que serve ?

Enviado: 17 Set 2019 20:21
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.

Codigo da NFE, para que serve ?

Enviado: 18 Set 2019 14:38
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 )

Codigo da NFE, para que serve ?

Enviado: 23 Set 2019 08:49
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

Codigo da NFE, para que serve ?

Enviado: 23 Set 2019 12:31
por JoséQuintas
Talvez mais simples:
nota + dia + mês + ano de emissão, por exemplo, e mais a rotina do Jairo.