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.