Clipper On Line • Ver Tópico - Tentando homologar SEFAZ/GO
Mudar para estilo Clássico
Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour
Postar uma resposta

Tentando homologar SEFAZ/GO

11 Out 2018 16:35

Deu certo Quintas
Anexos
12.png

Tentando homologar SEFAZ/GO

11 Out 2018 19:12

Sabe Quintas. Trabalhando melhor no sistema descobri que o problema não estava na rotina desatualizada e sim no retorno correto das mensagem de erro.

Exemplo :

Antes:
Código:

  cReciboAutorizado := "Status: " + XmlNode( cXmlProtocolo, "cStat" ) + HB_EOL()
  cReciboAutorizado += "Motivo: " + XmlNode( cXmlProtocolo, "xMotivo" ) + HB_EOL()



Correção:

Código:
   cReciboAutorizado := "Ambiente: " +XmlNode( XmlNode( oSefaz:cXmlRetorno, "infProt" ), "tpAmb" ) + HB_EOL()
   cReciboAutorizado += "Aplicação: " + XmlNode( XmlNode( oSefaz:cXmlRetorno, "infProt" ), "verAplic" ) + HB_EOL()
   cReciboAutorizado += "Chave: " + XmlNode( XmlNode( oSefaz:cXmlRetorno, "infProt" ), "chNFe" ) + HB_EOL()
   cReciboAutorizado += "Status: " + XmlNode( XmlNode( oSefaz:cXmlRetorno, "infProt" ), "cStat" ) + HB_EOL()
   cReciboAutorizado += "Motivo: " + XmlNode( XmlNode( oSefaz:cXmlRetorno, "infProt" ), "xMotivo" ) + HB_EOL()


Então todo o problema estava na mensagem de retorno exibindo corretamente na tela.

Tentando homologar SEFAZ/GO

11 Out 2018 19:21

Resta confirmar se todas as UFs estão seguindo o mesmo padrão.

Mas isso resolve um problemão que eu estava tentando resolver.

Usar isso pra corrigir estas variáveis:

oSefaz:cStatus
oSefaz:cMotivo

Tentando homologar SEFAZ/GO

11 Out 2018 20:15

Alterado na sefazclass.

https://github.com/JoseQuintas/sefazclass/commit/e4aeac453bdf793e7d72985b4798064d692b1e43

Acho que agora minha rotina de falha na sefaz vai funcionar.... rs

Código:
   oSefaz := SefazClass():New()
   oSefaz:cVersao := MDFE_VERSAO
   oSefaz:MDFeLoteEnvia( cXml, "1", "SP", NomeCertificado( AppEmpresaApelido() ), "1" )
   DO WHILE .T.
      IF oSefaz:cStatus $ "100,101,202,302"
         hb_MemoWrit( hb_Cwd() + "IMPORTA\MDFE-" + jpmdfcab->mcNumLan + "-Autorizado.xml", oSefaz:cXmlAutorizado )
         oXmlPdf := XmlPdfClass():New()
         oXmlPdf:cChave := cChave
         oXmlPdf:cXmlEmissao := oSefaz:cXmlAutorizado
         oXmlPdf:GeraPdf()
         MsgExclamation( iif( oSefaz:cStatus == "100", "MDFE Autorizado", "MDFE Denegado" ) )
         EXIT
      ENDIF
      IF oSefaz:cStatus $ "104,105" // processado / em processamento
         Mensagem( "Problemas na SEFAZ. Nova tentativa de obter retorno em 3 minutos, ESC abandona" )
         IF Inkey(180) != K_ESC
            Mensagem( "Tentando novamente" )
            oSefaz:MDFeConsultaRecibo()
            LOOP
         ENDIF
      ENDIF

      hb_MemoWrit( "NFE\MDFE-" + jpmdfcab->mcNumLan + "-02-SemAssinatura.xml",  cXml )
      hb_MemoWrit( "NFE\MDFE-" + jpmdfcab->mcNumLan + "-03-Assinado.xml",  oSefaz:cXmlDocumento )
      hb_MemoWrit( "NFE\MDFE-" + jpmdfcab->mcNumLan + "-04-Recibo.xml",    oSefaz:cXmlRecibo )
      hb_MemoWrit( "NFE\MDFE-" + jpmdfcab->mcNumLan + "-05-Protocolo.xml", oSefaz:cXmlProtocolo )
      hb_MemoWrit( "NFE\MDFE-" + jpmdfcab->mcNumLan + "-06-Retorno.xml",   oSefaz:cXmlRetorno )
      Errorsys_WriteErrorLog( oSefaz:cXmlSoap, 3 )
      Errorsys_WriteErrorLog( oSefaz:cXmlRetorno )
      IF ! Empty( oSefaz:cMotivo )
         MsgExclamation( "Erro " + oSefaz:cStatus + " " + oSefaz:cMotivo )
      ELSE
         MsgExclamation( "Erro desconhecido " + Pad( oSefaz:cXmlProtocolo, 1000 ) )
      ENDIF
      EXIT
   ENDDO

Tentando homologar SEFAZ/GO

11 Out 2018 20:29

Testei encima de protocolos pra garantir...

Código:
#include "inkey.ch"

PROCEDURE PTESPROT

   LOCAL cnMySql := ADOClass():New( AppcnMySqlLocal() ), nKey := 0

   cnMySql:cSql := "SELECT * FROM JPXML2018 ORDER BY XXINFINC DESC"
   cnMySql:Execute()
   DO WHILE nKey != K_ESC .AND. ! cnMySql:Eof()
      SayScrollList( ;
         cnMySql:StringSql( "XXCHAVE" ), ;
         PegaXml( "cStat", cnMySql:StringSql( "XXXML" ) ), ;
         PegaXml( "xMotivo", cnMySql:StringSql( "XXXML" ) ) )
      nKey := Inkey(5)
      cnMySql:MoveNext()
   ENDDO
   cnMySql:CloseRecordset()

   MsgExclamation( "Fim" )

   RETURN

STATIC FUNCTION PegaXml( cNode, cXml )

   RETURN XmlNode( XmlNode( cXml, "infProt" ), cNode )


testeprot.png


Nota: não vale pra eventos, por isso alguns em branco., porque são eventos.
Postar uma resposta