Skip to content

Instantly share code, notes, and snippets.

@agarciagaray
Created October 12, 2022 21:42
Show Gist options
  • Save agarciagaray/71bcd7b7232aa7d9be6e27ac1b38dc77 to your computer and use it in GitHub Desktop.
Save agarciagaray/71bcd7b7232aa7d9be6e27ac1b38dc77 to your computer and use it in GitHub Desktop.
Función para obtener la TRM del día en Colombia - VFP
*===========================================================================
*-------------------------------------
* FUNCTION trm(tcFecha)
*-------------------------------------
* Realiza una consulta en la web www.datos.gor.co para
* traer el valor de la tasa representativa del mercado a la fecha
* enviada, si no se envía parametro toma la fecha del sistema o
* fecha del día
* RETORNA: Valor un objeto con los datos del precio del dólar con dos decimales.
* Hay que tener en en cuenta la vigencia para guardar el dato en un tabla
* USO: WAIT WINDOW trm(DATE(2022, 08, 17)): Retorna el valor del
* dólar en pesos del día 17 de agosto de 2022.
* WAIT WINDOW trm(): Retorna el valor del dólar del día.
*-------------------------------------
FUNCTION trm
LPARAMETERS tdDate
lcDate = IIF(VARTYPE("tdDate") = "U" OR VARTYPE(tdDate) <> "D", Date(), tdDate)
lcDate = IIF(lcDate > DATE(), DATE(), lcDate)
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')
cDato = 0
*--- Se arma la dirección a consultar completa
lcURLTotal = lcURL + lcDate + lcURLFin
Set Procedure To "C:\IGD\Clases\nfJson\nfJsonRead" additive
LOCAL loXMLHTTP AS "MSXML2.XMLHTTP"
TRY
loXMLHTTP = CREATEOBJECT("MSXML2.XMLHTTP.6.0")
CATCH
loXMLHTTP = CREATEOBJECT("MSXML2.XMLHTTP.3.0")
ENDTRY
*!* loXMLHTTP = CREATEOBJECT("MSXML2.XMLHTTP")
TRY
WITH loXMLHTTP
.OPEN("GET", lcURLTotal)
.SEND()
jsonString = .responseText
* jsonString = LEFT(jsonString, AT('}' + CHR(13), jsonString))
ENDWITH
cDato = STREXTRACT(jsonString, "[", "]")
vfpobj = nfJsonRead(cDato)
CATCH TO oException
IF oException.ERRORNO = 1
STRTOFILE("Ocurrio un error a las: " + TRANSFORM(DATETIME());
+ CHR(13),"C:\Temp\Errors.log",.T.)
ENDIF
FINALLY
ENDTRY
cDato = IIF(EMPTY(cDato), 0, cDato)
cDato = IIF(TYPE("cDato") <> "N", VAL(cDato), cDato)
RETURN IIF(TYPE("vfpobj") = "U", .F., vfpobj) &&cDato
ENDFUNC
*===========================================================================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment