0% acharam este documento útil (1 voto)
359 visualizações20 páginas

Atualização Automática de Moedas No Protheus - Smart Siga

O documento descreve uma customização para atualizar automaticamente as moedas no sistema Protheus utilizando a API do Banco Central. A customização constrói um cliente webservice (WSClient) para consumir o método "getUltimoValorXML" e retornar a cotação mais atual de uma moeda no formato XML. A atualização automática pode ser executada em um JOB ou botão na tela de cadastro de moedas no Protheus.

Enviado por

lotssud
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (1 voto)
359 visualizações20 páginas

Atualização Automática de Moedas No Protheus - Smart Siga

O documento descreve uma customização para atualizar automaticamente as moedas no sistema Protheus utilizando a API do Banco Central. A customização constrói um cliente webservice (WSClient) para consumir o método "getUltimoValorXML" e retornar a cotação mais atual de uma moeda no formato XML. A atualização automática pode ser executada em um JOB ou botão na tela de cadastro de moedas no Protheus.

Enviado por

lotssud
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 20

11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

ATUALIZAÇÃO AUTOMÁTICA DE MOEDAS


NO PROTHEUS
 2 J a n e i r o , 2 0 1 8 ( H t t p s : // W w w . S m a r t s i g a . C o m . B r /A t u a l i z a c a o - A u t o m a t i c a - D e -
Moedas-No-Protheus/) Cristian Regazzo
( H t t p s : // W w w . S m a r t s i g a . C o m . B r /A u t h o r / C r i s t i a n _ r e g a z z o / ) 

Sabe aquelas automações que facilitam a vida dos colaboradores da empresa, e ainda agregam valor ao nosso
trabalho?

O nosso post de hoje, é exatamente sobre um desses tipos de automação. Iremos demonstrar como fazer uma
customização para atualização automática de moedas no Protheus.

Algumas rotinas dos módulos de Comércio Exterior (SIGAEIC – SIGAEEC – SIGAECO – SIGAEDC – SIGAEFF) do
Protheus, e até mesmo do Faturamento e do Financeiro, necessitam ter a moeda do sistema atualizada, para a
correta execução de algumas rotinas.

Essa customização poderá ser colocada em um JOB, pode-se criar um botão na tela de Cadastro de Moedas (se
tiver PE disponível para tanto), ou em qualquer rotina que desejar.

O WebService (WS) de cotações de moedas do Banco Central, disponibiliza vários métodos, nos quais é possível
recuperar os valores da moeda na data atual, recuperar valores em um determinado período de datas, recuperar
cotações de várias moedas ao mesmo tempo em um período determinado, etc.

Na nossa customização, iremos utilizar o método “getUltimoValorXML”, o qual iremos passar o código da moeda
que desejamos, e o mesmo irá nos retornar a cotação mais atual, no formato XML.

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 1/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

A primeira coisa que precisamos fazer, é construir o WsClient. Essa tarefa é muito fácil de fazer, já que, pelo próprio
ToTvs Developer Studio (TDS), informamos a URL do WSDL, e o TDS faz o “trabalho pesado”, criando todo o fonte
necessário para uso do WS.

Caso não saiba como consumir um WSDL para criação de um WsClient no TDS, basta conferir o nosso post,
ensinando passo a passo, tal procedimento. Para tanto, clique aqui (https://www.smartsiga.com.br/gerar-
webservice-client-no-tds/).

Após o TDS criar o WsClient para atualização automática de moedas no Protheus, teremos um fonte com a
seguinte estrutura:

1. #INCLUDE "PROTHEUS.CH"
2. #INCLUDE "APWEBSRV.CH"
3.
4. /*
=======================================================================
========
5. WSDL Location
https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl
6. Gerado em 12/27/17 14:28:34
7. Observações Código-Fonte gerado por ADVPL WSDL Client 1.120703
8. Alterações neste arquivo podem causar funcionamento
incorreto
9. e serão perdidas caso o código-fonte seja gerado
novamente.
10. =======================================================================
======== */
11.
12. User Function _EWGQNCN ; Return // "dummy" function - Internal Use
13.
14. /* --------------------------------------------------------------------
-----------
15. WSDL Service WSFachadaWSSGSService
16. -----------------------------------------------------------------------
-------- */
17.
18. WSCLIENT WSFachadaWSSGSService
19.
20. WSMETHOD NEW
21. WSMETHOD INIT
22. WSMETHOD RESET
23. WSMETHOD CLONE
24. WSMETHOD getValoresSeriesVO
25. WSMETHOD getUltimosValoresSerieVO
26. WSMETHOD getValoresSeriesXML
27. WSMETHOD getUltimoValorVO
28. WSMETHOD getUltimoValorXML
29. WSMETHOD getValor
30. WSMETHOD getValorEspecial
31.
32. WSDATA _URL AS String
33. WSDATA _CERT AS String
34. WSDATA _PRIVKEY AS String
35. WSDATA _PASSPHRASE AS String
36. WSDATA _HEADOUT AS Array of String
37. WSDATA _COOKIES AS Array of String
https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 2/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

38. WSDATA oWSgetValoresSeriesVOin0 AS


FachadaWSSGSService_ArrayOfflong
39. WSDATA cin1 AS string
40. WSDATA cin2 AS string
41. WSDATA oWSgetValoresSeriesVOReturn AS
FachadaWSSGSService_ArrayOffWSSerieVO
42. WSDATA nin0 AS long
43. WSDATA oWSgetUltimosValoresSerieVOReturn AS
FachadaWSSGSService_WSSerieVO
44. WSDATA oWSgetValoresSeriesXMLin0 AS
FachadaWSSGSService_ArrayOfflong
45. WSDATA cgetValoresSeriesXMLReturn AS string
46. WSDATA oWSgetUltimoValorVOReturn AS FachadaWSSGSService_WSSerieVO
47. WSDATA cgetUltimoValorXMLReturn AS string
48. WSDATA ngetValorReturn AS decimal
49. WSDATA ngetValorEspecialReturn AS decimal
50.
51. ENDWSCLIENT
52.
53. WSMETHOD NEW WSCLIENT WSFachadaWSSGSService
54. ::Init()
55. If !FindFunction("XMLCHILDEX")
56. UserException("O Código-Fonte Client atual requer os executáveis do
Protheus Build [7.00.131227A-20171123 NG] ou superior. Atualize o
Protheus ou gere o Código-Fonte novamente utilizando o Build atual.")
57. EndIf
58. Return Self
59.
60. WSMETHOD INIT WSCLIENT WSFachadaWSSGSService
61. ::oWSgetValoresSeriesVOin0 :=
FachadaWSSGSService_ARRAYOFFLONG():New()
62. ::oWSgetValoresSeriesVOReturn :=
FachadaWSSGSService_ARRAYOFFWSSERIEVO():New()
63. ::oWSgetUltimosValoresSerieVOReturn :=
FachadaWSSGSService_WSSERIEVO():New()
64. ::oWSgetValoresSeriesXMLin0 :=
FachadaWSSGSService_ARRAYOFFLONG():New()
65. ::oWSgetUltimoValorVOReturn := FachadaWSSGSService_WSSERIEVO():New()
66. Return
67.
68. WSMETHOD RESET WSCLIENT WSFachadaWSSGSService
69. ::oWSgetValoresSeriesVOin0 := NIL
70. ::cin1 := NIL
71. ::cin2 := NIL
72. ::oWSgetValoresSeriesVOReturn := NIL
73. ::nin0 := NIL
74. ::oWSgetUltimosValoresSerieVOReturn := NIL
75. ::oWSgetValoresSeriesXMLin0 := NIL
76. ::cgetValoresSeriesXMLReturn := NIL
77. ::oWSgetUltimoValorVOReturn := NIL
78. ::cgetUltimoValorXMLReturn := NIL
79. ::ngetValorReturn := NIL
80. ::ngetValorEspecialReturn := NIL
81. ::Init()
82. Return
83.
84. WSMETHOD CLONE WSCLIENT WSFachadaWSSGSService
85. Local oClone := WSFachadaWSSGSService():New()
86. oClone:_URL := ::_URL
https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 3/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

87. oClone:_CERT := ::_CERT


88. oClone:_PRIVKEY := ::_PRIVKEY
89. oClone:_PASSPHRASE := ::_PASSPHRASE
90. oClone:oWSgetValoresSeriesVOin0 := IIF(::oWSgetValoresSeriesVOin0 =
NIL , NIL ,::oWSgetValoresSeriesVOin0:Clone() )
91. oClone:cin1 := ::cin1
92. oClone:cin2 := ::cin2
93. oClone:oWSgetValoresSeriesVOReturn :=
IIF(::oWSgetValoresSeriesVOReturn = NIL , NIL
,::oWSgetValoresSeriesVOReturn:Clone() )
94. oClone:nin0 := ::nin0
95. oClone:oWSgetUltimosValoresSerieVOReturn :=
IIF(::oWSgetUltimosValoresSerieVOReturn = NIL , NIL
,::oWSgetUltimosValoresSerieVOReturn:Clone() )
96. oClone:oWSgetValoresSeriesXMLin0 := IIF(::oWSgetValoresSeriesXMLin0
= NIL , NIL ,::oWSgetValoresSeriesXMLin0:Clone() )
97. oClone:cgetValoresSeriesXMLReturn := ::cgetValoresSeriesXMLReturn
98. oClone:oWSgetUltimoValorVOReturn := IIF(::oWSgetUltimoValorVOReturn
= NIL , NIL ,::oWSgetUltimoValorVOReturn:Clone() )
99. oClone:cgetUltimoValorXMLReturn := ::cgetUltimoValorXMLReturn
100. oClone:ngetValorReturn := ::ngetValorReturn
101. oClone:ngetValorEspecialReturn := ::ngetValorEspecialReturn
102. Return oClone
103.
104. // WSDL Method getValoresSeriesVO of Service WSFachadaWSSGSService
105.
106. WSMETHOD getValoresSeriesVO WSSEND oWSgetValoresSeriesVOin0,cin1,cin2
WSRECEIVE oWSgetValoresSeriesVOReturn WSCLIENT WSFachadaWSSGSService
107. Local cSoap := "" , oXmlRet
108.
109. BEGIN WSMETHOD
110.
111. cSoap += '<q1:getValoresSeriesVO
xmlns:q1="http://publico.ws.casosdeuso.sgs.pec.bcb.gov.br">'
112. cSoap += WSSoapValue("in0", ::oWSgetValoresSeriesVOin0,
oWSgetValoresSeriesVOin0 , "ArrayOfflong", .T. , .T. , 0 , NIL,
.F.,.F.)
113. cSoap += WSSoapValue("in1", ::cin1, cin1 , "string", .T. , .T. , 0 ,
NIL, .F.,.F.)
114. cSoap += WSSoapValue("in2", ::cin2, cin2 , "string", .T. , .T. , 0 ,
NIL, .F.,.F.)
115. cSoap += "</q1:getValoresSeriesVO>"
116.
117. oXmlRet := SvcSoapCall( Self,cSoap,;
118. "",;
119. "RPCX","https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS",,,;
120. "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS")
121.
122. ::Init()
123. ::oWSgetValoresSeriesVOReturn:SoapRecv( WSAdvValue(
oXmlRet,"_GETVALORESSERIESVORETURN","ArrayOffWSSerieVO",NIL,NIL,NIL,"O"
,NIL,NIL) )
124.
125. END WSMETHOD
126.
127. oXmlRet := NIL
128. Return .T.
129.

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 4/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

130. // WSDL Method getUltimosValoresSerieVO of Service


WSFachadaWSSGSService
131.
132. WSMETHOD getUltimosValoresSerieVO WSSEND nin0,nin1 WSRECEIVE
oWSgetUltimosValoresSerieVOReturn WSCLIENT WSFachadaWSSGSService
133. Local cSoap := "" , oXmlRet
134.
135. BEGIN WSMETHOD
136.
137. cSoap += '<q1:getUltimosValoresSerieVO
xmlns:q1="http://publico.ws.casosdeuso.sgs.pec.bcb.gov.br">'
138. cSoap += WSSoapValue("in0", ::nin0, nin0 , "long", .T. , .T. , 0 , NIL,
.F.,.F.)
139. cSoap += WSSoapValue("in1", ::nin1, nin1 , "long", .T. , .T. , 0 , NIL,
.F.,.F.)
140. cSoap += "</q1:getUltimosValoresSerieVO>"
141.
142. oXmlRet := SvcSoapCall( Self,cSoap,;
143. "",;
144. "RPCX","https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS",,,;
145. "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS")
146.
147. ::Init()
148. ::oWSgetUltimosValoresSerieVOReturn:SoapRecv( WSAdvValue(
oXmlRet,"_GETULTIMOSVALORESSERIEVORETURN","WSSerieVO",NIL,NIL,NIL,"O",N
IL,NIL) )
149.
150. END WSMETHOD
151.
152. oXmlRet := NIL
153. Return .T.
154.
155. // WSDL Method getValoresSeriesXML of Service WSFachadaWSSGSService
156.
157. WSMETHOD getValoresSeriesXML WSSEND oWSgetValoresSeriesXMLin0,cin1,cin2
WSRECEIVE cgetValoresSeriesXMLReturn WSCLIENT WSFachadaWSSGSService
158. Local cSoap := "" , oXmlRet
159.
160. BEGIN WSMETHOD
161.
162. cSoap += '<q1:getValoresSeriesXML
xmlns:q1="http://publico.ws.casosdeuso.sgs.pec.bcb.gov.br">'
163. cSoap += WSSoapValue("in0", ::oWSgetValoresSeriesXMLin0,
oWSgetValoresSeriesXMLin0 , "ArrayOfflong", .T. , .T. , 0 , NIL,
.F.,.F.)
164. cSoap += WSSoapValue("in1", ::cin1, cin1 , "string", .T. , .T. , 0 ,
NIL, .F.,.F.)
165. cSoap += WSSoapValue("in2", ::cin2, cin2 , "string", .T. , .T. , 0 ,
NIL, .F.,.F.)
166. cSoap += "</q1:getValoresSeriesXML>"
167.
168. oXmlRet := SvcSoapCall( Self,cSoap,;
169. "",;
170. "RPCX","https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS",,,;
171. "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS")
172.
173. ::Init()
174. ::cgetValoresSeriesXMLReturn := WSAdvValue(
oXmlRet,"_GETVALORESSERIESXMLRETURN","string",NIL,NIL,NIL,"S",NIL,NIL)

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 5/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

175.
176. END WSMETHOD
177.
178. oXmlRet := NIL
179. Return .T.
180.
181. // WSDL Method getUltimoValorVO of Service WSFachadaWSSGSService
182.
183. WSMETHOD getUltimoValorVO WSSEND nin0 WSRECEIVE
oWSgetUltimoValorVOReturn WSCLIENT WSFachadaWSSGSService
184. Local cSoap := "" , oXmlRet
185.
186. BEGIN WSMETHOD
187.
188. cSoap += '<q1:getUltimoValorVO
xmlns:q1="http://www.w3.org/2001/XMLSchema">'
189. cSoap += WSSoapValue("in0", ::nin0, nin0 , "long", .T. , .T. , 0 , NIL,
.F.,.F.)
190. cSoap += "</q1:getUltimoValorVO>"
191.
192. oXmlRet := SvcSoapCall( Self,cSoap,;
193. "",;
194. "RPCX","https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS",,,;
195. "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS")
196.
197. ::Init()
198. ::oWSgetUltimoValorVOReturn:SoapRecv( WSAdvValue(
oXmlRet,"_GETULTIMOVALORVORETURN","WSSerieVO",NIL,NIL,NIL,"O",NIL,NIL)
)
199.
200. END WSMETHOD
201.
202. oXmlRet := NIL
203. Return .T.
204.
205. // WSDL Method getUltimoValorXML of Service WSFachadaWSSGSService
206.
207. WSMETHOD getUltimoValorXML WSSEND nin0 WSRECEIVE
cgetUltimoValorXMLReturn WSCLIENT WSFachadaWSSGSService
208. Local cSoap := "" , oXmlRet
209.
210. BEGIN WSMETHOD
211.
212. cSoap += '<q1:getUltimoValorXML
xmlns:q1="http://www.w3.org/2001/XMLSchema">'
213. cSoap += WSSoapValue("in0", ::nin0, nin0 , "long", .T. , .T. , 0 , NIL,
.F.,.F.)
214. cSoap += "</q1:getUltimoValorXML>"
215.
216. oXmlRet := SvcSoapCall( Self,cSoap,;
217. "",;
218. "RPCX","https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS",,,;
219. "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS")
220.
221. ::Init()
222. ::cgetUltimoValorXMLReturn := WSAdvValue(
oXmlRet,"_GETULTIMOVALORXMLRETURN","string",NIL,NIL,NIL,"S",NIL,NIL)
223.
224. END WSMETHOD
https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 6/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

225.
226. oXmlRet := NIL
227. Return .T.
228.
229. // WSDL Method getValor of Service WSFachadaWSSGSService
230.
231. WSMETHOD getValor WSSEND nin0,cin1 WSRECEIVE ngetValorReturn WSCLIENT
WSFachadaWSSGSService
232. Local cSoap := "" , oXmlRet
233.
234. BEGIN WSMETHOD
235.
236. cSoap += '<q1:getValor
xmlns:q1="http://publico.ws.casosdeuso.sgs.pec.bcb.gov.br">'
237. cSoap += WSSoapValue("in0", ::nin0, nin0 , "long", .T. , .T. , 0 , NIL,
.F.,.F.)
238. cSoap += WSSoapValue("in1", ::cin1, cin1 , "string", .T. , .T. , 0 ,
NIL, .F.,.F.)
239. cSoap += "</q1:getValor>"
240.
241. oXmlRet := SvcSoapCall( Self,cSoap,;
242. "",;
243. "RPCX","https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS",,,;
244. "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS")
245.
246. ::Init()
247. ::ngetValorReturn := WSAdvValue(
oXmlRet,"_GETVALORRETURN","decimal",NIL,NIL,NIL,"N",NIL,NIL)
248.
249. END WSMETHOD
250.
251. oXmlRet := NIL
252. Return .T.
253.
254. // WSDL Method getValorEspecial of Service WSFachadaWSSGSService
255.
256. WSMETHOD getValorEspecial WSSEND nin0,cin1,cin2 WSRECEIVE
ngetValorEspecialReturn WSCLIENT WSFachadaWSSGSService
257. Local cSoap := "" , oXmlRet
258.
259. BEGIN WSMETHOD
260.
261. cSoap += '<q1:getValorEspecial
xmlns:q1="http://publico.ws.casosdeuso.sgs.pec.bcb.gov.br">'
262. cSoap += WSSoapValue("in0", ::nin0, nin0 , "long", .T. , .T. , 0 , NIL,
.F.,.F.)
263. cSoap += WSSoapValue("in1", ::cin1, cin1 , "string", .T. , .T. , 0 ,
NIL, .F.,.F.)
264. cSoap += WSSoapValue("in2", ::cin2, cin2 , "string", .T. , .T. , 0 ,
NIL, .F.,.F.)
265. cSoap += "</q1:getValorEspecial>"
266.
267. oXmlRet := SvcSoapCall( Self,cSoap,;
268. "",;
269. "RPCX","https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS",,,;
270. "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS")
271.
272. ::Init()

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 7/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

273. ::ngetValorEspecialReturn := WSAdvValue(


oXmlRet,"_GETVALORESPECIALRETURN","decimal",NIL,NIL,NIL,"N",NIL,NIL)
274.
275. END WSMETHOD
276.
277. oXmlRet := NIL
278. Return .T.
279.
280.
281. // WSDL Data Structure ArrayOfflong
282.
283. WSSTRUCT FachadaWSSGSService_ArrayOfflong
284. WSDATA nlong AS long OPTIONAL
285. WSMETHOD NEW
286. WSMETHOD INIT
287. WSMETHOD CLONE
288. WSMETHOD SOAPSEND
289. ENDWSSTRUCT
290.
291. WSMETHOD NEW WSCLIENT FachadaWSSGSService_ArrayOfflong
292. ::Init()
293. Return Self
294.
295. WSMETHOD INIT WSCLIENT FachadaWSSGSService_ArrayOfflong
296. ::nlong := {} // Array Of 0
297. Return
298.
299. WSMETHOD CLONE WSCLIENT FachadaWSSGSService_ArrayOfflong
300. Local oClone := FachadaWSSGSService_ArrayOfflong():NEW()
301. oClone:nlong := IIf(::nlong <> NIL , aClone(::nlong) ,
NIL )
302. Return oClone
303.
304. WSMETHOD SOAPSEND WSCLIENT FachadaWSSGSService_ArrayOfflong
305. Local cSoap := ""
306. aEval( ::nlong , {|x| cSoap := cSoap + WSSoapValue("long", x , x ,
"long", .F. , .T., 0 , NIL, .F.,.F.) } )
307. Return cSoap
308.
309. // WSDL Data Structure ArrayOffWSSerieVO
310.
311. WSSTRUCT FachadaWSSGSService_ArrayOffWSSerieVO
312. WSDATA oWSWSSerieVO AS FachadaWSSGSService_WSSerieVO
OPTIONAL
313. WSMETHOD NEW
314. WSMETHOD INIT
315. WSMETHOD CLONE
316. WSMETHOD SOAPRECV
317. ENDWSSTRUCT
318.
319. WSMETHOD NEW WSCLIENT FachadaWSSGSService_ArrayOffWSSerieVO
320. ::Init()
321. Return Self
322.
323. WSMETHOD INIT WSCLIENT FachadaWSSGSService_ArrayOffWSSerieVO
324. ::oWSWSSerieVO := {} // Array Of
FachadaWSSGSService_WSSERIEVO():New()
325. Return

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 8/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

326.
327. WSMETHOD CLONE WSCLIENT FachadaWSSGSService_ArrayOffWSSerieVO
328. Local oClone := FachadaWSSGSService_ArrayOffWSSerieVO():NEW()
329. oClone:oWSWSSerieVO := NIL
330. If ::oWSWSSerieVO <> NIL
331. oClone:oWSWSSerieVO := {}
332. aEval( ::oWSWSSerieVO , { |x| aadd( oClone:oWSWSSerieVO , x:Clone()
) } )
333. Endif
334. Return oClone
335.
336. WSMETHOD SOAPRECV WSSEND oResponse WSCLIENT
FachadaWSSGSService_ArrayOffWSSerieVO
337. Local nRElem1 , nTElem1
338. Local aNodes1 := WSRPCGetNode(oResponse,.T.)
339. ::Init()
340. If oResponse = NIL ; Return ; Endif
341. nTElem1 := len(aNodes1)
342. For nRElem1 := 1 to nTElem1
343. If !WSIsNilNode( aNodes1[nRElem1] )
344. aadd(::oWSWSSerieVO , FachadaWSSGSService_WSSerieVO():New() )
345. ::oWSWSSerieVO[len(::oWSWSSerieVO)]:SoapRecv(aNodes1[nRElem1])
346. Endif
347. Next
348. Return
349.
350. // WSDL Data Structure WSSerieVO
351.
352. WSSTRUCT FachadaWSSGSService_WSSerieVO
353. WSDATA nanoFim AS int OPTIONAL
354. WSDATA nanoInicio AS int OPTIONAL
355. WSDATA caviso AS string OPTIONAL
356. WSDATA ndiaFim AS int OPTIONAL
357. WSDATA ndiaInicio AS int OPTIONAL
358. WSDATA lespecial AS boolean OPTIONAL
359. WSDATA cfonte AS string OPTIONAL
360. WSDATA cfullName AS string OPTIONAL
361. WSDATA cgestorProprietario AS string OPTIONAL
362. WSDATA nmesFim AS int OPTIONAL
363. WSDATA nmesInicio AS int OPTIONAL
364. WSDATA cnomeAbreviado AS string OPTIONAL
365. WSDATA cnomeCompleto AS string OPTIONAL
366. WSDATA noid AS long OPTIONAL
367. WSDATA cperiodicidade AS string OPTIONAL
368. WSDATA cperiodicidadeSigla AS string OPTIONAL
369. WSDATA lpossuiBloqueios AS boolean OPTIONAL
370. WSDATA lpublica AS boolean OPTIONAL
371. WSDATA cshortName AS string OPTIONAL
372. WSDATA oWSultimoValor AS
FachadaWSSGSService_WSValorSerieVO OPTIONAL
373. WSDATA cunidadePadrao AS string OPTIONAL
374. WSDATA cunidadePadraoIngles AS string OPTIONAL
375. WSDATA lvalorDiaNaoUtil AS boolean OPTIONAL
376. WSDATA oWSvalores AS
FachadaWSSGSService_ArrayOf_tns2_WSValorSerieVO OPTIONAL
377. WSMETHOD NEW
378. WSMETHOD INIT
379. WSMETHOD CLONE

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 9/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

380. WSMETHOD SOAPRECV


381. ENDWSSTRUCT
382.
383. WSMETHOD NEW WSCLIENT FachadaWSSGSService_WSSerieVO
384. ::Init()
385. Return Self
386.
387. WSMETHOD INIT WSCLIENT FachadaWSSGSService_WSSerieVO
388. Return
389.
390. WSMETHOD CLONE WSCLIENT FachadaWSSGSService_WSSerieVO
391. Local oClone := FachadaWSSGSService_WSSerieVO():NEW()
392. oClone:nanoFim := ::nanoFim
393. oClone:nanoInicio := ::nanoInicio
394. oClone:caviso := ::caviso
395. oClone:ndiaFim := ::ndiaFim
396. oClone:ndiaInicio := ::ndiaInicio
397. oClone:lespecial := ::lespecial
398. oClone:cfonte := ::cfonte
399. oClone:cfullName := ::cfullName
400. oClone:cgestorProprietario := ::cgestorProprietario
401. oClone:nmesFim := ::nmesFim
402. oClone:nmesInicio := ::nmesInicio
403. oClone:cnomeAbreviado := ::cnomeAbreviado
404. oClone:cnomeCompleto := ::cnomeCompleto
405. oClone:noid := ::noid
406. oClone:cperiodicidade := ::cperiodicidade
407. oClone:cperiodicidadeSigla := ::cperiodicidadeSigla
408. oClone:lpossuiBloqueios := ::lpossuiBloqueios
409. oClone:lpublica := ::lpublica
410. oClone:cshortName := ::cshortName
411. oClone:oWSultimoValor := IIF(::oWSultimoValor = NIL , NIL ,
::oWSultimoValor:Clone() )
412. oClone:cunidadePadrao := ::cunidadePadrao
413. oClone:cunidadePadraoIngles := ::cunidadePadraoIngles
414. oClone:lvalorDiaNaoUtil := ::lvalorDiaNaoUtil
415. oClone:oWSvalores := IIF(::oWSvalores = NIL , NIL ,
::oWSvalores:Clone() )
416. Return oClone
417.
418. WSMETHOD SOAPRECV WSSEND oResponse WSCLIENT
FachadaWSSGSService_WSSerieVO
419. Local oNode20
420. Local oNode24
421. ::Init()
422. If oResponse = NIL ; Return ; Endif
423. ::nanoFim := WSAdvValue(
oResponse,"_ANOFIM","int",NIL,NIL,NIL,"N",NIL,NIL)
424. ::nanoInicio := WSAdvValue(
oResponse,"_ANOINICIO","int",NIL,NIL,NIL,"N",NIL,NIL)
425. ::caviso := WSAdvValue(
oResponse,"_AVISO","string",NIL,NIL,NIL,"S",NIL,NIL)
426. ::ndiaFim := WSAdvValue(
oResponse,"_DIAFIM","int",NIL,NIL,NIL,"N",NIL,NIL)
427. ::ndiaInicio := WSAdvValue(
oResponse,"_DIAINICIO","int",NIL,NIL,NIL,"N",NIL,NIL)
428. ::lespecial := WSAdvValue(
oResponse,"_ESPECIAL","boolean",NIL,NIL,NIL,"L",NIL,NIL)

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 10/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

429. ::cfonte := WSAdvValue(


oResponse,"_FONTE","string",NIL,NIL,NIL,"S",NIL,NIL)
430. ::cfullName := WSAdvValue(
oResponse,"_FULLNAME","string",NIL,NIL,NIL,"S",NIL,NIL)
431. ::cgestorProprietario := WSAdvValue(
oResponse,"_GESTORPROPRIETARIO","string",NIL,NIL,NIL,"S",NIL,NIL)
432. ::nmesFim := WSAdvValue(
oResponse,"_MESFIM","int",NIL,NIL,NIL,"N",NIL,NIL)
433. ::nmesInicio := WSAdvValue(
oResponse,"_MESINICIO","int",NIL,NIL,NIL,"N",NIL,NIL)
434. ::cnomeAbreviado := WSAdvValue(
oResponse,"_NOMEABREVIADO","string",NIL,NIL,NIL,"S",NIL,NIL)
435. ::cnomeCompleto := WSAdvValue(
oResponse,"_NOMECOMPLETO","string",NIL,NIL,NIL,"S",NIL,NIL)
436. ::noid := WSAdvValue(
oResponse,"_OID","long",NIL,NIL,NIL,"N",NIL,NIL)
437. ::cperiodicidade := WSAdvValue(
oResponse,"_PERIODICIDADE","string",NIL,NIL,NIL,"S",NIL,NIL)
438. ::cperiodicidadeSigla := WSAdvValue(
oResponse,"_PERIODICIDADESIGLA","string",NIL,NIL,NIL,"S",NIL,NIL)
439. ::lpossuiBloqueios := WSAdvValue(
oResponse,"_POSSUIBLOQUEIOS","boolean",NIL,NIL,NIL,"L",NIL,NIL)
440. ::lpublica := WSAdvValue(
oResponse,"_PUBLICA","boolean",NIL,NIL,NIL,"L",NIL,NIL)
441. ::cshortName := WSAdvValue(
oResponse,"_SHORTNAME","string",NIL,NIL,NIL,"S",NIL,NIL)
442. oNode20 := WSAdvValue(
oResponse,"_ULTIMOVALOR","WSValorSerieVO",NIL,NIL,NIL,"O",NIL,NIL)
443. If oNode20 != NIL
444. ::oWSultimoValor := FachadaWSSGSService_WSValorSerieVO():New()
445. ::oWSultimoValor:SoapRecv(oNode20)
446. EndIf
447. ::cunidadePadrao := WSAdvValue(
oResponse,"_UNIDADEPADRAO","string",NIL,NIL,NIL,"S",NIL,NIL)
448. ::cunidadePadraoIngles := WSAdvValue(
oResponse,"_UNIDADEPADRAOINGLES","string",NIL,NIL,NIL,"S",NIL,NIL)
449. ::lvalorDiaNaoUtil := WSAdvValue(
oResponse,"_VALORDIANAOUTIL","boolean",NIL,NIL,NIL,"L",NIL,NIL)
450. oNode24 := WSAdvValue(
oResponse,"_VALORES","ArrayOf_tns2_WSValorSerieVO",NIL,NIL,NIL,"O",NIL,
NIL)
451. If oNode24 != NIL
452. ::oWSvalores :=
FachadaWSSGSService_ArrayOf_tns2_WSValorSerieVO():New()
453. ::oWSvalores:SoapRecv(oNode24)
454. EndIf
455. Return
456.
457. // WSDL Data Structure WSValorSerieVO
458.
459. WSSTRUCT FachadaWSSGSService_WSValorSerieVO
460. WSDATA nano AS int OPTIONAL
461. WSDATA nanoFim AS int OPTIONAL
462. WSDATA lbloqueado AS boolean OPTIONAL
463. WSDATA lbloqueioLiberado AS boolean OPTIONAL
464. WSDATA ndia AS int OPTIONAL
465. WSDATA ndiaFim AS int OPTIONAL
466. WSDATA nmes AS int OPTIONAL
467. WSDATA nmesFim AS int OPTIONAL
468. WSDATA noid AS long OPTIONAL
https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 11/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

469. WSDATA noidSerie AS long OPTIONAL


470. WSDATA csvalor AS string OPTIONAL
471. WSDATA nvalor AS decimal OPTIONAL
472. WSMETHOD NEW
473. WSMETHOD INIT
474. WSMETHOD CLONE
475. WSMETHOD SOAPRECV
476. ENDWSSTRUCT
477.
478. WSMETHOD NEW WSCLIENT FachadaWSSGSService_WSValorSerieVO
479. ::Init()
480. Return Self
481.
482. WSMETHOD INIT WSCLIENT FachadaWSSGSService_WSValorSerieVO
483. Return
484.
485. WSMETHOD CLONE WSCLIENT FachadaWSSGSService_WSValorSerieVO
486. Local oClone := FachadaWSSGSService_WSValorSerieVO():NEW()
487. oClone:nano := ::nano
488. oClone:nanoFim := ::nanoFim
489. oClone:lbloqueado := ::lbloqueado
490. oClone:lbloqueioLiberado := ::lbloqueioLiberado
491. oClone:ndia := ::ndia
492. oClone:ndiaFim := ::ndiaFim
493. oClone:nmes := ::nmes
494. oClone:nmesFim := ::nmesFim
495. oClone:noid := ::noid
496. oClone:noidSerie := ::noidSerie
497. oClone:csvalor := ::csvalor
498. oClone:nvalor := ::nvalor
499. Return oClone
500.
501. WSMETHOD SOAPRECV WSSEND oResponse WSCLIENT
FachadaWSSGSService_WSValorSerieVO
502. ::Init()
503. If oResponse = NIL ; Return ; Endif
504. ::nano := WSAdvValue(
oResponse,"_ANO","int",NIL,NIL,NIL,"N",NIL,NIL)
505. ::nanoFim := WSAdvValue(
oResponse,"_ANOFIM","int",NIL,NIL,NIL,"N",NIL,NIL)
506. ::lbloqueado := WSAdvValue(
oResponse,"_BLOQUEADO","boolean",NIL,NIL,NIL,"L",NIL,NIL)
507. ::lbloqueioLiberado := WSAdvValue(
oResponse,"_BLOQUEIOLIBERADO","boolean",NIL,NIL,NIL,"L",NIL,NIL)
508. ::ndia := WSAdvValue(
oResponse,"_DIA","int",NIL,NIL,NIL,"N",NIL,NIL)
509. ::ndiaFim := WSAdvValue(
oResponse,"_DIAFIM","int",NIL,NIL,NIL,"N",NIL,NIL)
510. ::nmes := WSAdvValue(
oResponse,"_MES","int",NIL,NIL,NIL,"N",NIL,NIL)
511. ::nmesFim := WSAdvValue(
oResponse,"_MESFIM","int",NIL,NIL,NIL,"N",NIL,NIL)
512. ::noid := WSAdvValue(
oResponse,"_OID","long",NIL,NIL,NIL,"N",NIL,NIL)
513. ::noidSerie := WSAdvValue(
oResponse,"_OIDSERIE","long",NIL,NIL,NIL,"N",NIL,NIL)
514. ::csvalor := WSAdvValue(
oResponse,"_SVALOR","string",NIL,NIL,NIL,"S",NIL,NIL)

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 12/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

515. ::nvalor := WSAdvValue(


oResponse,"_VALOR","decimal",NIL,NIL,NIL,"N",NIL,NIL)
516. Return
517.
518. // WSDL Data Structure ArrayOf_tns2_WSValorSerieVO
519.
520. WSSTRUCT FachadaWSSGSService_ArrayOf_tns2_WSValorSerieVO
521. WSDATA oWSWSValorSerieVO AS
FachadaWSSGSService_WSValorSerieVO OPTIONAL
522. WSMETHOD NEW
523. WSMETHOD INIT
524. WSMETHOD CLONE
525. WSMETHOD SOAPRECV
526. ENDWSSTRUCT
527.
528. WSMETHOD NEW WSCLIENT FachadaWSSGSService_ArrayOf_tns2_WSValorSerieVO
529. ::Init()
530. Return Self
531.
532. WSMETHOD INIT WSCLIENT FachadaWSSGSService_ArrayOf_tns2_WSValorSerieVO
533. ::oWSWSValorSerieVO := {} // Array Of
FachadaWSSGSService_WSVALORSERIEVO():New()
534. Return
535.
536. WSMETHOD CLONE WSCLIENT FachadaWSSGSService_ArrayOf_tns2_WSValorSerieVO
537. Local oClone :=
FachadaWSSGSService_ArrayOf_tns2_WSValorSerieVO():NEW()
538. oClone:oWSWSValorSerieVO := NIL
539. If ::oWSWSValorSerieVO <> NIL
540. oClone:oWSWSValorSerieVO := {}
541. aEval( ::oWSWSValorSerieVO , { |x| aadd( oClone:oWSWSValorSerieVO ,
x:Clone() ) } )
542. Endif
543. Return oClone
544.
545. WSMETHOD SOAPRECV WSSEND oResponse WSCLIENT
FachadaWSSGSService_ArrayOf_tns2_WSValorSerieVO
546. Local nRElem1 , nTElem1
547. Local aNodes1 := WSRPCGetNode(oResponse,.T.)
548. ::Init()
549. If oResponse = NIL ; Return ; Endif
550. nTElem1 := len(aNodes1)
551. For nRElem1 := 1 to nTElem1
552. If !WSIsNilNode( aNodes1[nRElem1] )
553. aadd(::oWSWSValorSerieVO ,
FachadaWSSGSService_WSValorSerieVO():New() )
554.
::oWSWSValorSerieVO[len(::oWSWSValorSerieVO)]:SoapRecv(aNodes1[nRElem1]
)
555. Endif
556. Next
557. Return

Antes de construirmos o fonte que irá consumir o WsClient gerado pelo TDS, e atualizar a tabela de Cadastro de
Moedas do Protheus, abaixo vamos listar os códigos da moedas suas respectivas descrições e o tipo de operação
(venda e/ou compra).

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 13/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

Código da Moeda  Moeda (Operação) 

1 Dólar (venda)

10813 Dólar (compra)

21619 Euro (venda)

21620 Euro (compra)

21621 Iene (venda)

21622 Iene (compra)

21623 Libra esterlina (venda)

21624 Libra esterlina (compra)

21625 Franco Suiço (venda)

21626 Franco Suiço (compra)

21627 Coroa Dinamarquesa (venda)

21628 Coroa Dinamarquesa (compra)

21629 Coroa Norueguesa (venda)

21630 Coroa Norueguesa (compra)

21631 Coroa Sueca (venda)

21632 Coroa Sueca (compra)

21633 Dólar Australiano (venda)

21634 Dólar Australiano (compra)

21635 Dólar Canadense (venda)

21636 Dólar Canadense (compra)

Agora que já temos os códigos das moedas com suas respectivas operações, podemos construir nosso fonte.

No nosso exemplo, iremos utilizar o código 10813, que é relativo a moeda Dólar, para operação de compra.

Abaixo segue o código fonte, o qual instanciámos o objeto referente ao WsClient, que irá consumir o WS do Banco
Central e efetuar atualização automática de moedas no Protheus:

1. #Include 'Protheus.ch'
2.
3. User Function CotacaoMoedas()
4.
5. //Variaveis Locais
6. Local oCotacaoMoedas := Nil

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 14/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

7. Local cRetCotMoeda := ""


8. Local cAvisos := ""
9. Local cErros := ""
10. Local cReplace := ""
11. Local oXMLCotMoeda := Nil
12. Local dDataCotacao := StoD("")
13. Local nCotacaoMoeda := 0
14. Local lAtzDolar := .F.
15.
16. //Instanciacao do WsClient de Moeda do Fonte WCCotacaoMoedas.prw
17. oCotacaoMoedas := WSFachadaWSSGSService():New()
18.
19. //Setado o Codigo 10813 respectivo ao Dolar (Compra)
20. oCotacaoMoedas:nin0 := 10813
21.
22. //Verificamos se o metodo getUltimoValorXML do WsClient
WSFachadaWSSGSService foi consumido com sucesso
23. If (oCotacaoMoedas:getUltimoValorXML())
24.
25. //Obtem o retorno de cotacao da Moeda no formato XML
26. cRetCotMoeda := oCotacaoMoedas:cgetUltimoValorXMLReturn
27.
28. //Utiliza a funcao XmlParser para converter o retorno XML do WS
para uma variavel do Tipo Objeto
29. oXMLCotMoeda := XmlParser(cRetCotMoeda, cReplace, @cErros,
@cAvisos)
30.
31. //Verifica se houve erro ao consumir o WS
32. If AllTrim(cErros) == ""
33. //Obtem a Data da Ultima Cotacao
34. dDataCotacao :=
StoD(oXMLCotMoeda:_RESPOSTA:_SERIE:_DATA:_ANO:TEXT +
oXMLCotMoeda:_RESPOSTA:_SERIE:_DATA:_MES:TEXT +
oXMLCotMoeda:_RESPOSTA:_SERIE:_DATA:_DIA:TEXT)
35.
36. //Obtem o Valor da Ultima Cotacao
37. nCotacaoMoeda :=
Val(StrTran(oXMLCotMoeda:_RESPOSTA:_SERIE:_VALOR:TEXT, ",", "."))
38.
39. //Abre o Ordena a Tabela de Moedas - SM2
40. DBSelectArea("SM2")
41. SM2->(DBSetOrder(1))
42.
43. //Verifaca se ja existe ou nao, a Cotacao na Data obtida no
consumo do WS
44. IIF(DBSeek(FWFilial("SM2") + DtoS(dDataCotacao)), RecLock("SM2",
.F.), RecLock("SM2", .T.))
45.
46. //Atualiza a Data, Valor (no caso o Dolar e a Moeda 2, mas isso
depende da configuracao), e a nao abertura da Tela de Cotacao na
entrada do sistema
47. SM2->M2_DATA := dDataCotacao
48. SM2->M2_MOEDA2 := nCotacaoMoeda
49. SM2->M2_INFORM := "S"
50.
51. //Libera o registro alterado
52. SM2->(MsUnLock())
53.
54. //Operacao realizada com sucesso
https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 15/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

55. lAtzDolar := .T.


56.
57. EndIf
58.
59. EndIf
60.
61. Return (lAtzDolar)

No nosso código em questão, estamos utilizando a atualização da Tabela SM2 (Moedas do Sistema). Dependendo
do módulo utilizado, faz-se necessário a atualização de outras tabelas. O conceito para atualizar as outras tabelas,
é o mesmo do fonte acima.

Para realizar o download dos fontes utilizados para realizar a atualização automática de moedas no Protheus, e
verificar o endereço do WS de cotações de moedas do Banco Central, basta acessar abaixo, a nossa seção
“Anexos”.

Como podemos verificar nesse post, a atualização automática de moedas no Protheus, é muito simples de fazer,
porém agrega muito valor ao trabalho do analista.

Caso ainda não tenham se inscrito no Canal Smart Siga, ou em nossas mídias sociais, aproveitem para se
cadastrar agora, pois assim, vocês recebem em primeira mão, todas as novidades do nosso site.

Aproveitem também, para ingressar em nosso Canal do Smart Siga no Telegram. Para tanto acessem:
https://t.me/smartsiga (https://t.me/smartsiga).

Espero que vocês tenham gostado do nosso post, e que o nosso site esteja ajudando os nossos amigos analista.

E por hoje é só pessoal!!!

Abraços e até a próxima.

Anexos

Anexo 01: Para realizar o download do fonte WsClient, que consome o WS do Banco Central, diretamente do
GitHub do Smart Siga, clique aqui
(https://github.com/smartsiga/AdvPL/blob/master/WsClient/WCCotacaoMoedas.prw);

Anexo 02: Para realizar o download do fonte de atualização automática de moedas no Protheus, diretamente do
GitHub do Smart Siga, clique aqui
(https://github.com/smartsiga/AdvPL/blob/master/Funcoes/Atualizacao%20Moedas/CotacaoMoedas.prw);

Anexo 03: O endereço do WebService de cotações de moedas do Banco Central do Brasil é o seguinte:
https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl
(https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl).

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 16/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

Referências:
Banco Central do Brasil (http://www.bcb.gov.br)
Blog do Tiago Crizanto (http://blog.tiagocrizanto.com/con guracoes-do-webservice-do-banco-central-
cotacoes-diversas/)
Compartilhe:

Compartilhar 0 Tweetar Compartilha

 AdvPL (Https://Www.Smartsiga.Com.Br/Category/Protheus/Advpl/), Home


(Https://Www.Smartsiga.Com.Br/Category/Smartsiga-Com-Br/), Protheus
(Https://Www.Smartsiga.Com.Br/Category/Protheus/)
 Moedas (Https://Www.Smartsiga.Com.Br/Tag/Moedas/), Protheus
(Https://Www.Smartsiga.Com.Br/Tag/Protheus/), SOAP (Https://Www.Smartsiga.Com.Br/Tag/Soap/),
WebService (Https://Www.Smartsiga.Com.Br/Tag/Webservice/), WsClient
(Https://Www.Smartsiga.Com.Br/Tag/Wsclient/)

8 thoughts on “Atualização Automática de Moedas no


Protheus”

Marcos Coelho disse:

2 janeiro, 2018 às 2:59 pm (https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/#comment-100)


Olá Christian,

Muito o legal este post, que, com certeza irá facilitar a vida de muitos usuários.

Senti falta apenas da informação da URL no formato WSDL para criar o Client pelo TDS, pois se
informarmos a URL descrita no fonte no formado
https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl
(https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl) o TDS acusa o seguinte erro:
“Verifique a URL contendo o serviço. Este serviço parece ser inválido”.

Grande Abraço… Valeu!!!

Cristian Regazzo disse:

2 janeiro, 2018 às 3:17 pm (https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/#comment-101)


Boa Tarde Marcos,

Primeiramente obrigado por acompanhar o nosso site.

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 17/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

Realmente, faltou citar o endereço da WSDL do post.

Já fizemos a correção, obrigado por nos avisar.

A WSDL citada por você no comentário, está correta.

Verificou, se de repente seu Firewall não está bloqueando o acesso a mesma?

Se você digitar a WSDL no navegador, consegue fazer o download da mesma? Se sim, pode usar o
arquivo para importar a estrutura através da opção “Remoto”, ao criar o WsClient.

Obrigado e qualquer dúvida estamos a disposição.

Att,

Smart Siga
TI Inteligente

Marcos Coelho disse:

2 janeiro, 2018 às 4:13 pm (https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/#comment-102)


Ok Cristian,

Está tudo certo… Sim, eu consego fazer o download normalmente pelo browser e testando a
criação do WsClient pelo DevStudio (IDE) não ocorreu nenhum erro.

Me chamou a atenção sua observação para informar o Tipo “Remoto”, pois eu não encontrei esta
opção em meu TDS.

Só então me dei conta de que estava utilizando a versão 11.2 do TDS que não tem essa opção, mas
ao utilizar a versão 11.3 com o Tipo “Remoto” a URL foi carregada sem nenhum problema.

Muito obrigado pelo retorno e mais uma vez parabéns pelo post.

Até mais.

Cristian Regazzo disse:

3 janeiro, 2018 às 4:56 pm (https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/#comment-


104)
Boa Tarde Marcos,

Que bom que deu tudo certo, e que o nosso site esteja te ajudando.

Continue nos acompanhando.

Abraços.

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 18/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

Smart Siga
TI Inteligente

Fernando disse:

15 fevereiro, 2018 às 5:22 pm (https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/#comment-149)


E como ficaria em caso de finais de semana e/ou feriados, onde não temos o registro destes dias no
banco central?

Cristian Regazzo disse:

16 fevereiro, 2018 às 11:58 am (https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/#comment-


152)
Bom dia Fernando.

Obrigado por acompanhar o Smart Siga.

Em caso de feriados ou finais de semana, o WebService (WS) sempre retornará o valor do último dia
útil.

Por exemplo; No caso de sábado e/ou domingo retornará o valor da sexta-feria. Se um feriado, cair
em uma quarta-feria, e você consultar o WS, o mesmo retornará o valor de terça-feira.

Abs,

Smart Siga
TI Inteligente

Renato disse:

6 março, 2018 às 8:39 am (https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/#comment-192)


Eu acabei tendo um problema com o código como está.
O retorno da data do xml vinha sem o zero no dia e no mês, resultando em uma string tipo: 201835 ao
invés de 20180305.
Não sei se isso é alguma configuração do meu servidor aqui, mas caso alguém esteja com problemas,
vale a pena conferir.

Cristian Regazzo disse:

8 março, 2018 às 8:56 am (https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/#comment-201)


Bom dia Renato,

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 19/20
11/12/2018 Atualização Automática de Moedas no Protheus - Smart Siga

Obrigado pela dica e por nos acompanhar.

Att,

Smart Siga
TI Inteligente

https://www.smartsiga.com.br/atualizacao-automatica-de-moedas-no-protheus/ 20/20

Você também pode gostar