Curso odoo (Módulos)
4.1. Tipos de vistas disponibles
Odoo ofrece diversos tipos de vistas para mostrar la información de distintas maneras. Entre las más comunes, destacamos:
-
Form view (vista formulario)
Muestra la información de un solo registro de manera detallada. Por ejemplo, si tienes un registro de “Libro”, podrás ver sus campos “Título”, “Autor”, “Fecha de Publicación”, etc. en una vista de formulario. -
Tree view (vista lista)
Muestra varios registros en forma de lista o tabla. Por ejemplo, un listado de libros con columnas para título, autor, disponibilidad, etc. -
Kanban view
Muestra los registros como tarjetas que se pueden agrupar y arrastrar (muy útil para procesos tipo “tablero” en ventas, proyectos, etc.). -
Calendar view
Permite mostrar registros asociados a fechas, por ejemplo, citas o eventos de calendario. Ideal para organizar tareas o reuniones. -
Graph view (y otras vistas estadísticas)
Muestra información en forma de gráficos de barras, líneas, pasteles, etc. Útil para reportar ventas, análisis de inventario, etc. -
Pivot view
Muestra datos en forma de tabla dinámica, permitiendo agrupar por varios criterios.
Nota: Algunas vistas avanzadas como Gantt o Diagram pueden requerir la versión Enterprise o módulos específicos.
4.2. Definición de vistas en XML
Para crear o modificar vistas, utilizamos archivos XML. Estos archivos suelen ubicarse en la carpeta views/ de tu módulo. Cada vista se define con etiquetas <record> que contienen la estructura interna de la vista (por ejemplo, <form>, <tree>).
Ejemplo de vista de formulario (Form view)
Supongamos que tenemos el modelo library.book y queremos crear una vista formulario:
1<!-- Archivo: library_book_views.xml --> 2<odoo> 3 <!-- Definición de la vista formulario para library.book --> 4 <record id="view_library_book_form" model="ir.ui.view"> 5 <field name="name">library.book.form</field> 6 <field name="model">library.book</field> 7 <field name="arch" type="xml"> 8 <form string="Library Book"> 9 <sheet> 10 <group> 11 <field name="name"/> 12 <field name="author"/> 13 <field name="publication_date"/> 14 <field name="is_available"/> 15 </group> 16 </sheet> 17 </form> 18 </field> 19 </record> 20</odoo>
<record id="view_library_book_form" model="ir.ui.view">
Crea un nuevo registro en el modeloir.ui.view, que es donde se almacenan todas las vistas de Odoo.<field name="name">library.book.form</field>
Nombre interno de la vista.<field name="model">library.book</field>
Indica a qué modelo pertenece esta vista.<field name="arch" type="xml"> … </field>
Contiene la descripción de la vista en XML.<form string="Library Book"> … </form>
Es la etiqueta principal para definir un formulario. Dentro, se organizan los campos y grupos.
Ejemplo de vista de lista (Tree view)
1<odoo> 2 <!-- Definición de la vista lista para library.book --> 3 <record id="view_library_book_list" model="ir.ui.view"> 4 <field name="name">library.book.list</field> 5 <field name="model">library.book</field> 6 <field name="arch" type="xml"> 7 <list string="Library Books"> 8 <field name="name"/> 9 <field name="author"/> 10 <field name="is_available"/> 11 </list> 12 </field> 13 </record> 14</odoo>
<tree>permite definir columnas para cada campo que se desee mostrar.
4.3. Acción y menús
Para que los usuarios puedan acceder a las vistas, debemos crear acciones y menús.
-
Acciones (ir.actions.act_window)
- Una acción indica a Odoo qué vista usar y sobre qué modelo.
- Cuando el usuario hace clic en un menú, se ejecuta la acción correspondiente.
1<record id="action_library_book" model="ir.actions.act_window"> 2 <field name="name">Books</field> 3 <field name="res_model">library.book</field> 4 <field name="view_mode">tree,form</field> 5 <field name="help" type="html"> 6 <![CDATA[ 7 <p>Manage your library books here.</p> 8 ]]> 9 </field> 10</record>res_modelindica el modelo sobre el que se aplica la acción.view_mode="tree,form"especifica que primero se mostrará una lista (tree), y al hacer clic en un registro, se mostrará el formulario (form).
-
Menús (ir.ui.menu)
- Define las secciones de la barra de navegación en Odoo.
1<!-- Menú principal --> 2<menuitem 3 id="menu_library_root" 4 name="Library" 5 sequence="10" 6 /> 7 8<!-- Submenú "Books" que llama a la acción anterior --> 9<menuitem 10 id="menu_library_books" 11 name="Books" 12 parent="menu_library_root" 13 action="action_library_book" 14 sequence="20" 15 />id="menu_library_root"crea un menú principal llamado “Library”.id="menu_library_books"crea un submenú “Books” dentro del menú principal, enlazado a la acciónaction_library_book.
4.4. Extender vistas existentes
Si quieres añadir campos o modificar la disposición de una vista ya existente (por ejemplo, la vista del modelo res.partner que trae Odoo por defecto), puedes usar el tag <xpath>:
1<odoo> 2 <record id="view_partner_form_inherit" model="ir.ui.view"> 3 <field name="name">res.partner.form.inherit</field> 4 <field name="model">res.partner</field> 5 <field name="inherit_id" ref="base.view_partner_form"/> 6 <field name="arch" type="xml"> 7 <!-- Insertamos un nuevo campo justo después del campo 'name' --> 8 <xpath expr="//field[@name='name']" position="after"> 9 <field name="nickname"/> 10 </xpath> 11 </field> 12 </record> 13</odoo>
inherit_idapunta a la vista que queremos modificar (base.view_partner_form).xpathlocaliza el lugar exacto donde insertar o modificar elementos.expr="//field[@name='name']"busca el camponame.position="after"indica que insertaremos el nuevo camponicknamejusto después dename.
Con
<xpath>también puedes remover, reemplazar o atribuir cambios a elementos existentes, sin duplicar el contenido completo de la vista original.
Conclusión de la Parte 4
- Vistas en Odoo: Form, Tree, Kanban, Calendar, Graph, Pivot, etc., cada una con su propósito para mostrar la información de distintas formas.
- Definición en XML: Usamos el modelo
ir.ui.viewy etiquetas como<form>,<tree>,<kanban>, etc., para organizar los campos. - Acciones y Menús: Las acciones (
ir.actions.act_window) conectan un modelo con sus vistas, mientras que los menús (ir.ui.menu) permiten a los usuarios acceder fácilmente a las pantallas. - Extender vistas existentes con
<xpath>: Permite introducir cambios sin sobrescribir la vista original.
Con estos conceptos, podrás diseñar la interfaz de usuario que tus clientes o tu equipo necesiten. En la siguiente parte, profundizaremos en seguridad y control de accesos, un tema fundamental para proteger tus datos y definir permisos de usuario. ¡Continuemos!
- Loading...