Manejo de precios y costos de productos en Odoo en varias monedas

6 de enero de 2024 por
Andres Dawidowicz
| Sin comentarios aún
 

A partir del pedido de un cliente de tener la posibilidad de manejar la moneda de los productos en pesos y dólares, me topé con la restricción de Odoo de manejar la moneda de los productos con la misma moneda que está definida la compañía.

La moneda del producto, para el costo y el precio es un campo computado que toma la moneda de la compañía. 

Para dar una solución al pedido he seguido algunos pasos.

En primer lugar redefinir el campo moneda de costo y de precio como un campo que no se computa.

currency_id      = fields.Many2one('res.currency', 'Currency',readonly=False)
cost_currency_id = fields.Many2one('res.currency', 'Moneda de Costo',readonly=False)

Luego agregar un campo booleano en el producto que me indique a cual de las 2 monedas pertenece el producto. En el caso de ser más de 2 podría ponerse un campo Selector.

en_pesos = fields.Boolean(string='Manejo en Pesos', default=False)

Luego se puede instalar el módulo product_usd_currency que hará que todos los productos cambien a la moneda dólar, además de poner en la vista lista del producto se pueda visualizar la moneda, pero modificándolo para que tome en cuenta el campo booleano

class ProductTemplate(models.Model):
_inherit = 'product.template'

@api.depends('company_id')
def _compute_currency_id(self):
for template in self:
if not template.en_pesos:
template.currency_id = self.env.ref('base.USD')
template.cost_currency_id = self.env.ref('base.USD')
else:
template.currency_id = self.env.ref('base.ARS')
template.cost_currency_id = self.env.ref('base.ARS')

Finalmente en la vista del producto le agregamos para que se pueda modificar el campo booleano y las monedas

<field name="currency_id" />
<field name="cost_currency_id" />
<field name="en_pesos" widget="boolean_toggle"/>

Luego para poder cambiar de a grupos se podría poner una Acción para seleccionar múltiples productos y cambiarles la moneda en una sola acción


Andres Dawidowicz 6 de enero de 2024
Compartir
Categorías
Archivar
Identificarse dejar un comentario