DigestValue não confere

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

DigestValue não confere

Mensagem 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. 
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

DigestValue não confere

Mensagem 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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

DigestValue não confere

Mensagem 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...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

DigestValue não confere

Mensagem 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....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder