[IMP] fleet: add 3 fields specific to bike vehicle type
The three following fields have been added to fleet.vehicle: - frame_type (Selection) - frame_size (Float) - electric_assistance (Boolean) These fields are specific to bikes and are only displayed in form view when vehicle_type = bike Number of doors is now set to 0 instead of 5 when the vehicle is a bike. "plan_to_change_bike" boolean field has been added to the res.partner model and has also been added as related field in fleet.vehicle model. Task ID: 2238055 closes odoo/odoo#50064 Related: odoo/upgrade#1718 Related: odoo/enterprise#10152 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
committed by
Yannick Tivisse
parent
0ee9d0dadb
commit
d0af0ddcc7
@@ -58,7 +58,7 @@ class FleetVehicle(models.Model):
|
||||
location = fields.Char(help='Location of the vehicle (garage, ...)')
|
||||
seats = fields.Integer('Seats Number', help='Number of seats of the vehicle')
|
||||
model_year = fields.Char('Model Year', help='Year of the model')
|
||||
doors = fields.Integer('Doors Number', help='Number of doors of the vehicle', default=5)
|
||||
doors = fields.Integer('Doors Number', help='Number of doors of the vehicle', compute="_compute_doors", store=True, readonly=True)
|
||||
tag_ids = fields.Many2many('fleet.vehicle.tag', 'fleet_vehicle_vehicle_tag_rel', 'vehicle_tag_id', 'tag_id', 'Tags', copy=False)
|
||||
odometer = fields.Float(compute='_get_odometer', inverse='_set_odometer', string='Last Odometer',
|
||||
help='Odometer measure of the vehicle at the moment of this log')
|
||||
@@ -89,7 +89,16 @@ class FleetVehicle(models.Model):
|
||||
net_car_value = fields.Float(string="Purchase Value", help="Purchase value of the vehicle")
|
||||
residual_value = fields.Float()
|
||||
plan_to_change_car = fields.Boolean(related='driver_id.plan_to_change_car', store=True, readonly=False)
|
||||
plan_to_change_bike = fields.Boolean(related='driver_id.plan_to_change_bike', store=True, readonly=False)
|
||||
vehicle_type = fields.Selection(related='model_id.vehicle_type')
|
||||
frame_type = fields.Selection([('diamant', 'Diamant'), ('trapez', 'Trapez'), ('wave', 'Wave')], help="Frame type of the bike")
|
||||
electric_assistance = fields.Boolean()
|
||||
frame_size = fields.Float()
|
||||
|
||||
@api.depends('vehicle_type')
|
||||
def _compute_doors(self):
|
||||
for record in self:
|
||||
record.doors = 5 if record.model_id.vehicle_type == 'car' else 0
|
||||
|
||||
@api.depends('model_id.brand_id.name', 'model_id.name', 'license_plate')
|
||||
def _compute_vehicle_name(self):
|
||||
@@ -208,7 +217,10 @@ class FleetVehicle(models.Model):
|
||||
states = res.mapped('state_id').ids
|
||||
if not state_waiting_list or state_waiting_list.id not in states:
|
||||
future_driver = self.env['res.partner'].browse(vals['future_driver_id'])
|
||||
future_driver.sudo().write({'plan_to_change_car': True})
|
||||
if self.vehicle_type == 'bike':
|
||||
future_driver.sudo().write({'plan_to_change_bike': True})
|
||||
if self.vehicle_type == 'car':
|
||||
future_driver.sudo().write({'plan_to_change_car': True})
|
||||
return res
|
||||
|
||||
def write(self, vals):
|
||||
@@ -221,7 +233,10 @@ class FleetVehicle(models.Model):
|
||||
states = self.mapped('state_id').ids if 'state_id' not in vals else [vals['state_id']]
|
||||
if not state_waiting_list or state_waiting_list.id not in states:
|
||||
future_driver = self.env['res.partner'].browse(vals['future_driver_id'])
|
||||
future_driver.sudo().write({'plan_to_change_car': True})
|
||||
if self.vehicle_type == 'bike':
|
||||
future_driver.sudo().write({'plan_to_change_bike': True})
|
||||
if self.vehicle_type == 'car':
|
||||
future_driver.sudo().write({'plan_to_change_car': True})
|
||||
|
||||
res = super(FleetVehicle, self).write(vals)
|
||||
if 'active' in vals and not vals['active']:
|
||||
@@ -252,7 +267,10 @@ class FleetVehicle(models.Model):
|
||||
vehicles._close_driver_history()
|
||||
|
||||
for vehicle in self:
|
||||
vehicle.future_driver_id.sudo().write({'plan_to_change_car': False})
|
||||
if vehicle.vehicle_type == 'bike':
|
||||
vehicle.future_driver_id.sudo().write({'plan_to_change_bike': False})
|
||||
if vehicle.vehicle_type == 'car':
|
||||
vehicle.future_driver_id.sudo().write({'plan_to_change_car': False})
|
||||
vehicle.driver_id = vehicle.future_driver_id
|
||||
vehicle.future_driver_id = False
|
||||
|
||||
|
||||
@@ -8,3 +8,4 @@ class ResPartner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
plan_to_change_car = fields.Boolean('Plan To Change Car', default=False)
|
||||
plan_to_change_bike = fields.Boolean('Plan To Change Bike', default=False)
|
||||
|
||||
@@ -72,7 +72,8 @@
|
||||
name="action_accept_driver_change"
|
||||
attrs="{'invisible': [('future_driver_id', '=', False)]}"/>
|
||||
</div>
|
||||
<field name="plan_to_change_car" groups="fleet.fleet_group_manager"/>
|
||||
<field name="plan_to_change_car" groups="fleet.fleet_group_manager" attrs="{'invisible': [('vehicle_type', '!=', 'car')]}"/>
|
||||
<field name="plan_to_change_bike" groups="fleet.fleet_group_manager" attrs="{'invisible': [('vehicle_type', '!=', 'bike')]}"/>
|
||||
<field name="next_assignation_date"/>
|
||||
<field name="location"/>
|
||||
</group>
|
||||
@@ -98,6 +99,12 @@
|
||||
<field name="doors" attrs="{'invisible': [('vehicle_type', '!=', 'car')]}"/>
|
||||
<field name="color"/>
|
||||
<field name="model_year"/>
|
||||
<field name="frame_type" attrs="{'invisible': [('vehicle_type', '!=', 'bike')]}"/>
|
||||
<label for="frame_size" attrs="{'invisible': [('vehicle_type', '!=', 'bike')]}"/>
|
||||
<div class="o_row" attrs="{'invisible': [('vehicle_type', '!=', 'bike')]}">
|
||||
<field name="frame_size" /><span>cm</span>
|
||||
</div>
|
||||
<field name="electric_assistance" attrs="{'invisible': [('vehicle_type', '!=', 'bike')]}"/>
|
||||
</group>
|
||||
<group string="Engine" attrs="{'invisible': [('vehicle_type', '!=', 'car')]}">
|
||||
<field name="transmission"/>
|
||||
@@ -168,8 +175,8 @@
|
||||
<field name="location"/>
|
||||
<field string="Status" name="state_id"/>
|
||||
<filter string="Available" name="available"
|
||||
domain="['&', ('future_driver_id', '=', False), '|', ('driver_id', '=', False), ('plan_to_change_car', '=', True)]"/>
|
||||
<filter name="planned" string="Planned for Change" domain="[('plan_to_change_car', '=', True)]"/>
|
||||
domain="['&', ('future_driver_id', '=', False), '|', ('driver_id', '=', False), '|', '&', ('plan_to_change_car', '=', True), ('vehicle_type', '=', 'car'), '&', ('plan_to_change_bike', '=', True), ('vehicle_type', '=', 'bike')]"/>
|
||||
<filter name="planned" string="Planned for Change" domain="['|', '&', ('vehicle_type', '=', 'bike'), ('plan_to_change_bike', '=', True), '&', ('vehicle_type', '=', 'car'), ('plan_to_change_car', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter string="Need Action" name="alert_true" domain="['|', ('contract_renewal_due_soon', '=', True), ('contract_renewal_overdue', '=', True)]"/>
|
||||
<separator/>
|
||||
|
||||
Reference in New Issue
Block a user