wmixvideo/nfe

Erro no cancelamento

rafaelstelles opened this issue · 7 comments

Boa tarde pessoal,

Hoje eu fui realizar um cancelamento e aconteceu o erro abaixo. Alguém já viu algo parecido ?

Caused by: br.com.bzion.fiscal.infra.exception.OperacaoWsFacadeException: java.lang.NullPointerException: Cannot invoke "java.util.List.stream()" because the return value of "com.fincatto.documentofiscal.nfe400.classes.evento.NFEnviaEventoRetorno.getEventoRetorno()" is null
	at br.com.bzion.fiscal.infra.IntegracaoReceita.cancela(IntegracaoReceita.java:136)

Opa, boa tarde @rafaelstelles.
Voce consultou a nota apos a solicitacao de cancelamento pelo site para ver se eles anexaram o evento?
Verificou por algum campo que eventualmente marcamos como obrigatorio mas que pode nao ter vindo no retorno? As vezes existem variacoes entre os endpoints. Infelizmente padronizacao nao e o forte do governo.

Então, eu tentei ver logo depois, porém já tinha passado o período de cancelamento da nota e com a mesma eu não consegui visualizar. Eu vou simular alguns casos em um outro ambiente que temos por aqui e retorno aqui assim que tiver algum retorno.

O cStat (getCodigoStatusReposta()) estava qual valor?

Então, com o erro ele não conseguiu obter o código. Eu ainda não tive tempo de debugar para entender melhor o problema.

Abri esse PR: #1009

Merge feito!

Segue as informações sobre o problema e a correção.

Após evitar o NPE, começou a retornar a seguinte informação. <retEnvEvento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"><idLote/><tpAmb>2</tpAmb><verAplic>MS_1.0.46</verAplic><cOrgao>50</cOrgao><cStat>215</cStat><xMotivo>Rejeicao: Falha no esquema XML</xMotivo></retEnvEvento>

Com ela, eu estava com um ambiente que funciona e outro não e no caso a diferença estava no atributo dhEvento do XML. O ambiente que estava dando certo estava com o seguinte valor 2024-10-10T10:22:05-04:00 e no ambiente que não estava dando certo estava com o valor 2024-10-10T14:17:22Z. Vejam a diferença que é necessário informar o timezone.

Esse problema aconteceu, porque no meu ambiente local por padrão tem configurado timezone, porém em produção eu utilizo tudo UTC.

Para corrigir o problema bastou eu trocar o valor default da classe DFConfig na minha implementação, e começou a funcionar corretamente.