Consultar e-Social

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Consultar e-Social

Mensagem por jairfab »

Já conseguir assinar, enviar e receber o retorno com o numero do protocolo, agora estou precisando consultar o resultado do procesamento e não estou conseguindo, porem eu não tenho nenuma experiencia relacionado a nota fiscal eletronica e ou processo que utiliza web service, gostara de saber onde está o erro nas funcoes em anexo.

Se algum colega pouder me dar uma dica, ficarei grato.

Documentação está em : http://portal.esocial.gov.br/institucio ... o-restrita

Código: Selecionar todos

	
FUNCTION EnviarConsulta( oRec )
	   
LOCAL cXml, cSoapAction, cWebservice, cOperation, cRetorno, cxlido
LOCAL oXML
	   

           cWebservice :="https://webservices.producaorestrita.esocial.gov.br/servicos/empregador/consultarloteeventos/WsConsultarLoteEventos.svc"
	   cSoapAction :="http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0/ServicoConsultarLoteEventos/ConsultarLoteEventos"
	   cOperation  :="ConsultarLoteEventos"
	 
	  cXml := '<eSocial xmlns="http://www.esocial.gov.br/schema/lote/eventos/envio/consulta/retornoProcessamento/v1_0_0">'  
          cXml += '<consultaLoteEventos>'  
          cXml += '<protocoloEnvio>1.2.201707.0000000000000056672</protocoloEnvio>'  
          cXml += '</consultaLoteEventos>'  
          cXml += '</eSocial>'  
	  
	  cXml := SoapEnvelope( cXml, cOperation ) //
	  	 
	  oXML := TXMLDocument():New( cXml, HBXML_STYLE_NOESCAPE )
	 
	  IF oXML:nError != HBXML_ERROR_NONE
	    MsgAlert( "xml com problema " + Str( oXML:nError ) )
	  ENDIF
	 
	  cRetorno := MicrosoftXmlSoapPost( cXml, cSoapAction, cWebservice )
	  
	  MemoWrit('.\retorno.xml',cRetorno)
	    
	  MsgAlert(cRetorno)
	 
	 RETURN Nil

	 
*------------------------------------------------------
FUNCTION MicrosoftXmlSoapPost( cXmlSoap, cSoapAction, cWebService )
	   LOCAL oServer, oDOMDoc, oError
	   LOCAL nCont
	   LOCAL cRetorno := "*ERRO*", cXmlRetorno := ""
	 
	   oServer := CreateObject( "MSXML2.ServerXMLHTTP")
	   oServer:Open( "POST", cWebService, .F. )
	   oServer:SetRequestHeader( "SOAPAction", cSoapAction )
	   oServer:SetRequestHeader( "Content-Type", "text/xml; charset=utf-8" )
	 
	   oDOMDoc = CREATEOBJECT("MSXML2.DOMDocument")
	 
	   oDOMDoc:async = .F.
	   oDOMDoc:validateOnParse  = .T.
	   oDOMDoc:resolveExternals := .F.
	   oDOMDoc:preserveWhiteSpace = .T.
	   oDOMDoc:LoadXML(cXmlSoap)

	   IF oDOMDoc:parseError:errorCode <> 0
	     MsgAlert('Erro: xML nao carregado'+CRLF+'Erro: '+ToString(oDOMDoc:parseError:Reason)+' Posição: '+ToString(oDOMDoc:parseError:linepos))
	     RETURN Nil
	   ENDIF

	   TRY
	     oServer:send(oDOMDoc:xml)
	   CATCH oError
	     MsgAlert('Falha no envio do xML')
	     RETURN Nil
	   END

	  * DO WHILE oServer:readyState <> 4
	  *   HB_milliseconds(500)
	  * ENDDO
	   cRetorno := oServer:responseText
	 
	   IF ValType( cRetorno ) == "C"
	      cXmlRetorno := cRetorno
	   ELSEIF cRetorno == NIL
	      cXmlRetorno := "*ERRO*"
	   ELSE
	      cXmlRetorno := ""
	      FOR nCont = 1 TO Len( cRetorno )
	        cXmlRetorno += Chr( cRetorno[ nCont ] )
	      NEXT
	   ENDIF
RETURN cXmlRetorno
	 
	 
FUNCTION ToString( xValue )
RETURN iif( xValue == NIL, "", xValue )
	  
	 
	 
*----------------------------------------------
FUNCTION SoapEnvelope( cXml, cOperation )
LOCAL cXmlEnvelope

*cMethod:= "EnviarLoteEventos"
cMethod:= "ConsultarLoteEventos"
cXmlEnvelope:= '<?xml version="1.0" encoding="utf-8"?>'  
cXmlEnvelope+= '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">'  
cXmlEnvelope+= '<soap:Header/>'  
cXmlEnvelope+= '<soap:Body>'  
cXmlEnvelope+=   cXml
cXmlEnvelope+= '</soap:Body>'  
cXmlEnvelope+= '</soap:Envelope>'  

 
MemoWrit('.\vai.xml',cXmlEnvelope)
	
RETURN cXmlEnvelope
	 
*--------------------------------
FUNCTION XmlTag( cNome, cConteudo )
	   IF Empty( cConteudo )
	      RETURN "<" + cNome + " />"
	   ENDIF
RETURN "<" + cNome + ">" + cConteudo + "</" + cNome + ">"
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
Responder