Skip to content

Instantly share code, notes, and snippets.

@agarciagaray
Created October 13, 2022 16:34
Show Gist options
  • Save agarciagaray/1475b9f8c87fa6e91918e092f1db03ee to your computer and use it in GitHub Desktop.
Save agarciagaray/1475b9f8c87fa6e91918e092f1db03ee to your computer and use it in GitHub Desktop.
Consultar la tasa de cambio del día en Colombia
* =====================================================================================
* El siguiente código es una adpatación de un código compartido por un amigo, Irwin Rodriguez
* puede consultar el origianl creado para la Argentina acá: https://gist.github.com/Irwin1985/f2ac4801d177ba48aa537a7a49b072d7
* Consulta las tasas del dolar desde el sitio web:
* https://www.dolarsi.com/api/api.php?type=valoresprincipales
*
* Dependencias:
* VfpRestClient: https://github.com/Irwin1985/VFPRestClient
* JSONFox: https://github.com/Irwin1985/JSONFox
*
* NOTA:
* 1. Cambie las rutas de vfpRestClient y JSONFox por las correspondientes.
* 2. El objeto de nombre 'Argentina' tiene 2 propiedades adicionales, para
* manipularlos solo use las variables: loAfluencia y loObservaciones
* 3. La serialización de JSON a Objeto Fox no sustituye los valores string
* por los reales, por lo tanto todo es tratado como un string.
* ===================================================================================== *
CLOSE DATABASES ALL
LOCAL lcVfpRestClientDir, lcJsonFoxDir, loRest
lcVfpRestClientDir = "D:\ConsultaDolar\VFPRestClient\vfprestclient.prg"
lcJsonFoxDir = "D:\ConsultaDolar\JSONFox\jsonfox.app"
SET PROCEDURE TO (lcVfpRestClientDir) ADDITIVE
lcDate = DATE()
lcURL = 'https://www.datos.gov.co/resource/32sa-8pi3.json?vigenciadesde='
lcURLFin = 'T00:00:00.000' &&'&%24%24app_token=o5dWSiaVQYs8tivrOZDgO9uCe'
lcDate = ALLTRIM(STR(YEAR(lcDate))) + "-" + PADL(MONTH(lcDate), 2, '0') + "-" + PADL(DAY(lcDate), 2, '0')
*--- Se arma la dirección a consultar completa
lcURLTotal = lcURL + lcDate + lcURLFin
loRest = CREATEOBJECT("Rest")
loRest.AddRequest(loRest.GET, lcURLTotal)
loRest.addHeader("Content-Type", "application/json")
loRest.SEND()
IF loRest.STATUS != 200
MESSAGEBOX(loRest.LastErrorText, 16, "Error")
RETURN
ENDIF
DO (lcJsonFoxDir)
_SCREEN.json.JSONToCursor(loRest.ResponseText, 'cData', SET("Datasession"))
SELECT cData
BROWSE
@agarciagaray
Copy link
Author

Se consulta solamente la fecha del día y recuerden que en Colombia la TRM puede durar varios días con el mismo valor (fines de semana rige desde el viernes hasta el lunes o martes si el lunes es feriado), igualmente cuando en los Estados Unidos hay feriado ese día rige el del día anterior, por eso vemos que en la tabla hay una vigenciadesde y vigenciahasta.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment