Herencia de modelos y vistas en Odoo
Se muestra cómo debe realizarse herencia hacia un modelo base de Odoo agregar un campo y mostrarlo en vista formulario buscando el campo con la etiqueta field o con xpath.
Carlos Blanco
7/6/20243 min read
Para ese ejercicio agregaremos a ventas un campo llamado “Fecha promesa de entrega” (tipo date) y a las líneas de la venta agregaremos el campo “Costo del producto” (tipo monetary) que será el costo del producto seleccionado.
Cuando se va a crear un módulo que agregara nueva funcionalidad o nuevos atributos a modelos base, debemos indicar en nuestro archivo manifest.py en el atributo “depends” los módulos que necesitaremos para que el nuestro funcione o los módulos donde agregaremos la funcionalidad o atributos extra.
Para agregar nuevo atributo a modelos ya existentes, es necesario conocer el nombre del modelo, para obtenerlo tenemos 2 opciones
1.- Código base:
2.- Dentro de odoo, utilizando las herramientas de modo desarrollador seleccionamos algún campo dentro del modelo y nos mostrará un popup donde se verá el modelo.
Para agregar un nuevo atributo, se declara la clase heredando el nombre del modelo y utilizando la palabra “inherit”.
Para agregar el campo en la vista formulario de la venta, debemos heredar la vista de sale.order.
Se crea una vista con los atributos básicos, pero además se agrega el atributo “inherit” y como parámetro el nombre de la vista a heredar, compuesto por el nombre del módulo que creo la vista y el xml_id de la vista.
Para indicar donde queremos mostrar nuestro nuevo atributo en la vista, debemos saber el nombre de un atributo, en este ejercicio usamos “has_active_pricelit” y agregar el atributo position, es posible usar:
- position="before": Inserta el nuevo campo antes del campo especificado.
- position="after": Inserta el nuevo campo después del campo especificado.
- position="replace": Reemplaza el campo especificado con el nuevo contenido.
- position="inside": Inserta el nuevo contenido dentro del campo especificado, si es un contenedor.
Así es como se muestra el campo en la vista formulario:
Para agregar el costo en la línea de venta, usaremos la herencia en la vista por ruta.
Para esto agregamos el atributo a la línea de la venta.
Para esta herencia debemos ver la ruta por etiquetas a las que debemos ingresar, para indicar donde encontrar el campo que necesitamos y poner nuestro nuevo atributo.
Si lo queremos agregar después del precio unitario, debemos llegar hasta el campo price_unit y si buscamos la vista de las líneas, esta se encuentra embebida dentro de la vista formulario de ventas
Se debe seguir la ruta del campo “order_line” hasta la vista tree creada dentro del formulario de la venta
Utilizando la etiqueta “xpath” buscamos el campo “price_unit” para agregar el costo delante.
Así es como es muestra el campo de Costo de producto en la vista.
Si tiene dudas, no dude en ponerse en contacto con nosotros a través del correo: info@exdoo.mx.