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.