Problema
Falha ao efetuar parse do CF-e no processamento via DF-e Client – Layout do xml não confere.
Solução/Procedimento
Se ao processar um documento JSON (cielopos ou microsjon) na integração SAT e ocorrer o erro abaixo a provável causa do problema será a nomenclatura do arquivo.
A seguinte exceção será lançada no log do DF-e Client:
org.dom4j.DocumentException: <strong>Falha ao efetuar parse da mensagem, layout do xml nao confere</strong> at br.com.oobj.me.entidade.envelope.xmlbind.sat.EnvelopeRetornoSatXmlBind.unbind(EnvelopeRetornoSatXmlBind.java:56) at br.com.oobj.me.retorno.sat.GeradorRespostaSAT.salvarCFeNaPasta(GeradorRespostaSAT.java:68) at br.com.oobj.me.retorno.sat.GeradorRespostaSATTXTSimpl.gerarResposta(GeradorRespostaSATTXTSimpl.java:50) at br.com.oobj.me.retorno.sat.GeradorRespostaSATPOSCielo.gerarResposta(GeradorRespostaSATPOSCielo.java:46) at br.com.oobj.me.retorno.RespostaService.responder(RespostaService.java:65) at br.com.oobj.me.retorno.ConsumidorRespostasLote.novaMensagem(ConsumidorRespostasLote.java:77) at br.com.oobj.util.fila.ConsumidorNotificanteOneMessage.processarComCommitSincrono(ConsumidorNotificanteOneMessage.java:356) at br.com.oobj.util.fila.ConsumidorNotificanteOneMessage.execute(ConsumidorNotificanteOneMessage.java:176) at br.com.oobj.util.fila.ConsumidorNotificanteOneMessage.run(ConsumidorNotificanteOneMessage.java:137) at java.lang.Thread.run(Thread.java:745)
Quais integrações podem ser afetadas ?
- Integração Via DLL (Micros)
- Integração HTTP
Exemplo hipotético de como este problema pode acontecer:
Foi realizado a tentativa de emissão de um cupom fiscal no dia 10/09, porém por algum motivo o documento foi rejeitado e a correção não foi realizada no mesmo dia.
No dia 10/10 foi realizado uma verificação e foi constatado que o documento ainda estava rejeitado, foi então realizado a correção do documento e o arquivo reenviado e de imediato ocorreu a exceção no log ao converter o arquivo para o layout CF-e.
Ocorre que o DF-e Client valida a nomenclatura do arquivo para fazer um controle interno de numeração e no caso desse exemplo a nomenclatura do arquivo reenviado no dia 10/10 estava da seguinte forma.
- microsjson- 00029442006562100919.txt
Mas o que tem de errado na nomenclatura ?
Para entender o que está errado precisamos entender a composição da nomenclatura.
- Os 10 primeiros números é gerado pelo micros como sendo um ID que nunca se repete para outra conta.
- Os próximos 4 números é o número da conta
- Os 6 últimos números é a data de emissão do cupom fiscal.
Visto isso temos:
- idPDVSemRepeticao = 0002944200
- Número da conta = 6562
- Data do processamento = 100919 (Dia/Mês/Ano)
Neste exemplo o problema está nos 6 últimos números, visto que o valor 10 é referente ao dia da emissão, 09 é o mês da emissão e 19 o ano da emissão.
O correto seria alterar o mês para 10, ficando a nomenclatura do arquivo da seguinte forma:
- microsjson-00029442006562101019.txt
Vejam que agora a posição referente ao mês está com o valor 10 e nesse caso o documento pode ser reprocessado e não ocorrerá a exceção.
Para saber mais sobre a integração Micros e CieloPos vejao seguinte artigo.
Referência