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:

  1. 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.

  2. 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.

  3. Kanban view
    Muestra los registros como tarjetas que se pueden agrupar y arrastrar (muy útil para procesos tipo “tablero” en ventas, proyectos, etc.).

  4. Calendar view
    Permite mostrar registros asociados a fechas, por ejemplo, citas o eventos de calendario. Ideal para organizar tareas o reuniones.

  5. 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.

  6. 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>
  1. <record id="view_library_book_form" model="ir.ui.view">
    Crea un nuevo registro en el modelo ir.ui.view, que es donde se almacenan todas las vistas de Odoo.
  2. <field name="name">library.book.form</field>
    Nombre interno de la vista.
  3. <field name="model">library.book</field>
    Indica a qué modelo pertenece esta vista.
  4. <field name="arch" type="xml"> … </field>
    Contiene la descripción de la vista en XML.
  5. <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.

  1. 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_model indica 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).
  2. 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ón action_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>
  1. inherit_id apunta a la vista que queremos modificar (base.view_partner_form).
  2. xpath localiza el lugar exacto donde insertar o modificar elementos.
  3. expr="//field[@name='name']" busca el campo name.
  4. position="after" indica que insertaremos el nuevo campo nickname justo después de name.

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

  1. Vistas en Odoo: Form, Tree, Kanban, Calendar, Graph, Pivot, etc., cada una con su propósito para mostrar la información de distintas formas.
  2. Definición en XML: Usamos el modelo ir.ui.view y etiquetas como <form>, <tree>, <kanban>, etc., para organizar los campos.
  3. 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.
  4. 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...