Esse post vai lhe ajudar, quando o seu cenário for o seguinte:


- Possui o XML de envio no diretório de log;
- NÃO possui o XML de retorno com a situação da nota;
- Existe um arquivo na pasta XmlDestinatario sem extensão, cujo o nome dele é a chave da nota.

 

Esse cenário acontece quando se envia a nota para a sefaz, mas por alguma falha de comunicação, o componente não recebeu o XML de retorno dessa nota, que informa qual a situação dela na sefaz. Essa falha na comunicação pode ser um problema na rede do cliente ou uma oscilação na sefaz, por exemplo.

 

Quando isso ocorre, o componente cria um arquivo na pasta XmlDestinatario, cujo o nome desse arquivo é a chave da nota e ele não possui extensão. Esse arquivo é um ponteiro, que aponta para o XML de envio correto dessa nota, que é encontrado no diretório de Logs configurado no componente.

 

Para que essa situação seja resolvida, deve-se realizar uma consulta da chave da nota, utilizando o método ConsultarNF do componente. Caso o XML de envio dessa nota e o XML de retorno, que vai vir no retorno da consulta, estiverem corretos, o arquivo ponteiro será removido automaticamente na pasta XmlDestinatario e o XML destinatário será gerado automaticamente.

 

Em caso de inconsisntência em alguns dos dois XMLs, deve-se corrigir o problema utilizando o método GerarXMLEnvioDestinatario .

 

Para evitar que esse problema ocorra novamente na sua aplicação, é altamente aconselhável que seja implementado um timeout, que comece a contar depois que o método de envio for chamado. Se o timeout estourar, sem que tenha recebido o arquivo de retorno da sefaz, envie uma consulta da chave pelo método ConsultarNF, antes de realizar um novo envio. Dessa forma já saberá a situação dessa nota e, se ela ela estiver autorizada, já terá o XML destinatário, mas se ela estiver rejeitada, poderá corrigir e emitir novamente, sem que a duplicidade ocorra.