Aqui temos o seguinte fluxo de envio, não é 100% pois sempre somos surpreendidos com alguma novidade, mas no geral atende muito bem.
AUTORIZAÇÃO DA NFC-e
-> Ocorrem erros que mapeamos como Timeout:
- essa NFC-e é gravada como "PENDENTE" no banco de dados junto com o XML e fica travada
- operador recebe um aviso em tela que houve um erro ao enviar a NFC-e
- é habilitado envio OFFLINE das NFC-e
- o sistema duplica a NFC-e, sobe a numeração e envia como "OFFLINE"
- imprime 2 vias do extrato
- existe uma flag no sistema "Emitir Online Automaticamente", se houver internet na próxima venda o sistema tenta autorizar direto a NFC-e, senão joga como OFFLINE
Á partir disso temos um monitor de NFC-e que fica monitorando NFC-e "OFFLINE" e "PENDENTE"
OFFLINE -> o monitor só envia e protocola a autorização no XML
PENDENTE -> aqui a coisa complica um pouco:
1 - monitor primeiro consulta se essa chave já existe na SEFAZ se existir ele cancela "por substituição" passando o número da NFC-e que foi gerada em contingência
2 - se a chave ainda não existir na SEFAZ ele automaticamente solicita a inutilização dessa numeração pendente