Actualizando el dolar BNA - Librería BeautifulSoup
Muchas empresas necesitan actualizar el valor del dolar con el valor del BNA, y necesitan que dicha actualización sea automática. Lamentablemente el BNA no provee un webservice para ello pero por suerte su página es sencilla que se puede analizar con BeautifulSoup
y su examinamos su código HTML es
<tbody>Para ello desarrollamos un módulo llamado odoo_dolarbna. El mismo se instala como cualquier módulo, y solo requiere dos configuraciones. La primera es crear una acción planificada para el objeto res.currency (Moneda) que invoque el método model.update_dolarbna(). Por otra parte se debe agregar un parámetro llamado dolar_bna con el valor de la página del BNA.
<tr>
<td class="tit">Dolar U.S.A</td>
<td>141,0000</td>
<td>149,0000</td>
</tr>
<tr>
<td class="tit">Euro</td>
<td>141,0000</td>
<td>149,0000</td>
</tr>
<tr>
<td class="tit">Real *</td>
<td>2520,0000</td>
<td>2920,0000</td>
</tr>
</tbody>
Aspectos técnicos
Este módulo usa la librería BeautifulSoup. Esta librería permite analizar los contenidos de una página web. Lo que hacemos es por medio de la librería requests procesamos la página de BNA,
page = requests.get(dolarbna_url)
Para luego trabajar con el ID billetes de la página
soup = BeautifulSoup(page.content, "html.parser")
results = soup.find(id="billetes")
Luego tomamos el valor de la segunda columna de la primer fila. De ahí extraemos la directiva TD y convertimos el valor a float
tds = results.find_all("td",class_=False)
if len(tds) < 2:
raise ValidationError('No se puede determinar el dolar BNA #1')
value = tds[1].text
value = value.replace('<td>','')
value = value.replace('</td>','')
value = float(value.replace(',','.'))
Por último, se busca la moneda USD y el tipo de cambio para el día de la fecha. Si el tipo de cambio no existe, se procede a crearlo.
Acerca de:
Gustavo Orrillo
Apasionado de la programación, implementa Odoo para distintos tipos de negocios desde el año 2010. En Moldeo Interactive es Socio fundador y Programador; además de escribir en el Blog sobre distintos temas relacionados a los desarrollos que realiza.