Facilitando la navegación de listas de materiales

24 de agosto de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Las listas de materiales en Odoo no son precisamente sencillas de navegar. Si uno tiene dos o tres niveles las listas de materiales se pueden navegar de forma sencilla. Pero muchas veces tenemos más de diez niveles, y es muy facil que los usuarios se pierdan navegando las listas de materiales.

Para facilitar esto, en OCA tenemos el módulo mrp_bom_hierarchy en el repositorio manufacture. Este módulo agrega en la vista de listas de materiales dos flechitas que permiten desde una lista de materiales determinada, acceder a su lista de materiales padre o a sus listas de materiales hijas


Esto ayuda en la navegación pero no permite navegar a los productos hijos, ya que solo permite llegar a los sub-assemblies. Para ello desarrollamos otro módulo mrp_bom_hierarchy_plus, el cual en la vista de listas de materiales agrega un botón extra que muestra los productos (siempre y cuando la lista de materiales no contenga otros sub-assemblies).


La gran limitación de este módulo tiene que ver con tres motivos. El primero es que tratamos de mezclar en la misma lista dos modelos diferentes: mrp.bom y product.product. Creo que la navegación de las listas de materiales va a mejorar cuando naveguemos los productos y a partir de ahí saltar a la lista de materiales en sí.

El segundo motivo es que perdemos información del contexto. Odoo trata a cada item de la lista de materiales en forma individual, sin mostrar "the big picture" (lo cual es correcto, no nos olvidemos que Odoo es un sistema de ejecución de manufactura). Cuando uno lee una lista de materiales, uno necesita conocer con cual elemento uno está trabajando en relación a la lista general donde uno está trabajando. Esta información de contexto de una u otra manera se puede brindar, es cuestión de trabajar en el tema.

 El tercer motivo es que creo que estamos utilizando la herramienta incorrecta para tratar este tema. Creo que podemos brindar una mejor herramienta de navegación haciendo desarrollo de website utilizando librerías como d3.js, en lugar de utilizar el back-end. El back-end esta diseñado para procesar transacciones, no para visualizar información.

Notas técnicas

El módulo desarrollado extiende el módulo mrp_bom_hierarchy y agrega el botón a la lista. El botón invoca un método que retorna una acción; la cual muestra una vista tipo lista del modelo product.product, y se le aplica como dominio los productos que componen la lista de materiales.

    def action_open_child_products_tree_view(self):
self.ensure_one()
product_ids = []
for bom_line in self.bom_line_ids:
product_ids.append(bom_line.product_id.id)
domain = [('id','in',product_ids)]
view_id_tree = self.env.ref('product.product_product_tree_view')
return {
'name': self.display_name,
'type': 'ir.actions.act_window',
'res_model': 'product.product',
'view_type': 'form',
'view_mode': 'tree,form',
'views': [(view_id_tree[0].id, 'tree'),(False,'form')],
'target': 'current',
'domain': domain,
}
Gustavo Orrillo 24 de agosto de 2023
Compartir
Categorías
Archivar
Identificarse dejar un comentario