Cuando un número de serie se encuentra reservado?

Gustavo Orrillo
- 06/20/2022 - 1 min. de lectura

Un pequeño issue que encontré es no saber cuando un número de serie se encuentra reservado por algún movimiento de stock (algo primordial si uno quiere listar los quants que se pueden transferir de una ubicación a otra). Es por eso que hice el módulo stock_production_lot_reserved. Al instalar el módulo, podremos ver que a la vista lista del modelo stock.production.lot dos campos: is_reserved y reservation_move:



La idea es utilizar este módulo con otros módulos para mover inventario de una ubicación a otra. En futuras modificaciones vamos a agregarle al módulo la información de las transferencias a la que pertenece el movimiento de producto de la reserva, y el soporte de lotes (en este momento el módulo esta pensado para números de serie).

Notas técnicas

Es un módulo sencillo que solo agrega dos campos computados. Ahora con el fin de acelerar el cálculo (y debido a que no quiero extender los movimientos de producto para almacenar la información de la reserva en el número de serie), se busca el número de lote en la tabla de los movimientos de producto (stock_move_line)

def _compute_reservation(self):
    for rec in self:
        query = """
            SELECT id,move_id
                FROM stock_move_line
                WHERE lot_id = %s
                and state not in ('cancel','done')
                LIMIT 1
            """
            self.env.cr.execute(query, (rec.id,))
            result = self.env.cr.dictfetchall()
            if result != [] and result[0].get('move_id'):
                rec.is_reserved = True
                rec.reservation_move = result[0].get('move_id')
            else:
                rec.is_reserved = False
                rec.reservation_move = None

Aca primero definimos el query para que busque el número de serie en la tabla stock_move_line para aquellos movimientos de producto que no esten ni cancelados ni finalizados. Si el query devuelve algún resultado, significa que el número de serie esta reservado. Es por eso que actualizamos el campo is_reserved con el valor verdadero, y actualizamos el campo del movimiento de stock.

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.

Cambiando el tipo de cambio en los pagos en Odoo

Bien... esto funciona en Odoo 15, no ya en Odoo 14. Ya verán porque. En Odoo 15 se permite el ingreso de los pagos; los cuales generan en forma auto...

Seguir leyendo
Procesando ingresos de mercadería

Por lo general, los ingresos de mercadería son creados automáticamente desde una orden de compra. Tambien se los puede crear manualmente. Solo tiene...

Seguir leyendo
Agregando campos para consultar stocks

Los stocks en Odoo estan representados en el modelo stock.quant. El cual tiene muchos campos por los cuales consultar, pero muchas veces eso no es s...

Seguir leyendo