Para as aplicações que utilizam a conexão direta com o Manager SaaS, existe a necessidade de se implementar o fluxo de contingência.
O objetivo da contingência é principalmente para casos onde o estabelecimento se encontra sem internet, mas mesmo em aplicações web, essa rotina deve ser implementada. Isso porque os servidores da SEFAZ podem sofrer oscilações e, nesses casos, a aplicação pode continuar emitindo as notas, usando o modo Contingência Offline.
Realizando o envio em Contingência Offline
O fluxograma acima representa os passos que devem ser executados para que se possa enviar uma nota em modo de Contingência Offline.
No início da operação, deve-se disparar uma requisição de verificação do Status do Serviço. Ela serve para testar a conexão com a SEFAZ. Tendo recebido o retorno "Serviço em Operação", basta então gerar o envio em modo normal, utilizando a rota de envio.
A contingência deve ser enviada, quando o retorno vier diferente de "Serviço em Operação", podendo ser um outro retorno da SEFAZ, ou um timeout, por exemplo, "Tempo limite de comunicação com a SEFAZ/PREFEITURA atingido. Utilize a rota consulta para obter a situação do documento."
Quando isso ocorrer, deve-se disparar uma requisição de configuração para o Manager SaaS, utilizando a rota MODO, informando o parâmetro modo=10. Isso faz com que o modo de envio do Manager SaaS mude de Normal para Contingência Offline. A seguir, pegue o TX2/XML de envio, incrementando a numeração e adicionando as tags de contingência (tpEmis=9, dhCont e xJust) e mande isso para a rota de envio enquanto estiver com a conexão com a SEFAZ.
Assim que a SEFAZ estabilizar solicite novamente a rota MODO, mas agora passando modo=1, isso fara com que o modo de envio volte de Contingência Offline, para Normal. Após, aplicar um Resolve em todas as notas REGISTRADAS para que as mesmas AUTORIZEM, caso por alguma validação a nota REJEITAR, realizar o Descarte da mesma, corrigir e reenviar com a mesma SÉRIE, NÚMERO e cNF já em modo Normal. Se a nota AUTORIZAR encerrar o fluxo.
Observações e Recomendações
A primeira observação é a de que pode acontecer de o Status do Serviço retornar Serviço em Operação, mas o envio da nota receber timeout. Nesse caso, também deve-se acionar a Contingência Offline, usando o mesmo cNF, incrementando o nNF (em caso onde o controle da numeração não é feito pelo SaaS).
A segunda observação é a de que em casos de oscilação da SEFAZ, a solução da nota pendente, também pode apresentar timeout. Nesse caso, deve-se incrementar uma rotina para que fique consultando a situação dessa nota, usando rota de CONSULTA, até que venha uma situação final (rejeitada ou autorizada). A verificação deve ser feita pelo menos a cada 30 segundos
E a recomendação a ser realizada, é no momento antes de enviar o modo=1. Não existe a necessidade de se realizar essa troca de configuração a cada envio. Nesse caso, pode se implementar um timeout para verificar o Status do Serviço a cada 5 minutos, por exemplo, e só trocar o modo de envio, quando vier uma resposta diferente da anterior.
Para os casos em que o cliente levar a NFCe emitida em Contingência e essa posteriormente Rejeitar, reenviar com a mesma Serie, Número e cNF, valida fiscalmente esse documento, pois o novo envio em modo Normal com os mesmo dados gera a mesma chave da nota que o cliente levou.
Referência:https://blog.tecnospeed.com.br/contingencia-offline-da-nfce/
Comentários
1 comentário
Perfeita a orientação!
Por favor, entre para comentar.