Unidades de medida en Odoo

29 de junio de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Este es un tema de inventarios y fabricación que causa problemas. Y es un tema subestimado por los usuarios, en realidad lo que se subestima es su impacto. Muchas veces se configuran las unidades de medida de los productos sin pensar en sus consecuencias. Y se empiezan a realizar operaciones con los mismos (por lo general, movimientos de stock o a veces líneas de listas de materiales). Si uno se da cuenta que está trabajando con la unidad de medida equivocada, es muy dificil corregir dicho error. Pero vamos a hablar de eso más tarde. 

Apenas se crea una base de datos en Odoo, la misma no soporta múltiples unidades de medida y solo maneja una; "Unidades'. Si queremos trabajar con múltiples unidades de medida,  se debe habilitar en la configuración:



Esto permite definir la unidad del producto (así como la unidad de compra) no solo en el formulario del producto


Sino también en las líneas de listas de materiales, pedidos de venta, facturas o transferencias. Por ejemplo en los pedidos de compra;


Aca estamos pidiendo el ingreso de una tonelada de bobinas.

Categorías de unidades de medida

Las unidades de medida se pueden agrupar por categoría (peso, volumen, entre otras). A estas categorías se accede en el menú de configuración (por ejemplo en el módulo de Inventarios sería Inventario > Configuración > Unidades de Medida > Categorías UdM)


Estas categorías se crean al instalar el módulo uom en la base de datos(que es lo que ocurre al configurar el uso de múltiples unidades de medida). Cada categoría tiene una unidad de referencia (por ejemplo; la categoría Volumen tiene como unidad de referencia el litro). Esta última unidad de medida se tomará como referencia para calcular las conversiones entre las diferentes unidades de medida. En cada unidad de medida se debe ingresar 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 volumen


Esto es lo que permite convertir los montos y cantidades cuando se ingresan pedidos en diferentes unidades de medida. Por ejemplo con la categoría peso, uno puede hacer una compra por cinco toneladas de acero, y hacer la recepción por 1,500 kilogramos de acero. Y luego hacer el envío de 2 toneladas de acero. Las posibilidades son múltiples. Lo fundamental es tener bien configurado los parámetros de conversión.

Consideraciones técnicas

El modelo de la unidad de medida (uom.uom, pueden encontrarlo en el módulo uom) tiene dos métodos que merecen ser conocidos. El primero es _compute_quantity. Por ejemplo, si queremos convertir cinco 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 las cinco toneladas a kilogramos
final_qty = uom_ton._compute_quantity(5, uom_kg)


Ahora tambien podemos convertir el precio de una tonelada a un kilogramo. Para ello existe  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(1, 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.

Cambiando la unidad de medida de un producto activo

Cambiar la unidad de medida de un producto activo (del cual se cuenta con unidades en stock) es problemático. Odoo no permite hacerlo, cuando uno lo intenta se tiene el siguiente mensaje de error:


En el cual Odoo nos informa que no se puede cambiar la medida de producto debido a que tenemos stock, por ende debemos archivarlo y crear uno nuevo.

La verdad no es una buena noticia. Creo que aca hay la oportunidad para hacer un módulo, el cual podría ser pago (resuelve un problema complejo y convengamos que los usuarios que lo van a usar, pueden pagarlo). Este módulo lo que haría sería descartar el stock del producto al que quiere cambiarse el stock. Luego cambiaría la unidad de medida y por último ajustaría el stock. Todo en forma automática. 

Es solo una idea.

Gustavo Orrillo 29 de junio de 2023
Compartir
Categorías
Archivar
Identificarse dejar un comentario