Agregando campos para consultar stocks

Gustavo Orrillo
- 11/17/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

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.