This package has been DEPRECATED in favor of the trm-api package which uses the official Tasa Representativa del Mercado API instead of the SOAP web service.
Consulta la Tasa Representativa del Mercado en el servicio web de la Superintendencia Financiera de Colombia.
馃摝 Sin dependencias
馃摝 Extra liviano
npm install @trmapi/cambio
Requerir la funci贸n cambio
:
const cambio = require('@trmapi/cambio')
La funci贸n cambio
recibe los argumentos date
y options
, y devuelve una promesa.
Argumento | Descripci贸n |
---|---|
[date] |
String - fecha que se desea consultar en formato YYYY-MM-DD . Si se omite, se devolver谩 la informaci贸n de la TRM para la fecha actual. |
[options] |
Objeto - opciones que se desean para la respuesta. |
Opci贸n | Descripci贸n |
---|---|
mode | String - El tipo de respuesta que se desea. Puede ser slim mostrando una respuesta resumida; full mostrando la respuesta completa; raw mostrando el xml original. Por defecto el valor que se usa es slim . |
status | Boolean - Si se muestra o no el c贸digo del estado de la respuesta. Por defecto es true . |
En caso de que el c贸digo del estado de la respuesta del servicio web de la SFC sea 200 OK
y se usen las opciones por defecto, se devuelve una promesa que resuelve con un objecto como el siguiente:
{
status: 200,
trm: {
validityFrom: "2013-01-01T00:00:00-05:00",
validityTo: "2013-01-02T00:00:00-05:00",
value: 1768.23,
message: "No se ha encontrado el valor para la TCRM en la fecha dada: Fri Oct 10 00:00:00 COT 2008. Se retorna el valor de la fecha superior mas cercana",
}
}
El campo message
no est谩 disponible en todas las respuestas y s贸lo se mostrar谩 en aquellas en donde sea proporcionado por el servicio web de la SFC.
Si se usa la opcion mode: full
se obtienen todos los campos de la respuesta:
{
status: 200,
trm: {
id: 1701,
unit: "COP",
validityFrom: "2013-01-01T00:00:00-05:00",
validityTo: "2013-01-02T00:00:00-05:00",
value: 1768.23,
message: "No se ha encontrado el valor para la TCRM en la fecha dada: Fri Oct 10 00:00:00 COT 2008. Se retorna el valor de la fecha superior mas cercana",
success: true
}
}
Si se usa la opcion mode: raw
se obtiene el xml
original de la respuesta:
{
status: 200,
trm: '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:queryTCRMResponse xmlns:ns2="http://action.trm.services.generic.action.superfinanciera.nexura.sc.com.co/"><return><id>1701</id><unit>COP</unit><validityFrom>2013-01-01T00:00:00-05:00</validityFrom><validityTo>2013-01-02T00:00:00-05:00</validityTo><value>1768.23</value><message>No se ha encontrado el valor para la TCRM en la fecha dada: Tue Jan 01 00:00:00 COT 2008. Se retorna el valor de la fecha superior mas cercana</message><success>true</success></return></ns2:queryTCRMResponse></soap:Body></soap:Envelope>'
}
En caso de que se encuentre otro c贸digo de respuesta por parte del servicio web la respuesta ser谩 como la siguiente:
{
status: 500,
trm: {
faultcode: "soap:Client",
faultstring: "Unmarshalling Error: "
}
}
En este caso, mode: slim
y mode: full
devolver谩n la misma informaci贸n.
Para obtener la informaci贸n de la TRM para el 6 de enero de 2018:
cambio('2018-01-06')
.then(data => console.log(data))
.catch(err => console.log(err))
{
status: 200,
trm: {
validityFrom: "2018-01-06T00:00:00-05:00",
validityTo: "2018-01-09T00:00:00-05:00",
value: 2898.32
}
}
Si s贸lo se desea obtener la informaci贸n de la TRM sin el c贸digo del estado de la respuesta:
cambio('2018-01-06', { status: false })
.then(data => console.log(data))
.catch(err => console.log(err))
{
validityFrom: "2018-01-06T00:00:00-05:00",
validityTo: "2018-01-09T00:00:00-05:00",
value: 2898.32
}
Si s贸lo se desea obtener el xml
devuelto por el servicio web se pueden combinar las opciones status: false
y mode: raw
:
cambio("2018-01-06", { mode: "raw", status: false })
.then(data => console.log(data))
.catch(err => console.log(err))
);
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:queryTCRMResponse xmlns:ns2="http://action.trm.services.generic.action.superfinanciera.nexura.sc.com.co/"><return><id>620351</id><unit>COP</unit><validityFrom>2018-01-06T00:00:00-05:00</validityFrom><validityTo>2018-01-09T00:00:00-05:00</validityTo><value>2898.32</value><success>true</success></return></ns2:queryTCRMResponse></soap:Body></soap:Envelope>
Para obtener la informaci贸n de la TRM que aplica para la fecha actual:
cambio()
.then(data => console.log(data))
.catch(err => console.log(err))
{
status: 200,
trm: {
validityFrom: "2018-11-16T00:00:00-05:00",
validityTo: "2018-11-16T00:00:00-05:00",
value: 3198.29
}
}
El argumento fecha
de la funci贸n no es verificado sino que es pasado directamente como argumento en la solicitud SOAP que se hace al servicio web de la SFC, esto quiere decir que se puede pasar un argumento inv谩lido y la funci贸n devolver谩 la respuesta del servicio web a dicho argumento:
cambio('31-10-2018')
.then(data => console.log(data))
.catch(err => console.log(err))
{
status: 500,
trm: {
faultcode: "soap:Client",
faultstring: "Unmarshalling Error: 31-10-2018"
}
}
As铆 mismo, se puede pasar una fecha mayor a la actual en cuyo caso se devolver谩 la informaci贸n de la trm para la fecha m谩s reciente disponible:
cambio('9999-10-10')
.then(data => console.log(data))
.catch(err => console.log(err))
{
status: 200,
trm: {
validityFrom: "2018-11-16T00:00:00-05:00",
validityTo: "2018-11-16T00:00:00-05:00",
value: 3198.29
}
}
El servicio web de la SFC proporciona informaci贸n de la TRM a partir de 2013-01-01
, por lo que si se solicita una fecha menor a esta fecha se devolver谩 el valor correspondiente a dicha fecha:
cambio('1978-10-10')
.then(data => console.log(data))
.catch(err => console.log(err))
{
status: 200,
trm: {
validityFrom: "2013-01-01T00:00:00-05:00",
validityTo: "2013-01-02T00:00:00-05:00",
value: 1768.23,
message: "No se ha encontrado el valor para la TCRM en la fecha dada: Tue Oct 10 00:00:00 COT 1978. Se retorna el valor de la fecha superior mas cercana"
}
}