Agregando campos para consultar stocks

Gustavo Orrillo
- 17/11/2022 - 1 min. de lectura

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 suficiente. Por ejemplo, podemos necesitar atributos presentes en el modelo product.product o product.template. En este ejemplo, vamos a agregar la categoría del producto (un esfuerzo vanal porque ya se encuentra presente, pero bueno... la idea es explicar como se hace).

Para ello, creamos un nuevo módulo llamado a2_stock_quant_category. En el mismo agregamos un campo computado al modelo stock.quant. Dicho campo es del tipo Many2one y apunta al modelo de categorías (product.category).

category_id = fields.Many2one('product.category','Category',store=True,compute=_compute_category_id)

Este campo es del tipo computado, y almacenado (asi puede ser filtrado y sumarizado en vistas y consultas). Para ello definimos el método _compute_category_id.

@api.depends('product_id')
def _compute_category_id(self):
    for rec in self:
        if rec.product_id and rec.product_id.categ_id:
            rec.category_id = rec.product_id.categ_id.id
        else:
            rec.category_id = None

En este método cada vez que el campo product_id en stock.quant cambia, actualiza el campo category_id con el valor de la categoría del producto.

Por último, vamos a agregar a la consulta de inventarios, el campo category_id. Dicho campo tendrá el atributo "optional" seteado a "hide" así es visible siempre y cuando lo desee el usuario.

<record id="a2_stock_quant_category" model="ir.ui.view">
    <field name="name">a2.stock.quant.category</field>
    <field name="model">stock.quant</field>
    <field name="inherit_id" ref="stock.view_stock_quant_tree_inventory_editable"></field>
    <field name="arch" type="xml">
        <field name="user_id" position="after">
            <field name="category_id" optional="hide" />
        </field>
    </field>
</record>

A continuación, vemos el resultado


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.