NUMERA?ÃO NFS-E

ALTAIR148 11/03/2015 16:18:37
#445157
Boa tarde,

Pessoal, estou desenvolvendo um sistema para emitr NFs-e(Nota fiscal de serviço Eletronica), mas estou com dúvida como vocês estão fazendo com a numeração.

Ex. Vou ter 4 operadores emitindo nota ao mesmo tempo, supondo que o operador 1 deu inicio a uma nota, e o operador 2 logo em seguida, mas o operador 1 ainda não finalizou a nota, como que faço para dar a numeração da nfe para o operador 2? Eu até poderia pegar o id inserido no banco, o mysql oferece retorno a isso, mas o detalhe que na hora de iniciar a transmissão tem que ter o número da nota, mas essa nota pode ser rejeitada. dai como que ficaria essa numeração?

Obrigado.
SINCLAIR 11/03/2015 19:04:17
#445159
Colega,

Nestes casos sempre se deve pegar o número da NF no momento do insert da tabela. Antes disto, na tela, você poderá informar o número que NF [Ô]deverá[Ô] ter, mas que no momento do insert poderá mudar (antes do insert pegue o número com algo como [Ô]select(max) num_nf from tab_notas_fiscais[Ô])

Tudo de bom.
ALTAIR148 11/03/2015 19:08:12
#445160
Então, ai é que esta o problema, pegar o ID no memento do insert é facil, o problema é que por exemplo a NF ela pode ser rejeitada, dai para evitar que fiquem cancelando numeração, gostaria de saber se alguém já tem uma lógica para contornar isso.
FOXMAN 11/03/2015 20:22:12
#445163
Resposta escolhida
Altair, blza....

Geralmente as prefeituras é quem controlam a sequencia da numeração da NFS-e.
O que você deve utilizar é o RPS(Recibo Provisório de Serviço), que será convertido em NFS-e.

Nestes casos, você envia a NFS-e(com o RPS), e pega o numero da NFS-e no retorno, caso tudo tenha corrido bem.

Porém tudo depende de qual sistema a prefeitura em questão está adotando, se ABRASF, PRÓPRIO OU OUTRO.
Isso varia de prefeitura para prefeitura.
SINCLAIR 11/03/2015 22:22:29
#445164
Olá, Altair...

De fato, conforme disse o Foxman, NFS-e quem atribui número é a prefeitura. Mas eu nem entrei neste ponto porque admiti a idéia de ser mais amplo, como no caso da NFe.

Bem, se momento do insert você colocar o número da NF sendo o maior número somado de 1, você não teria buracos, certo?

Mas o problema é que o usuário A pode gravar a NF numero 199 e o usuário B gravar a NF 200 e a 199 ser rejeitada e a 200 ser aceita. Nestes casos, o jeito é a inutilização numérica mesmo. A 199 ficará perdida, porque não pode ser feita com data e nem horário posterior à NF de numero 200.

Uma alternativa seria ter um campo em sua tabela que marca se a NF foi aceita ou não (um booleano) ou até mesmo usar o número do protocolo (se preenchido é porque foi aceito, caso contrário não foi transmitida ou foi rejeitada).
Para pegar o número da NF use o max(num_nf) colocando um where para quando não tiver protocolo (não enviada ou não aceita). Poderá acontecer de ter na sua tabela duas ou mais NF com o mesmo número, mas nunca o mesmo número tendo sido aceita. As que tiverem o mesmo número serão as que não tem protocolo/não foram aceitas e, nestes casos, quando forem aceitas terão mudança no número. é apenas uma idéia que tive agora, de sopetão, mas eu não usaria esta alternativa, acho pouco profissional.


Tudo de bom.
ALTAIR148 12/03/2015 09:22:33
#445167
FOXMAN,

Inclusive estou desenvolvendo a NFse para a prefeitura de Porto Alegre e pelo que vi eles adotam esse modelo da ABRASF.
Tópico encerrado , respostas não são mais permitidas