Página 1 de 1

DigestValue não confere

Enviado: 02 Mar 2018 19:55
por jelias
Olá amigos,

Nestes últimos dias estou sofrendo com alguns problemas incomuns. Irei explicar minha rotina.

Acontece que, após enviar uma NF-e para o ACBrPlus, o arquivo de retorno pode travar, por razões que na maioria das vezes não tem nada com o ACBrPlus. Sendo assim, eu não sei se a NF-e foi autorizada pela Receita corretamente e o sistema não tem a confirmação por não poder tratar o retorno. Como não tenho o retorno, o que faço e deixar o usuário enviar novamente. Caso o retorno apresente a mensagem de duplicidade, eu sei que a NF-e foi emitida corretamente, entretanto o XML pode estar desatualizado, e para atualizar faço uma consulta para receber a confirmação que a NF-e está autorizada. 

Passos: ACBr MonitorPLUS Ver.1.1.0.33

1. - NFE.CriarEnviarNFE() - Se o retorno foi cStat=100, tudo certo com a NF-e, envio o e-mail e imprime o DANFE. Se for DENEGADA, também faço o procedimento. Se estiver com erros, apresento ao usuário.

2. - Caso o arquivo de retorno trave, eu não consiga ler para saber o que aconteceu, faço o seguinte, libero o sistema para o usuário enviar novamente, 

      NFE.CriarEnviarNFE() - Envio o arquivo TXT novamente e o ACBrPlus gera o TXT novamente.

     Se o retorno for duplicidade, faço uma consulta NFE.CONSULTARNFE(G:\NFEPDS\XML\Mar2018\31180319678344000182550010000054481000054488-nfe.XML)

     Nunca tive problemas, o ACBrPlus atualizava o XML pra mim e eu imprimia o DANFE e enviava o e-mail. Sempre fiz desta maneira. 

    Acontece que hoje, recebi o seguinte retorno.

   02/03/2018 17:35:51 - NFE.CONSULTARNFE(G:\NFEPDS\XML\Mar2018\31180319678344000182550010000054481000054488-nfe.XML)  
   02/03/2018 17:35:52 - ERRO: Autorizado o uso da NF-e

   DigestValue do documento 31180319678344000182550010000054481000054488 não confere.

- Alguma coisa modificou neste processo?

- Como  neste cliente existe muitos usuários, pode ser que algum tenha gerado a NF-e com uma versão antiga do ACBrNFeMonitor2 0.9.10.0 e agora outra máquina pode estar tentando criar o XML e pode estar modificando algo?

Código: Selecionar todos

nArquivo=FOPEN(cFileRetorno,0)
if nArquivo = -1
   Autorizada=.F.
   cDenegada=.F.
   //---------------------------------------------------------------------------------------------------------------
   // Caso o sistema não consiga abrir o arquivo TXT, irei fazer mais uma tentativa com MEMORED
   // Não sei por qual razao, parece que o acbr está travando o arquivo e não consigo abrir 
   // por isso fiz esta rotina abaixo para testar.
   if FILE(cFileRetorno)
      gTexto:=MEMOREAD(cFileRetorno)
      if AT("CStat=100",gTexto)>0
	      Autorizada=.T.
      elseif (AT("CStat=110",gTexto)>0 .or. AT("CStat=301",gTexto)>0 .or. AT("CStat=302",gTexto)>0 .or. AT("CStat=205",gTexto)>0)
	      cDenegada=.T.
      end
   end
else   
   lEof=.F.
   cStat=.F.
   Autorizada=.F.
   cDenegada=.F.
   vChave=""
   RetCStat=""
   do whil !lEof
      cLinha=LINHAARQ(nArquivo,1024)
      cStat=IIF(ALLTRIM(cLinha)="[NFE"+ALLTRIM(STR(VAL(AL_SAIDA->codigo),6))+"]",.T.,cStat)
      if cStat
         if LEFT(cLinha,5)="CStat"
            RetCStat=SUBS(cLinha,7,3)
 	         if SUBS(cLinha,7,3)="100"
 	            // Nota Fiscal Altorizada
 	            Autorizada=.T.
 	         elseif (SUBS(cLinha,7,3)="110" .or. SUBS(cLinha,7,3)="301" .or. SUBS(cLinha,7,3)="302" .or. SUBS(cLinha,7,3)="205")
 	            // Nota Fiscal Denegada
 	            cDenegada=.T.
 	         end
         end
      end
   end 
end
FCLOSE(nArquivo) 
sFileCopy:=""
if (!Autorizada .and. !cDenegada)
   //-------------------------------------------------------------------------
   // Se na primeira consulta nao houve retorno
   // cStat = 100 - Autorizado Uso da NF-e
   // cStat = 110 / 301 / 302 = Nota Fiscal Denegada
   // Aconteceu algum problema no arquivo de retorno da NF-e
   
   *sFileCopy:=aw_acbr+"SAINFE"+ALLTRIM(AL_SAIDA->serien)+AL_SAIDA->codigo+".COP"
   *COPY FILE &cFileRetorno TO &sFileCopy
   FERASE( cFileRetorno )
   
   cLine := "NFE.CONSULTARNFE("+ALLTRIM(AL_SAIDA->arqxml)+")"+cCHR
   HB_MEMOWRIT( cFileEnvio, cLine )

   nCont:=1
   do whil !FILE(cFileRetorno) .and. nCont<=120
      inkey(1) ; nCont++
   end

   if FILE(cFileRetorno)
      gTexto:=MEMOREAD(cFileRetorno)
      if AT("CStat=100",gTexto)>0
	      Autorizada=.T.
      elseif (AT("CStat=110",gTexto)>0 .or. AT("CStat=301",gTexto)>0 .or. AT("CStat=302",gTexto)>0 .or. AT("CStat=205",gTexto)>0)
	      lDenegada=.T.
      end
   end
   
   *__COPYFILE( cFileRetorno, cFileArquivoRetorno ) 
   FERASE( cFileRetorno )
   *AEVAL( DIRECTORY(aw_nfe+"xml\*-rec.xml","D"), {|aFile| FERASE(aw_nfe+"xml\"+aFile[1]) })
end
Desde já agradeço.

Saudações, 

Júlio. 

DigestValue não confere

Enviado: 03 Mar 2018 18:05
por lucimauro
Eu também já tive esse problema na consulta da nf-e, resolvi desabilitando no acbrmonitor a opção (Validar digest value ao consulta XML) na aba Dfe do acbr.

DigestValue não confere

Enviado: 03 Mar 2018 21:09
por JoséQuintas
O digestvalue é algo como um dígito de controle do XML, e esse digestvalue é que acaba sendo assinado.

Digestvalue diferente significa que a nota também está diferente.
O XML atual tem um conteúdo diferente do XML que foi autorizado.
Pode ser um horário, pode ser a nota inteira...

DigestValue não confere

Enviado: 03 Mar 2018 21:26
por JoséQuintas
Complemento:

No momento vocês tem notas falsificadas.
Sim... se as notas são diferentes das originais... e estão se passando por autorizadas.... então são falsificadas.

O que pode acontecer?
Sei lá...
Continuo achando tudo isso uma porcaria, e que o governo nunca vai admitir que fez porcaria.

Fazendo notas iguais a essas, os políticos podem tirar muito dinheiro do governo.
Vão cobrar 1 milhão do governo, com base em notas autorizadas de 1 real....