Perguntas Importação de dados via WebService

Mais
8 anos 1 mês atrás #31310 por sidelcino
Boa tarde galera,

É possível utilizar um WebService para dar carga em uma rotina MsExecAuto do Protheus 12?

Criei a rotina msexecauto que irá importar os dados no banco mas não sei como proceder para que um webservice busque um arquivo TXT ou XML em determinado diretório com os dados e tais informações sejam processadas pela função msexecauto criada e grave esses dados no banco de dados.

A função que criei pegar os dados informados em um array e através o smartclient eu executo a mesma e assim os dados são gravados no banco.

Preciso que esse dados que serão importados sejam capturados de um arquivo TXT ou XML através de um webservice e grave-os no banco.

Alguém tem dicas para realização desse processo de importação?
Afinal isso é possível?

Desde já agradeço.

Obrigado!

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 1 mês atrás #31318 por will
Respondido por will no tópico Importação de dados via WebService
Bom dia
Sim é possivel!

já fiz diversas vezes.

O seu webservice é WSDL ou é por URL, se não souber tudo bem..

Segue um exemplo:

#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "AP5MAIL.CH"

// Buscar página
DelClassIntF()
cHtmlPage := Httpget(' ctaplus.com.br:8080/SvWebSincronizaAbast...teteste&data_inicio= ' + cDataini + '&data_fim=' + cDataFin)
oXML := XmlParser( cHtmlPage, "_", @_cErro, @_cAviso )


// jogando para dentro de uma tabela protheus

FOR nCont := 1 to Len(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO)

DBSELECTAREA("ZBB")
DBSETORDER(1)
IF DBSEEK(xFilial("ZBB")+oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_ID:TEXT , .T.)

Reclock("ZBB",.F.)

ZBB->ZBB_IDABAS := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_ID:TEXT
ZBB->ZBB_DTINI := CTOD(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_DATA_INICIO:TEXT )
ZBB->ZBB_HRINI := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_HORA_INICIO:TEXT
ZBB->ZBB_DTFIM := CTOD(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_DATA_FIM:TEXT)
ZBB->ZBB_HRFIM := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_HORA_FIM:TEXT
ZBB->ZBB_VOLUME := VAL(StrTran(Alltrim(oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_VOLUME:TEXT) , ',', '.'))
ZBB->ZBB_PLACA := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_VEICULO:_PLACA:TEXT
ZBB->ZBB_PLAORI := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_VEICULO:_PLACA:TEXT
nTraco := At('-', oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_BOMBA:_NOME:TEXT)
cBomba := oXml:_CTAPLUS:_ABASTECIMENTOS:_ABASTECIMENTO[nCont]:_BOMBA:_NOME:TEXT
ZBB->ZBB_BOMBA := ALLTRIM(SUBSTR(cBomba,nTraco + 1,LEN(cBomba)))

ZBB->(MsUnlock())

NEXT

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 1 mês atrás #31322 por sidelcino
Boa tarde Sposito,

Primeiramente obrigado pelo retorno.

Irei utilzar o Webservice o WSDL. Na verdade essa será minha primeira implementação WebService e estou seguindo algumas dicas do TDN da TOTVS e lendo matérias em fóruns, afinal o que você me indica WSDL ou URL?

Analisando o modelo que você em mandou eu não localizei o momento em que o arquivo será "puxado", por exemplo ele deverá estar onde? com qual formato?

Grato.

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 1 mês atrás #31324 por will
Respondido por will no tópico Importação de dados via WebService
Bom dia Sidelcino!

o WSDL eu acho mais facil, como você não vai usar o URL esqueça essas suas outras perguntas pois só funciona se fosse formato do URL.

mais vamos para um modo mais efetivo.

Poste a sua duvida real, que vou te ajudando.

Por exemplo sabe como fazer o client no protheus?

Chamar os metodos do WSDL?


Segue um exemplo

User FUNCTION ENTREGAVIAGEM()

oWs:CCNPJEMISSOR := '99999999999999999'
oWs:LVIAGEMFECHADAS := .T.
oWs:LVIAGENSCANCELADAS := .T.
oWs:NPERIODOHORAS := 03

If oWs:RetornarNFsEntregues()
// autenticação ok
oResp := oWs:oWSRetornarNFsEntreguesResult

IMPORTAXML()

Endif

RETURN(NIL)

STATIC FUNCTION IMPORTAXML()

DBSELECTAREA("SZD")
DBSETORDER(1)
DBGOTOP()
IF !DBSEEK(cFil + ;
STRZERO(VAL(oResp:oWSNOTAENTREGUE[nCont]:CNOTAFISCAL),9) + ;
STRZERO(oResp:oWSNOTAENTREGUE[nCont]:NSERIE,2))

RecLock("SZD",.T.)
SZD->ZD_FILIAL := cFil
SZD->ZD_NUMNF := STRZERO(VAL(oResp:oWSNOTAENTREGUE[nCont]:CNOTAFISCAL),9)
SZD->ZD_SERIE := STRZERO(oResp:oWSNOTAENTREGUE[nCont]:NSERIE,2)
SZD->ZD_CODCLI := SC5->C5_CLIENTE
SZD->ZD_LOJA := SC5->C5_LOJACLI
SZD->ZD_NOMECLI := SC5->C5_NOMECLI
SZD->ZD_DTDEV := DATE()
SZD->ZD_RESPONS := '09'
SZD->ZD_MOTIVO := '35'
SZD->ZD_AUTNOME := oResp:oWSNOTAENTREGUE[nCont]:COPERADOR
SZD->ZD_RESPNOM := cRespNome
SZD->ZD_DESCMOT := cDescMotiv
SZD->ZD_PEDIDO := SC5->C5_NUM
SZD->ZD_ROTEIRO := SC5->C5_ROTEIRO
SZD->ZD_PLACA := SC5->C5_PLACA
SZD->ZD_SEQUENC := SC5->C5_SEQUENC
SZD->ZD_DEVTOT := 'E'
SZD->ZD_OBSER := ''
SZD->ZD_VEND := SC5->C5_VEND1
SZD->ZD_MOTORI := cNomMot
SZD->ZD_TELEFON := cTelMot
SZD->ZD_EMLMOT := cEmlMot
SZD->ZD_RESP1 := ''
SZD->ZD_PEDPERN := ''
SZD->ZD_PERNOIT := .F.
SZD->ZD_CODMOTP := ''
SZD->ZD_MTVPERN := ''
SZD->ZD_XPLACAS := SC5->C5_XPLACAS
SZD->ZD_CONTROL := cCodCTRL
SZD->ZD_NRDEVOL := '00'

MsUnLock()
ENDIF
SZD->(dbCloseArea())

RETURN(NIL)

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 1 mês atrás #31325 por will
Respondido por will no tópico Importação de dados via WebService
e as includes

#INCLUDE "PROTHEUS.CH"
#INCLUDE "APWEBSRV.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "TBICODE.CH"
#INCLUDE "XMLXFUN.CH"

faltou o Ows

Isso vai no começo
oWs := WSIntegrationWebService():New()

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 1 mês atrás - 8 anos 1 mês atrás #31330 por sidelcino
Bom dia Sposito,

Sim, eu já consigo criar o client no Assistente Código do TDS 11.3 mas os métodos ainda desconheço, você tem algum material ou link sobre como criá-los para me passar?

Sobre minha dúvida, como eu citei anteriormente, esse será meu primeiro projeto utilizando webservice portanto eu gostaria de uma visão macro sobre todo processo para desenvolver a rotina e testar.

  • Por exemplo, o que será necessário para que tudo funcione?
  • Como e em que momento o arquivo será importado? o usuário vai ter que "apontar" o local do arquivo?
  • O processo haverá ou não interação do usuário?
  • O exemplo que você postou ele é tudo, não devo desenvolver mais nada?

Enfim, preciso entender o caminho das pedras para começar a desenvolver.

Me desculpe se estou fazendo perguntas desnecessárias mas são minhas dúvidas.

E mais uma vez muito obrigado pelo apoio!

Att.:
Sidelcino Souza
Ultima edição: 8 anos 1 mês atrás por sidelcino.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.127 segundos
Joomla templates by a4joomla