diff options
| author | Goffin Simon <sig@odoo.com> | 2021-03-24 11:38:27 +0000 |
|---|---|---|
| committer | Goffin Simon <sig@odoo.com> | 2021-03-31 14:21:24 +0000 |
| commit | 43c4db07166bf97f0954bb553ea67e1ed5d50d3b (patch) | |
| tree | 8ead8938afdc7ad70ce07d952defacad97e08073 | |
| parent | a6077a8cf8cd03b93dcd865c9fe2939bb3b7132b (diff) | |
[FIX] hr_fleet: Changing mobility card
Steps to reproduce the bug:
- Let's consider an employee E and two partners P1, P2
- P1 is the private address of E and P2 is the partner linked to the user of E
- Let's consider two vehicles V1, V2
- The driver of V1 is P1 and the driver of V2 is P2
- Change the mobility card of E
Bug:
The mobility card of V1 was not updated but the mobility card of V2 was updated.
opw:2431316
closes odoo/odoo#68300
Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
| -rw-r--r-- | addons/hr_fleet/models/fleet_vehicle.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/addons/hr_fleet/models/fleet_vehicle.py b/addons/hr_fleet/models/fleet_vehicle.py index 6c50d32bf7f..78228b13eb8 100644 --- a/addons/hr_fleet/models/fleet_vehicle.py +++ b/addons/hr_fleet/models/fleet_vehicle.py @@ -9,7 +9,22 @@ class FleetVehicle(models.Model): mobility_card = fields.Char(compute='_compute_mobility_card', store=True) - @api.depends('driver_id', 'driver_id.user_ids.employee_id.mobility_card') + @api.depends('driver_id') def _compute_mobility_card(self): for vehicle in self: - vehicle.mobility_card = vehicle.driver_id.user_ids[:1].employee_id.mobility_card + employee = self.env['hr.employee'] + if vehicle.driver_id: + employee = employee.search([('address_home_id', '=', vehicle.driver_id.id)], limit=1) + if not employee: + employee = employee.search([('user_id.partner_id', '=', vehicle.driver_id.id)], limit=1) + vehicle.mobility_card = employee.mobility_card + +class HrEmployee(models.Model): + _inherit = "hr.employee" + + def write(self, vals): + res = super().write(vals) + if 'mobility_card' in vals: + vehicles = self.env['fleet.vehicle'].search([('driver_id', 'in', (self.user_id.partner_id | self.sudo().address_home_id).ids)]) + vehicles._compute_mobility_card() + return res |
