Clipper On Line • Ver Tópico - Codigo da NFE, para que serve ?

Codigo da NFE, para que serve ?

Discussão sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (ECF, TEF, SINTEGRA, NF-e, ECD, EFD, etc.)

Moderador: Moderadores

 

Codigo da NFE, para que serve ?

Mensagempor JoséQuintas » 02 Set 2019 14:10

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18015
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Codigo da NFE, para que serve ?

Mensagempor Itamar M. Lins Jr. » 02 Set 2019 17:05

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Codigo da NFE, para que serve ?

Mensagempor rochinha » 16 Set 2019 10:02

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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Codigo da NFE, para que serve ?

Mensagempor JoséQuintas » 16 Set 2019 16:42

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18015
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Codigo da NFE, para que serve ?

Mensagempor Jairo Maia » 16 Set 2019 18:15

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.

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)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Codigo da NFE, para que serve ?

Mensagempor pauloa1 » 17 Set 2019 11:05

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
pauloa1
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 223
Data de registro: 25 Jun 2008 14:57
Cidade/Estado: Augusto Pestana-RS
Curtiu: 2 vezes
Mens.Curtidas: 11 vezes

Codigo da NFE, para que serve ?

Mensagempor Itamar M. Lins Jr. » 17 Set 2019 14:48

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Codigo da NFE, para que serve ?

Mensagempor paiva_dbdc » 17 Set 2019 16:26

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
paiva_dbdc
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 342
Data de registro: 12 Nov 2012 08:58
Cidade/Estado: uberlandia mg
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Codigo da NFE, para que serve ?

Mensagempor rubens » 17 Set 2019 18:00

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...
   @ 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 de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Codigo da NFE, para que serve ?

Mensagempor Jairo Maia » 17 Set 2019 20:21

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)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Codigo da NFE, para que serve ?

Mensagempor paiva_dbdc » 18 Set 2019 14:38

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
Data de registro: 12 Nov 2012 08:58
Cidade/Estado: uberlandia mg
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Codigo da NFE, para que serve ?

Mensagempor paiva_dbdc » 23 Set 2019 08:49

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
paiva_dbdc
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 342
Data de registro: 12 Nov 2012 08:58
Cidade/Estado: uberlandia mg
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Codigo da NFE, para que serve ?

Mensagempor JoséQuintas » 23 Set 2019 12:31

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18015
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior



Retornar para Legislação Fiscal e Tributária

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro