André;
Boas Práticas para NFCe
Quando se emite NFCe em geral o clientes está esperando a nota na boca do caixa, então devido a isso não podemos esperar o retorno da SEFAZ por mais de 3 a 5 minutos.
Dito isso:
1 - Gerar e enviar a NFCe para a SEFAZ autorizadora, aguardar a resposta:
Caso "TIMEOUT":
a - em caso de timeout, ficamos num estado de INDEFINIÇÃO, ou seja não sabemos se a NFCe foi ou não recebida, nesse caso esperamos mais 1 minuto e consultamos pela CHAVE
Caso "NFCe Não localizada" ou novo TIMEOUT, mudamos para contingência, incrementamos o número da NFCe e emitimos em contingência OFFLINE, e entregamos ao cliente
b - continuamos a consulta pela chave (da NFCe em estado de INDEFINIÇÃO), depois de uma hora e de hora em hora
c - enviamos a NFCe em contingência, assim que a SEFAZ retornar a operar
d - depois de algumas horas, se a NFCe em estado de INDEFINIÇÃO, ainda estiver como "NÃO LOCALIZADA", então devemos INUTILIZAR o número dessa NFCe
e - depois de algumas horas de a NFCe em estado de INDEFINIÇÃO, for autorizada, devemos substituí-la pela NFCe seguinte que foi emitida em modo OFFLINE
caso "SEFAZ STATUS indisponível":
- gerar as NFCe em modo contingência OFFLINE, e envial-las tão logo a SEFAZ autorizadora retorne
Atender as regras e manter o cliente satisfeito é uma linha tênue, pois mesmo ocorrendo um TIMEOUT na NFCe, ainda pode ocorrer o processamento da NFCe no backend da SEFAZ, até uma hora após o seu envio sem uma resposta.
Devemos manter o nosso próprio timeout (ou o tempo de espera pela resposta) em pelo menos uns 120 segundos, o que já é um tempo de espera bastante longo.
E mais pelo menos um minuto a mais para tentar obter ao retorno da consulta da chave, e mesmo recebendo um "NÃO LOCALIZADA" não significa necessariamente que a NFCe não esteja sendo processada pelo backend da SEFAZ.