Unidades de medida

Gustavo Orrillo
- 07/16/2022 - 1 min. de lectura

Odoo permite administrar sus productos en diferentes unidades de medida. Para habilitar esta funcionalidad, se debe habilitar en la configuración:


Lo que habilita el ingreso de la unidad del producto no solo en el formulario del producto


O en los pedidos, facturas o transferencias. Por ejemplo en los pedidos de compra;


Aca estamos pidiendo el ingreso de tres toneladas de bobinas.

Categorías de producto

Las unidades de medida se agrupan por categoría (peso, volumen, entre otras). Se accede a las mismas en el menú de configuración


Y son creadas automáticamente al instalar el módulo uom (lo que sucede al configurar el uso de múltiples unidades de medida). Cada categoría tiene una unidad de referencia (por ejemplo; la categoría Peso tiene como unidad de referencia el kilogramo). El cual se tomará como referencia para calcular las conversiones entre las diferentes unidades. Tambien se ingresa el factor de conversión entre la unidad de medida y la unidad de referencia, junto con la indicación de si la unidad es mayor o menor a la referencia. Por ejemplo, de vuelta con el peso


Esto es lo que permite convertir los montos y cantidades cuando se ingresan pedidos en diferentes unidades de medida. Por ejemplo, uno puede hacer una compra por tres toneladas de acero, y hacer la recepción por 1,500 kilogramos de acero. 

Consideraciones técnicas

El modelo de la unidad de medida (uom.uom) provee dos métodos interesantes. El primero es _compute_quantity. Por ejemplo, si queremos convertir tres toneladas a kilogramos, deberíamos hacer:

# Obtenemos el objeto kilogramo
uom_kg = self.env.ref('uom.product_uom_kgm')
# Obtenemos el objeto tonelada
uom_ton = self.env.ref('uom.product_uom_ton')
# Computamos los 3000 kilogramos a toneladas
final_qty = uom_ton._compute_quantity(3000, uom_kg)

Lo mismo si queremos convertir el precio de un kilogramo a una tonelada. Para ello usamos el método _compute_price

# Obtenemos el objeto kilogramo
uom_kg = self.env.ref('uom.product_uom_kgm')
# Obtenemos el objeto tonelada
uom_ton = self.env.ref('uom.product_uom_ton')
# Computamos el precio de kilogramos a toneladas,
final_amount = uom_ton._compute_price(1000, uom_kg)
En el método _compute_price tenemos que pasar el precio de la unidad de referencia y devuelve el precio en la unidad de destino.

Acerca de:

Gustavo Orrillo

Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.