Automatizando la actualización del USD en Uruguay

7 de agosto de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

En muchas instalaciones de Odoo en Uruguay se necesita capturar en forma automática el USD (porque muchas empresas uruguayas emiten sus facturas en USD y las cobran o en UYU o en USD). Para ayudar con este flujo de trabajo desarrollamos el módulo exchange_rate_uy el cual captura el tipo de cambio del USD Banco Central de Uruguay.

Este módulo se instala como cualquier módulo y no tiene dependencias. Hay que crear una acción planificada para actualizar el USD, la cual debe estar definida para el modelo res.currency e invocar el método get_rou_exchange_rate


Al ejecutarse la acción planificada, el método get_rou_exchange_rate se conecta con el Banco República de Uruguay y lee el tipo de cambio, actualizando el tipo de cambio en Odoo. Esto lo podemos apreciar en los siguientes screenshots.



Quedaría pendiente en el módulo parametrizar el método que toma el tipo de cambio ya que la URL y la moneda que leen se encuentran hardcodeadas, al igual que se podría definir la acción planificada para que se cree durante la instalación del módulo.

Aspectos técnicos

Este módulo es muy parecido que captura el USD del Banco Nación Argentina. Basicamente el método lee la página con la cotización del USD, y luego hace scrapping utilizando BeautifulSoup

Lo que se hace al leerse la página, se busca por las filas de la tabla con cotizaciones que contienen la clase "Moneda alt". Y allí se determina la fila del USD que es la que contiene el texto "DLS. USA BILLETE", para luego leer la celda con la cotización de venta

tds = soup.find_all('td',class_='Moneda alt')
index = -1
for i,td in enumerate(tds):
if td.get_text() == 'DLS. USA BILLETE':
index = i
break
if index > (-1):
exchange_rate = soup.find_all('td',class_='Venta alt')[index].get_text()

Y luego se actualiza la moneda USD con el tipo de cambio inverso (que es como lo maneja Odoo)

Gustavo Orrillo 7 de agosto de 2023
Compartir
Archivar
Identificarse dejar un comentario