Curso odoo (Módulos)

Tabla de vehiculos viajes paradas

Se pide que incorpores la información de las revisiones por la que pasa un vehiculo. Un vehiculo puede tener multiples revisiones.

Crea:

  • El modelo correspondiente
  • Las vistas necesarias en los vehiculos puedan gestionar sus revisiones.
  • Las vistas para poder visualizar las revisiones.
    • Vista de lista
    • Vista de formulario
  • Un menú para acceder a las revisiones desde el menú principal.

## Solución

Crea el fichero models/revisionModel.py

1from odoo import fields, models
2
3class Revision(models.Model):
4    _name = "viajes.revision"
5    _description = "Revisiones de los Vehiculos"
6
7    titulo = fields.Char(string="Titulo", required=True)
8    descripcion = fields.Text(string="Descripción")
9    fecha = fields.Date(string="Fecha", default=fields.Date.today)
10    superada = fields.Boolean(default=False)
11    
12    vehiculo_id = fields.Many2one('viajes.vehiculo',
13        ondelete='cascade', string="Vehiculo", index=True)

Modifica el fichero models/vehiculoModel.py

1......
2
3    revision_ids = fields.One2many('viajes.revision', 'vehiculo_id', string="Revisiones del coche")

Modifica el fichero models/__init__.py

1# -*- coding: utf-8 -*-
2
3from . import VehiculoModel
4from . import ViajeModel
5from . import PartnerModel
6from . import ParadaModel
7from . import RevisionModel

Modifica el fichero security/ir.model.access.csv

1id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2access_viajes_vehiculo,viajes.vehiculo,model_viajes_vehiculo,,1,1,1,1
3access_viajes_viaje,viajes.viaje,model_viajes_viaje,,1,1,1,1
4access_viajes_parada,viajes.parada,model_viajes_parada,,1,1,1,1
5access_viajes_revision,viajes.revision,model_viajes_revision,,1,1,1,1

Crea el fichero views/revision.xml

1<odoo>
2    <data>
3        <record model="ir.ui.view" id="revision_form_view">
4            <field name="name">revision.form</field>
5            <field name="model">viajes.revision</field>
6            <field name="arch" type="xml">
7                <form string="Formulario de Revision">
8                    <sheet>
9                        <group>
10                            <field name="titulo" />
11                            <field name="fecha" />
12                            <field name="superada" />
13                            <field name="vehiculo_id" />
14                        </group>
15                        <notebook>
16                            <page string="Descripcion">
17                                <field name="descripcion" />
18                            </page>
19                        </notebook>
20                    </sheet>
21                </form>
22            </field>
23        </record>
24        <record model="ir.ui.view" id="revision_list_view">
25            <field name="name">revision.list</field>
26            <field name="model">viajes.revision</field>
27            <field name="arch" type="xml">
28                <list string="Revision List">
29                    <field name="titulo" />
30                    <field name="fecha" />
31                    <field name="superada" />
32                </list>
33            </field>
34        </record>
35
36        <record model="ir.actions.act_window" id="revision_list_action">
37            <field name="name">Revisiones</field>
38            <field name="res_model">viajes.revision</field>
39            <field name="view_mode">list,form</field>
40            <field name="help" type="html">
41                <p class="oe_view_nocontent_smiling_face">Crear tu primera revisión</p>
42            </field>
43        </record>
44    </data>
45</odoo>

Modifica el fichero __manifest__.py

1# any module necessary for this one to work correctly
2    'depends': ['base'],
3
4    # always loaded
5    'data': [
6        'security/ir.model.access.csv',
7        'views/vehiculo.xml',
8        'views/viaje.xml',
9        'views/partner.xml',
10        'views/parada.xml',
11        'views/revision.xml',
12        'views/menus.xml'
13    ],

Crea el fichero views/menus.xml

1<odoo>
2    <data>
3        <menuitem id="main_viajes_menu" name="Viajes" />
4        <menuitem id="viajes_menu" name="Elementos" parent="main_viajes_menu" />
5        <menuitem id="vehiculo_menu" name="Vehiculos" parent="viajes_menu" action="vehiculo_list_action" />
6        <menuitem id="viaje_menu" name="Viajes" parent="viajes_menu" action="viaje_list_action" />
7        <menuitem id="configuration_menu" name="Configuration" parent="main_viajes_menu" />
8        <menuitem id="contact_menu" name="Viajeros" parent="configuration_menu" action="contact_list_action" />
9
10        
11        <menuitem id="parada_menu" name="Paradas" parent="viajes_menu" action="parada_list_action" />
12        <menuitem id="revision_menu" name="Revisiones" parent="viajes_menu" action="revision_list_action" />
13    </data>
14</odoo>

Modifica el fichero views/vehiculo.xml

1<record model="ir.ui.view" id="vehiculo_form_view">
2    <field name="name">vehiculo.form</field>
3    <field name="model">viajes.vehiculo</field>
4    <field name="arch" type="xml">
5        <form string="Formulario de Vehiculo">
6            <sheet>
7                <group>
8                    <field name="modelo" />
9                    <field name="marca" />
10                    <field name="propietario_id"/>
11                    <field name="matricula"/>
12                </group>
13                <notebook>
14                    <page string="Descripcion">
15                        <field name="descripcion"/>
16                    </page>
17                    <page string="Acerca de">
18                        Esto es un ejemplo
19                    </page>
20                        <page string="Viajes">
21                        <field name="viaje_ids">
22                            <list string="Viajes registrados">
23                                <field name="titulo"/>
24                                <field name="conductor_id"/>
25                            </list>
26                        </field>
27                    </page>
28                        <page string="Revisiones">
29                        <field name="revision_ids">
30                            <list string="Revisiones registradas">
31                                <field name="titulo"/>
32                                <field name="fecha"/>
33                                <field name="superada"/>
34                            </list>
35                        </field>
36                    </page>
37                </notebook>
38            </sheet>
39        </form>
40    </field>
41</record>