Skip to content

Commit

Permalink
[IMP] fleet: add vehicle model categories
Browse files Browse the repository at this point in the history
Adds categories to vehicle models

Task ID: 2487706
  • Loading branch information
William Braeckman authored and tivisse committed Jun 4, 2021
1 parent afda1c3 commit 9b57686
Show file tree
Hide file tree
Showing 5 changed files with 123 additions and 4 deletions.
10 changes: 9 additions & 1 deletion addons/fleet/models/fleet_vehicle.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,9 @@ def _get_default_state(self):
('kilometers', 'km'),
('miles', 'mi')
], 'Odometer Unit', default='kilometers', help='Unit of the odometer ', required=True)
transmission = fields.Selection([('manual', 'Manual'), ('automatic', 'Automatic')], 'Transmission', help='Transmission Used by the vehicle')
transmission = fields.Selection(
[('manual', 'Manual'), ('automatic', 'Automatic')], 'Transmission', help='Transmission Used by the vehicle',
compute='_compute_transmission', store=True, readonly=False)
fuel_type = fields.Selection([
('gasoline', 'Gasoline'),
('diesel', 'Diesel'),
Expand Down Expand Up @@ -165,6 +167,12 @@ def _compute_contract_reminder(self):
record.contract_renewal_total = total - 1 # we remove 1 from the real total for display purposes
record.contract_renewal_name = name

@api.depends('model_id')
def _compute_transmission(self):
for vehicle in self:
if vehicle.model_id:
vehicle.transmission = vehicle.model_id.transmission

def _get_analytic_name(self):
# This function is used in fleet_account and is overrided in l10n_be_hr_payroll_fleet
return self.license_plate or _('No plate')
Expand Down
36 changes: 35 additions & 1 deletion addons/fleet/models/fleet_vehicle_model.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

from odoo import api, fields, models, tools
from odoo import _, api, fields, models


class FleetVehicleModel(models.Model):
Expand All @@ -11,10 +11,13 @@ class FleetVehicleModel(models.Model):

name = fields.Char('Model name', required=True)
brand_id = fields.Many2one('fleet.vehicle.model.brand', 'Manufacturer', required=True, help='Manufacturer of the vehicle')
category_id = fields.Many2one('fleet.vehicle.model.category', 'Category')
vendors = fields.Many2many('res.partner', 'fleet_vehicle_model_vendors', 'model_id', 'partner_id', string='Vendors')
image_128 = fields.Image(related='brand_id.image_128', readonly=True)
active = fields.Boolean(default=True)
vehicle_type = fields.Selection([('car', 'Car'), ('bike', 'Bike')], default='car', required=True)
transmission = fields.Selection([('manual', 'Manual'), ('automatic', 'Automatic')], 'Transmission', help='Transmission Used by the vehicle')
vehicle_count = fields.Integer(compute='_compute_vehicle_count')

@api.depends('name', 'brand_id')
def name_get(self):
Expand All @@ -26,6 +29,25 @@ def name_get(self):
res.append((record.id, name))
return res

def _compute_vehicle_count(self):
group = self.env['fleet.vehicle'].read_group(
[('model_id', 'in', self.ids)], ['id', 'model_id'], groupby='model_id', lazy=False,
)
count_by_model = {entry['model_id'][0]: entry['__count'] for entry in group}
for model in self:
model.vehicle_count = count_by_model.get(model.id, 0)

def action_model_vehicle(self):
self.ensure_one()
view = {
'type': 'ir.actions.act_window',
'view_mode': 'kanban,tree,form',
'res_model': 'fleet.vehicle',
'name': _('Vehicles'),
'context': {'search_default_model_id': self.id, 'default_model_id': self.id}
}

return view

class FleetVehicleModelBrand(models.Model):
_name = 'fleet.vehicle.model.brand'
Expand Down Expand Up @@ -54,3 +76,15 @@ def action_brand_model(self):
}

return view

class FleetVehicleModelCategory(models.Model):
_name = 'fleet.vehicle.model.category'
_description = 'Category of the model'
_order = 'sequence asc, id asc'

_sql_constraints = [
('name_uniq', 'UNIQUE (name)', 'Category name must be unique')
]

name = fields.Char(required=True)
sequence = fields.Integer()
4 changes: 3 additions & 1 deletion addons/fleet/security/ir.model.access.csv
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ fleet_vehicle_model_access_right_user,fleet_vehicle_model_access_right,model_fle
fleet_vehicle_tag_access_right_user,fleet_vehicle_tag_access_right,model_fleet_vehicle_tag,fleet_group_user,1,0,0,0
fleet_vehicle_state_access_right_user,fleet_vehicle_state_access_right,model_fleet_vehicle_state,fleet_group_user,1,0,0,0
fleet_vehicle_model_brand_access_right_user,fleet_vehicle_model_brand_access_right,model_fleet_vehicle_model_brand,fleet_group_user,1,0,0,0
fleet_vehicle_model_brand_category_right_user,fleet_vehicle_model_category_access_right,model_fleet_vehicle_model_category,fleet_group_user,1,0,0,0
fleet_vehicle_access_right_user,fleet_vehicle_access_right,model_fleet_vehicle,fleet_group_user,1,1,0,0
fleet_vehicle_log_services_access_right_user,fleet_vehicle_log_services_access_right,model_fleet_vehicle_log_services,fleet_group_user,1,0,0,0
fleet_vehicle_log_contract_access_right_user,fleet_vehicle_log_contract_access_right,model_fleet_vehicle_log_contract,fleet_group_user,1,0,0,0
Expand All @@ -12,10 +13,11 @@ fleet_vehicle_tag_access_right,fleet_vehicle_tag_access_right,model_fleet_vehicl
fleet_vehicle_state_access_right,fleet_vehicle_state_access_right,model_fleet_vehicle_state,fleet_group_manager,1,1,1,1
fleet_vehicle_odometer_access_right,fleet_vehicle_odometer_access_right,model_fleet_vehicle_odometer,fleet_group_user,1,1,1,1
fleet_vehicle_model_brand_access_right,fleet_vehicle_model_brand_access_right,model_fleet_vehicle_model_brand,fleet_group_manager,1,1,1,1
fleet_vehicle_model_category_access_right,fleet_vehicle_model_brand_category_right,model_fleet_vehicle_model_category,fleet_group_manager,1,1,1,1
fleet_vehicle_access_right,fleet_vehicle_access_right,model_fleet_vehicle,fleet_group_manager,1,1,1,1
fleet_vehicle_log_services_access_right,fleet_vehicle_log_services_access_right,model_fleet_vehicle_log_services,fleet_group_manager,1,1,1,1
fleet_vehicle_log_contract_access_right,fleet_vehicle_log_contract_access_right,model_fleet_vehicle_log_contract,fleet_group_manager,1,1,1,1
fleet_service_type_access_right,fleet_service_type_access_right,model_fleet_service_type,fleet_group_manager,1,1,1,1
access_mail_activity_type_fleet_manager,mail.activity.type.fleet.manager,mail.model_mail_activity_type,fleet.fleet_group_manager,1,1,1,1
access_fleet_vehicle_assignation_log_fleet_group_user,fleet_vehicle_assignation_log fleet_group_user,fleet.model_fleet_vehicle_assignation_log,fleet.fleet_group_user,1,1,1,1
access_fleet_report_manager,fleet_vehicle_cost_report_access_right,model_fleet_vehicle_cost_report,fleet_group_manager,1,1,1,1
access_fleet_report_manager,fleet_vehicle_cost_report_access_right,model_fleet_vehicle_cost_report,fleet_group_manager,1,1,1,1
76 changes: 75 additions & 1 deletion addons/fleet/views/fleet_vehicle_model_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
<form string="Model">
<sheet>
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_button_box" name="button_box">
<button name="action_model_vehicle" type="object" icon="fa-car" class="oe_stat_button"
attrs="{'invisible': [('vehicle_count', '=', 0)]}">
<field name="vehicle_count" widget="statinfo" string="Vehicles"/>
</button>
</div>
<field name="image_128" widget='image' class="oe_avatar"/>
<div class="oe_title">
<label for="name"/>
Expand All @@ -22,9 +28,15 @@
<group>
<field name="active" invisible="1"/>
<field name="vehicle_type"/>
<field name="category_id" options="{'no_create_edit': True}"/>
</group>
</group>
<notebook>
<page string="Information" name="information" attrs="{'invisible': [('vehicle_type', '!=', 'car')]}">
<group string="Vehicle Information">
<field name="transmission"/>
</group>
</page>
<page string="Vendors" name="vendors">
<field name="vendors">
<kanban quick_create="false" create="true">
Expand Down Expand Up @@ -56,7 +68,8 @@
<tree string="Models">
<field name="brand_id" />
<field name="name" />
<field name="vehicle_type"/>
<field name="category_id" optional="show"/>
<field name="vehicle_type" optional="show"/>
</tree>
</field>
</record>
Expand Down Expand Up @@ -124,6 +137,12 @@
<field name="arch" type="xml">
<form string="Model Make">
<sheet>
<div class="oe_button_box" name="button_box">
<button name="action_brand_model" type="object" icon="fa-car" class="oe_stat_button"
attrs="{'invisible': [('model_count', '=', 0)]}">
<field name="model_count" widget="statinfo" string="Models"/>
</button>
</div>
<group>
<div>
<field name="image_128" widget="image" class="oe_avatar"/>
Expand Down Expand Up @@ -176,6 +195,18 @@
</field>
</record>

<record id="fleet_vehicle_model_brand_view_search" model="ir.ui.view">
<field name="name">fleet.vehicle.model.brand.view.search</field>
<field name="model">fleet.vehicle.model.brand</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<filter string="With Models" name="with_models"
domain="[('model_count', '>', 0)]"/>
</search>
</field>
</record>

<record id='fleet_vehicle_model_brand_action' model='ir.actions.act_window'>
<field name="name">Manufacturers</field>
<field name="res_model">fleet.vehicle.model.brand</field>
Expand All @@ -187,6 +218,49 @@
</field>
</record>

<!-- Model Category -->
<record id='fleet_vehicle_model_category_action' model='ir.actions.act_window'>
<field name="name">Model Category</field>
<field name="res_model">fleet.vehicle.model.category</field>
<field name="view_mode">tree</field>
<field name="help" type="xml">
<p class="o_view_nocontent_smiling_face">
Create a new category
</p>
</field>
</record>

<record id="fleet_vehicle_model_category_view_tree" model="ir.ui.view">
<field name="name">fleet.vehicle.model.category.view.tree</field>
<field name="model">fleet.vehicle.model.category</field>
<field name="arch" type="xml">
<tree string="Model Category" editable="bottom">
<field name="sequence" widget="handle"/>
<field name="name"/>
</tree>
</field>
</record>

<record id="fleet_vehicle_model_category_view_form" model="ir.ui.view">
<field name="name">fleet.vehicle.model.category.view.form</field>
<field name="model">fleet.vehicle.model.category</field>
<field name="arch" type="xml">
<form string="Model Category">
<sheet>
<group>
<group>
<field name="name"/>
</group>
<group>
<field name="sequence" groups="base.group_no_one"/>
</group>
</group>
</sheet>
</form>
</field>
</record>

<menuitem action="fleet_vehicle_model_brand_action" parent="fleet_configuration" id="fleet_vehicle_model_brand_menu" sequence="2"/>
<menuitem action="fleet_vehicle_model_action" parent="fleet_configuration" id="fleet_vehicle_model_menu" sequence="2"/>
<menuitem action="fleet_vehicle_model_category_action" parent="fleet_configuration" id="fleet_vehicle_model_category_menu" sequence="2"/>
</odoo>
1 change: 1 addition & 0 deletions addons/fleet/views/fleet_vehicle_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@
<field string="Vehicle" name="name" filter_domain="['|', ('name', 'ilike', self), ('license_plate', 'ilike', self)]"/>
<field string="Drivers" name="log_drivers" filter_domain="[('log_drivers.driver_id.name', 'ilike', self)]"/>
<field string="Current Driver" name="driver_id"/>
<field name="model_id"/>
<field name="future_driver_id"/>
<field name="tag_ids"/>
<field name="location"/>
Expand Down

0 comments on commit 9b57686

Please sign in to comment.