Página 3 de 4

E-social Consulta

Enviado: 12 Set 2017 22:29
por jairfab
Precisa ser a versão do xharbour 1.2.3

E-social Consulta

Enviado: 12 Set 2017 22:44
por JoséQuintas
Fiz um teste com ServerXMLHTTP, especificando certificado, ok.
test.prg
(2.69 KiB) Baixado 396 vezes
Notas sobre este fonte:

- Pra isto funcionar, só adicionando sefazclass.hbc, ou colocando direto o nome do certificado:
oESocial:cCertificado := CapicomEscolheCertificado()
- Troquei pra ServerXMLHTTP e configurei certificado (obtido na linha da nota anterior)
oComunicacao = win_oleCreateObject( "MSXML2.ServerXMLHTTP" )
oComunicacao:setOption( 3, "CURRENT_USER\MY\" + ::cCertificado )
- inclui sugestão pra xHarbour, que poderia ser fonte separado:
#ifdef __XHARBOUR__
FUNCTION win_oleCreateObject( cNome ) ; RETURN xhb_CreateObject( cNome )
#endif
Como era esperado, reclama que não é o certificado do "dono" da informação.
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelop ... osResponse xmlns="http://www.
esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0"><ConsultarLoteEventosResult>
<eSocial xmlns="http://www.esocial.gov.br/schema/lote/e ... nto/v1_3_0" xmlns:xsd="http://www.w
3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan ... status><cd
Resposta>504</cdResposta><descResposta>Solicitaçπo de consulta incorreta - Erro Certificado.</descResposta><ocorrencias>
<ocorrencia><codigo>604</codigo><descricao>O retorno do processamento do lote somente é acessivel a quem enviou a solici
taçπo
.</descricao><tipo>1</tipo></ocorrencia></ocorrencias></status></retornoProcessamentoLoteEventos></eSocial></Consul
tarLoteEventosResult></ConsultarLoteEventosResponse></s:Body></s:Envelope>
Tá tudo no fonte anexo, por isso achei desnecessário formatar como fonte na mensagem.

E-social Consulta

Enviado: 12 Set 2017 22:55
por JoséQuintas
Esqueci....

Como foi trocado pra ServerXMLHTTP, dá pra trocar outra parte do fonte também:

Trocar isto:
DO WHILE oComunicacao:readyState <> 4
Inkey( 0.5 )
ENDDO
Por isto:
oServer:WaitForResponse( 500 )
Convém fazer testes antes de trocar de vez, vai que também tem problema de compatibilidade...
Mas desse jeito fica exatamente igual ao da classe Sefaz, poderia até ser usado o método dela diretamente.

E-social Consulta

Enviado: 13 Set 2017 10:22
por Eroni
Bom dia,

Usei o xHarbour 1.2.3 sem fivewin, pois não tenho a versão atualizada, mesmo erro:

Código: Selecionar todos

----------------------------- xHarbour Error Log ------------------------------

Date...............: 09/13/17
Time...............: 10:15:03

Application name...: D:\Tmp\Teste\Teste.Exe
Workstation name...: ERONI-DEL
Available memory...: 2086164
Current disk.......: D
Current directory..: Tmp\Teste
Free disk space....: 166697877504

Operating system...: Windows 8 6.2.9200
xHarbour version...: xHarbour 1.2.3 Intl. (SimpLex) (Build 20161218)
xHarbour built on..: Dec 18 2016 11:10:32
C/C++ compiler.....: Borland/Embarcadero C++ 7.0 (32-bit)
Multi Threading....: NO
VM Optimization....: 2
Subsystem Call ....: MSXML2.ServerXMLHTTP
System Code .......: 14
Default Status ....: .F.
Description .......: DISP_E_BADPARAMCOUNT
Operation .........: SEND
Arguments .........:  [ 1] = Type: C Val: <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0"><soapenv:Header/><soapenv:Body><consultaLoteEventos><consulta><eSocial xmlns="http://www.esocial.gov.br/schema/lote/eventos/envio/consulta/retornoProcessamento/v1_0_0"><consultaLoteEventos><protocoloEnvio>1.2.201709.0000000000000226099</protocoloEnvio></consultaLoteEventos></eSocial></consulta></consultaLoteEventos></soapenv:Body></soapenv:Envelope>
Involved File .....: 
Dos Error Code ....: 0

 Trace Through:
----------------
TOLEAUTOX:SEND        :       0 in Module: Source\W32OLE.PRG
ESOCIALCLASS:MICROSOF :      79 in Module: Source\main.prg
ESOCIALCLASS:CONSULTA :      63 in Module: Source\main.prg
MAIN                  :      14 in Module: Source\main.prg
Baixei o fonte do José e somente coloquei o certificado manualmente, pois tenho ele gravado em banco de dados. Será que pode ser alguma coisa no meu Windows? Vou tentar desregistrar e registrar novamente a capicom, depois posto o resultado.
Grato,

E-social Consulta

Enviado: 13 Set 2017 11:36
por JoséQuintas
Tem horas que é phoda.....

A coisa mais antiga do Xharbour é CreateObject(), existe antes de existirem os DBFs.

Não vi nenhuma mensagem de alguém testar com esse.

E-social Consulta

Enviado: 13 Set 2017 11:38
por Kapiaba
Eroni, na parte do OLE, você está fazendo assim?

Código: Selecionar todos

   #IFDEF __XHARBOUR__  // xHarbour

      Try
          oHttp2 := CreateObject( "MSXML2.ServerXMLHTTP.6.0" )
      Catch
         MsgInfo('Erro na Criação do Serviço')
         Return .f.
      End

   #ELSE

      Try
         oHttp2 := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0")
      Catch
         MsgInfo('Erro na Criação do Serviço!', 'Atenção!')
         exit
      End

   #ENDIF
Abs

E-social Consulta

Enviado: 13 Set 2017 11:52
por JoséQuintas
Mexendo no fonte do kapiaba.

Sugestão 1:

Código: Selecionar todos

TRY
#ifdef __XHARBOUR__ // xHarbour
     oHttp2 := CreateObject( "MSXML2.ServerXMLHTTP.6.0" )
#else
    oHttp2 := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0")
#endif
   CATCH
    MsgInfo('Erro na Criação do Serviço')
    Return .f.
   End
Sugestão 2:

Não mexer na classe, e criar fonte extra em separado pra não ter que mexer novamente:
(opcionalmente, como na sefaz, poderia fazer parte de um ze_xharbour.prg como adicional pra xHarbour)
Deste jeito os fontes da classe ficam iguais pra todos.

Código: Selecionar todos

#ifdef __XHARBOUR__
   FUNCTION win_OleCreateObject( cName ); RETURN CreateObject( cName )
#endif

Aliás... fica até claro o que está sendo resolvido: um substituto pra win_OleCreateObject()

E talvez seja necessário no mesmo fonte:

Código: Selecionar todos

#ifdef __XHARBOUR__
FUNCTION win_OleCreateObject( cName )
   DO CASE
   CASE cName == "ServerXMLHTTP" ; cName := "ServerXMLHTTP.6.0"
   ENDCASE
   RETURN CreateObject( cName )
#endif
NO HARBOUR, pelo menos no 3.4, não precisa dizer qual é a versão, ela é selecionada automaticamente.

E-social Consulta

Enviado: 13 Set 2017 12:37
por Eroni
João, tentei como no seu exemplo, também o mesmo erro:

Código: Selecionar todos

Subsystem Call ....: MSXML2.XMLHTTP
System Code .......: 3
Default Status ....: .F.
Description .......: DISP_E_MEMBERNOTFOUND
Operation .........: SEND
Arguments .........:  [ 1] = Type: C Val: <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0"><soapenv:Header/><soapenv:Body><consultaLoteEventos><consulta><eSocial xmlns="http://www.esocial.gov.br/schema/lote/eventos/envio/consulta/retornoProcessamento/v1_0_0"><consultaLoteEventos><protocoloEnvio>1.2.201709.0000000000000226099</protocoloEnvio></consultaLoteEventos></eSocial></consulta></consultaLoteEventos></soapenv:Body></soapenv:Envelope>
Involved File .....: 
Dos Error Code ....: 0
Tentei com todas as opções:

Código: Selecionar todos

TRY
//    oComunicacao:= CreateObject( "MSXML2.ServerXMLHTTP" )
//    oComunicacao:= CreateObject( "MSXML2.ServerXMLHTTP.6.0" )
  oComunicacao:= CreateObject( "MSXML2.ServerXMLHTTP.5.0" )
  CATCH
    alert( "Erro na criação do objeto." )
    RETURN( .F. )
END
Nenhuma delas deu erro na criação do objeto.

E-social Consulta

Enviado: 13 Set 2017 12:43
por JoséQuintas
Parece que depende da LIB, depende da versão, depende sei lá do raio que o parta, xHarbour é phoda.
Algumas das compatibilidades xHarbour pra isso que passaram pela Sefazclass
xhb1.png
xhb2.png
xhb3.png
Lembrando que uma coisa estraga a outra.
Ou usa uma coisa no aplicativo inteiro ou usa a outra, duas ou mais ao mesmo tempo não dá.
Se a LIB também tiver alguma coisa própria, e misturar também não dá.
Falta de padronização de xHarbour e LIBs é problema sério.

E-social Consulta

Enviado: 13 Set 2017 12:48
por Kapiaba
kkkkkkkkk, boa mister Quintas xHarbour é o bixo.... kkkkkkkkkkkkkk - Adoro xHarbour!!

Eroni, Onde está sendo acionado isto ao se tentar enviar algo(SEND()) ?

Código: Selecionar todos

Description .......: DISP_E_MEMBERNOTFOUND
5	Operation .........: SEND

Abs.

E-social Consulta

Enviado: 13 Set 2017 13:00
por Eroni
Segue o código:

Código: Selecionar todos

#include "hbclass.ch"

#ifndef XML_UTF8
 #define XML_UTF8     '<?xml version="1.0" encoding="utf-8"?>'
#endif
*----------------------------------------------------------------------------*
FUNCTION Main()

LOCAL oSefaz := ESocialClass():New()

WITH OBJECT oSefaz
 :cChave   := "1.2.201709.0000000000000226099"
 :cCertificado := "SERASA Certificadora Digital v2"
 :ConsultaRetornoLote( )
END WITH

alert(oSefaz:cXmlRetorno ,"Retorno da consulta linha 93")

hb_MemoWrit( "retorno.xml", oSefaz:cXmlRetorno )

RETURN( NIL )
*----------------------------------------------------------------------------*

CREATE CLASS ESocialClass

  VAR cCertificado INIT ""
  VAR cChave    INIT "1.2.201709.0000000000000236025"
  VAR cUrl     INIT ""
  VAR cSoapAction INIT ""
  VAR cXmlDocumento INIT ""
  VAR cXmlEnvelope INIT ""
  VAR cXmlRetorno INIT ""

  METHOD ConsultaRetornoLote( )
  METHOD MicrosoftXmlSoapPost()

ENDCLASS

*----------------------------------------------------------------------------*
METHOD ConsultaRetornoLote( ) CLASS ESocialClass

::cUrl    := "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"

::cXmlDocumento := '<eSocial xmlns="http://www.esocial.gov.br/schema/lote/eventos/envio/consulta/retornoProcessamento/v1_0_0">' + ;
 '<consultaLoteEventos>' + ;
   '<protocoloEnvio>' + ::cChave + '</protocoloEnvio>' + ;
 '</consultaLoteEventos>' + ;
 '</eSocial>'

::cXmlEnvelope := XML_UTF8 + ;
 '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ' + ;
  'xmlns:v1="http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0">' + ;
  '<soapenv:Header/>' + ;
  '<soapenv:Body>' + ;
 '<consultaLoteEventos>' + ;
  '<consulta>' + ;
  ::cXmlDocumento + ;
  '</consulta>' + ;
  '</consultaLoteEventos>' + ;
  '</soapenv:Body>' + ;
 '</soapenv:Envelope>'

hb_MemoWrit( "consulta.xml", ::cXmlEnvelope )

::MicrosoftXmlSoapPost()

RETURN ::cXmlRetorno

*----------------------------------------------------------------------------*
METHOD MicrosoftXmlSoapPost() CLASS ESocialClass

LOCAL oComunicacao

//oComunicacao:= xHB_CreateObject( "MSXML2.ServerXMLHTTP" )
//oComunicacao:= xHB_CreateObject( "MSXML2.ServerXMLHTTP.6.0" )
//oComunicacao:= xHB_CreateObject( "MSXML2.ServerXMLHTTP.5.0" )
//oComunicacao:= xHB_CreateObject( "MSXML2.XMLHTTP" )
TRY
//    oComunicacao:= CreateObject( "MSXML2.ServerXMLHTTP" )
//    oComunicacao:= CreateObject( "MSXML2.ServerXMLHTTP.6.0" )
//  oComunicacao:= CreateObject( "MSXML2.ServerXMLHTTP.5.0" )
//    oComunicacao:= CreateObject( "MSXML2.XMLHTTP" )
    oComunicacao:= win_oleCreateObject( "MSXML2.ServerXMLHTTP.5.0" )
CATCH
    alert( "Erro na criação do objeto." )
    RETURN( .F. )
END
oComunicacao:setOption( 3, "CURRENT_USER\MY\" + ::cCertificado )
oComunicacao:open( "POST", ::cUrl, .F. )
oComunicacao:SetRequestHeader( "SOAPAction", ::cSOAPAction )
oComunicacao:SetRequestHeader( "Content-Type", "text/xml; charset=utf-8" )

oComunicacao:send( ::cXmlEnvelope )

DO WHILE oComunicacao:readyState <> 4
 Inkey(0.5)
ENDDO

::cXmlRetorno := oComunicacao:responseText

RETURN NIL
Segue o erro:

Código: Selecionar todos

----------------------------- xHarbour Error Log ------------------------------

Date...............: 09/13/17
Time...............: 12:24:38

Application name...: D:\Tmp\Teste\Teste.Exe
Workstation name...: ERONI-DEL
Available memory...: 2097151
Current disk.......: D
Current directory..: Tmp\Teste
Free disk space....: 166700642304

Operating system...: Windows 8 6.2.9200
xHarbour version...: xHarbour 1.2.3 Intl. (SimpLex) (Build 20161218)
xHarbour built on..: Dec 18 2016 11:10:32
C/C++ compiler.....: Borland/Embarcadero C++ 7.0 (32-bit)
Multi Threading....: NO
VM Optimization....: 2

Current Area ......:1

-------------------------- Environmental Information --------------------------

SET ALTERNATE......: OFF
SET ALTFILE........: 
SET AUTOPEN........: ON
SET AUTORDER.......: 0
SET AUTOSHARE......: 0
SET BACKGROUNDTASKS: OFF
SET BACKGROUNDTICK.: 1000
SET BELL...........: OFF
SET BLINK..........: .T.
SET CANCEL.........: ON
SET CENTURY........: OFF
SET COLOR..........: W/N,N/W,N/N,N/N,N/W
SET CONFIRM........: OFF
SET CONSOLE........: ON
SET COUNT..........: 0
SET CURSOR.........: 1
SET DATE FORMAT....: MM/DD/YY
SET DBFLOCKSCHEME..: 0
SET DEBUG..........: OFF
SET DECIMALS.......: 2
SET DEFAULT........: 
SET DEFEXTENSIONS..: ON
SET DELETED........: OFF
SET DELIMCHARS.....: ::
SET DELIMETERS.....: OFF
SET DEVICE.........: SCREEN
SET DIRCASE........: 0
SET DIRSEPARATOR...: \
SET EOL............: 13
SET EPOCH..........: 1900
SET ERRORLOG.......: ERROR.LOG,.F.
SET ERRORLOOP......: 8
SET ESCAPE.........: ON
SET EVENTMASK......: 128
SET EXACT..........: OFF
SET EXCLUSIVE......: ON
SET EXIT...........: OFF
SET EXTRA..........: OFF
SET EXTRAFILE......: 
SET FILECASE.......: 0
SET FIXED..........: OFF
SET FORCEOPT.......: OFF
SET HARDCOMMIT.....: ON
SET IDLEREPEAT.....: ON
SET INSERT.........: OFF
SET INTENSITY......: ON
SET LANGUAGE.......: EN
SET MARGIN.........: 0
SET MBLOCKSIZE.....: 0
SET MCENTER........: OFF
SET MESSAGE........: 0
SET MFILEEXT.......: 
SET OPTIMIZE.......: ON
SET OUTPUTSAFETY...: ON
SET PATH...........: 
SET PRINTER........: OFF
SET PRINTERJOB.....: 
SET PRINTFILE......: PRN
SET SCOREBOARD.....: ON
SET SCROLLBREAK....: ON
SET SOFTSEEK.......: OFF
SET STRICTREAD.....: OFF
SET TRACE..........: ON
SET TRACEFILE......: TRACE.LOG
SET TRACESTACK.....: 2
SET TRIMFILENAME...: .F.
SET TYPEAHEAD......: 50
SET UNIQUE.........: OFF
SET VIDEOMODE......: 0
SET WRAP...........: OFF

---------------------------Detailed Work Area Items----------------------------


-------------------- Internal Error Handling Information  ---------------------

Subsystem Call ....: MSXML2.XMLHTTP
System Code .......: 3
Default Status ....: .F.
Description .......: DISP_E_MEMBERNOTFOUND
Operation .........: SEND
Arguments .........:  [ 1] = Type: C Val: <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0"><soapenv:Header/><soapenv:Body><consultaLoteEventos><consulta><eSocial xmlns="http://www.esocial.gov.br/schema/lote/eventos/envio/consulta/retornoProcessamento/v1_0_0"><consultaLoteEventos><protocoloEnvio>1.2.201709.0000000000000226099</protocoloEnvio></consultaLoteEventos></eSocial></consulta></consultaLoteEventos></soapenv:Body></soapenv:Envelope>
Involved File .....: 
Dos Error Code ....: 0

 Trace Through:
----------------
TOLEAUTO:SEND         :       0 in Module: 
ESOCIALCLASS:MICROSOF :     106 in Module: Source\main.prg
ESOCIALCLASS:CONSULTA :      76 in Module: Source\main.prg
MAIN                  :      18 in Module: Source\main.prg


############################## Video Screen Dump ##############################

+--------------------------------------------------------------------------------+
|Error MSXML2.XMLHTTP/3  DISP_E_MEMBERNOTFOUND: SEND Arguments: ( [ 1] = Type: C |
|Val: <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http|
|://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.esocial.gov.br/servi|
|cos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0"><soapenv|
|:Header/><soapenv:Body><consultaLoteEventos><consulta><eSocial xmlns="http://www|
|.esocial.gov.br/schema/lote/eventos/envio/consulta/retornoProcessamento/v1_0_0">|
|<consultaLoteEventos><protocoloEnvio>1.2.201709.0000000000000226099</protocoloEn|
|vio></consultaLoteEventos></eSocial></consulta></consultaLoteEventos></soapenv:B|
|ody></soapenv:Envelope>) (Quit)                                                 |
|Error MSXML2.XMLHTTP/3  DISP_E_MEMBERNOTFOUND: SEND Arguments: ( [ 1] = Type: C |
|Val: <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http|
|://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.esocial.gov.br/servi|
|cos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0"><soapenv|
|:Header/><soapenv:Body><consultaLoteEventos><consulta><eSocial xmlns="http://www|
|.esocial.gov.br/schema/lote/eventos/envio/consulta/retornoProcessamento/v1_0_0">|
|<consultaLoteEventos><protocoloEnvio>1.2.201709.0000000000000226099</protocoloEn|
|vio></consultaLoteEventos></eSocial></consulta></consultaLoteEventos></soapenv:B|
|ody></soapenv:Envelope>)                                                        |
|                                                                                |
|Error at ...: TOLEAUTO:SEND(0) in Module:                                       |
|Called from : ESOCIALCLASS:MICROSOFTXMLSOAPPOST(106) in Module: Source\main.prg |
|Called from : ESOCIALCLASS:CONSULTARETORNOLOTE(76) in Module: Source\main.prg   |
|Called from : MAIN(18) in Module: Source\main.prg                               |
|                                                                                |
+--------------------------------------------------------------------------------+
Aproveitando, sei que desvia o foco do assunto, mas vou atualizar as minhas ferramentas, na opinião de vocês, melhor já migrar para o Harbour?

E-social Consulta

Enviado: 13 Set 2017 13:21
por Kapiaba
Eroni,

Código: Selecionar todos

   oComunicacao:send( ::cXmlEnvelope )  // esta em uma classe - é um METHOD  mas acho que tem erros.
E tem um retorno que eu acho que o xHarbour não está entendendo. Verifique sim? abs.

E-social Consulta

Enviado: 13 Set 2017 13:41
por Eroni
Desculpe João, mas não entendi sua resposta.

E-social Consulta

Enviado: 13 Set 2017 14:03
por Kapiaba
Eroni,

Código: Selecionar todos

   send()  // Enviar em inglês é um METODO? Onde ele está? O xHarbour não está entendendo a Função ou Metodo(METHOD) eu acho...
O que vc. usa uma classe ou uma LIB? Se for uma LIB de terceiros, ai <Aferrou-se>.

Abs

E-social Consulta

Enviado: 13 Set 2017 15:59
por Itamar M. Lins Jr.
Ola!
na opinião de vocês, melhor já migrar para o Harbour?
Como dizem na gíria, DEMORÔ!!!

Saudações,
Itamar M. Lins Jr.