Skip to content
This repository has been archived by the owner on Aug 17, 2021. It is now read-only.

MauricioRobayo/cambio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

98 Commits

Repository files navigation

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.

Cambio 馃挼

install size npm version Build Status codecov Greenkeeper badge

Consulta la Tasa Representativa del Mercado en el servicio web de la Superintendencia Financiera de Colombia.

馃摝 Sin dependencias

馃摝 Extra liviano

Cambio

Instalaci贸n

npm install @trmapi/cambio

Uso

Requerir la funci贸n cambio:

const cambio = require('@trmapi/cambio')

La funci贸n cambio recibe los argumentos date y options, y devuelve una promesa.

Argumentos

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.

Opciones

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.

Respuesta

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.

Ejemplos

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"
  }
}

Licencia

MIT

馃挆Bandera de Colombia

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published