PROGRAMACIÓN ODOO: HERENCIA de vistas 🟢 XML | Modificar vistas existentes | Xpath e inherit_id Odoo
Introducción a la Herencia en Odoo
Presentación del Tema
- Josué Bo introduce el tema de herencias en Odoo, enfocándose en las vistas XML.
- Se menciona que se revisarán puntos importantes antes de profundizar en la herencia.
Principios Básicos de Herencia
- Es fundamental no modificar el código estándar; existen mecanismos para realizar herencias sin sobrescribir vistas o modelos existentes.
- Las herencias permiten cambiar, agregar o eliminar funcionalidades a nivel de modelo, vista o lógica de negocio.
Configuración del Archivo Manifest
Dependencias en el Manifest
- Se debe indicar en el archivo manifest las aplicaciones o módulos que contienen los modelos heredados.
- Ejemplo: una aplicación puede depender de otras dos aplicaciones, como "account budget" y "account accountant".
Herencia de Vistas XML
Proceso para Heredar Vistas
- Para heredar una vista, se utiliza el tag
<inherit>donde se indica el ID de la vista que se desea heredar.
- Activar modo debug es esencial para obtener el ID externo necesario para la referencia.
Pasos Detallados
- Una vez activado el modo debug, se selecciona la opción "vista de edición" para obtener información sobre la vista a heredar.
- Es importante identificar correctamente si se quiere heredar una vista tipo formulario o lista.
Identificación y Modificación de Campos
Selección del Campo Correcto
- Al abrir la vista deseada, es crucial tener activo el modo debug para acceder a las opciones correctas.
- La identificación precisa del campo permite decidir dónde colocar nuevos elementos dentro del formulario heredado.
Uso de Tags Expansibles
- Los elementos
<xpath>permiten seleccionar y alterar contenido dentro del formulario padre.
¿Cómo ubicar elementos en vistas heredadas?
Importancia de la declaración de campos
- Es crucial que el campo esté declarado en la vista que se desea heredar; de lo contrario, se generará un error al intentar localizarlo.
- Si un campo no está declarado, la expresión no podrá encontrar el elemento y resultará en un error.
Localización de campos específicos
- Para ubicar un campo específico, se utiliza la sintaxis
//field name='descripción', donde 'descripción' es el nombre del campo original.
- En el caso del campo
invoice target, se debe usar//field[name='invoice target']para su localización.
Ubicación de elementos tipo página
- Para localizar un elemento expandido como una página, se usa
//page[name='nombre_página'].
- Al agregar una nueva página, es necesario conocer cómo está declarada; por ejemplo, si se llama 'miembros', se utilizaría esa referencia.
Agregar botones y otros elementos
- La sintaxis para ubicar un botón es diferente:
//button[name='confirmar'], donde 'confirmar' es el nombre del botón.
- Se debe tener cuidado con los tipos de elementos (field vs page vs button), ya que cada uno tiene su propia forma de ser referenciado.
Edición y herencia de vistas
- En la vista de edición XML, se puede ver claramente cómo están estructurados los elementos y facilitar su ubicación.
- Al querer agregar nuevos elementos a una vista existente, hay que identificar correctamente los nombres y estructuras existentes.
Operaciones sobre elementos encontrados
- Existen diferentes operaciones para manipular los elementos encontrados:
- insight: agrega un nuevo elemento dentro del encontrado.
- replaced: reemplaza el elemento encontrado con otro especificado.
- before/after: coloca un nuevo elemento antes o después del encontrado respectivamente.
- attributes: permite modificar atributos como visibilidad.
¿Cómo heredar vistas en un modelo XML?
Declaración de un modelo XML
- Se presenta un código similar a la declaración de un XML desde cero para un modelo, donde se establece un identificador (ID) para una vista que puede ser heredada por otros desarrolladores.
- Es necesario asignar el nombre del modelo de la pista que se desea heredar y especificar el ID en el campo correspondiente. Esto permite ubicar correctamente la pista deseada.
- Se menciona la posibilidad de agregar nuevos campos en la vista, posicionándolos después del campo "descripción". Esto se logra utilizando expresiones como
expandyexp.