Actualizando automáticamente el dolar mediante webservices

1 de julio de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Por razones que escapan el sentido común la gran mayoría de los usuarios de Odoo en Argentina necesitan actualizar el tipo de cambio del dolar en forma diaria. Y hay varias opciones que permiten automatizarlo: AFIP, hay gente que te pide si o si el BNA (sino el mundo se les viene abajo) y hay webservices que proveen la cotización del dolar de manera bastante certera.

El tipo de cambio que brinda AFIP se lo captura utilizando los webservices de AFIP. El de BNA se puede capturar haciendo scrapping de la página del BNA. Pero también se puede obtener el valor del dolar utilizando un webservice, como es dolarsi. En este caso se ofrece un web-service el cual por medio de la librería requests obtiene resultados como el siguiente


Bueno, para ello existe un módulo muy sencillo que actualiza el valor del dolar (lo hace consultando el webserivce de dolarsi. Este módulo necesita que uno haga dos cosas. La primera es definir un parámetro llamado dolarsi_url el cual tiene la URL del webservice:



y una acción planificada para que se ejecute en forma diaria:


Y listo, la moneda dolar actualizará su cotización diariamente. Este módulo tiene dos tareas pendientes (pero no es el fin del mundo, pasa que hay usuarios que piensan que con la instalación se tiene que resolver todo):

  • Agregar un archivo de datos para dar el alta el parámetro que tiene la URL del webservice al momento de instalarse el módulo
  • Agregar en este archivo de datos una acción planificada que invoque el método update_dolarsi
  • Renombrar el archivo __openerp__.py por __manifest__.py (deberia tomarme el tiempo algun dia y hacerlo)

Notas técnicas


Este módulo actualiza el valor del dolar en forma diaria. Para ello utiliza las acciones planificadas (de las que hablamos anteriormente en otro artículo). En este módulo definimos un método (update_dolarsi) el cual utiliza la librería de Python requests para contactar el web-service de dolarsi y luego extraer la información de la cotización.

Este método hace varios controles para asegurarse que no cancele en caso de haber error (hay algunos web services que no son del todo fiables), y luego inserta un registro en el modelo res.currency.rate con la nueva cotización (recordemos que Odoo maneja una sola cotización por día). Si la cotización ya existe, el módulo no la actualiza.

Gustavo Orrillo 1 de julio de 2023
Compartir
Archivar
Identificarse dejar un comentario