From 55a48e341580a6a400c36b6ba0d7b12ff9997f12 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Wed, 9 Jan 2019 10:46:11 +0000 Subject: [PATCH] [FIX] hr_fleet: Make 'Claim Report' work for employee without users If an employee is not linked to an user, the claim report feature won't work. With this commit, the report can be printed base on the user's partner or the private employee address. closes odoo/odoo#30065 --- addons/hr_fleet/controllers/main.py | 6 +++--- addons/hr_fleet/models/employee.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/hr_fleet/controllers/main.py b/addons/hr_fleet/controllers/main.py index 0a27163c3cd..953358035b6 100644 --- a/addons/hr_fleet/controllers/main.py +++ b/addons/hr_fleet/controllers/main.py @@ -19,11 +19,11 @@ class HrFleet(Controller): return request.not_found() employee = request.env['hr.employee'].search([('id', '=', employee_id)], limit=1) - partner_id = employee.user_id.partner_id.id - if not employee or not partner_id: + partner_ids = (employee.user_id.partner_id | employee.address_home_id).ids + if not employee or not partner_ids: return request.not_found() - car_assignation_logs = request.env['fleet.vehicle.assignation.log'].search([('driver_id', '=', partner_id)]) + car_assignation_logs = request.env['fleet.vehicle.assignation.log'].search([('driver_id', 'in', partner_ids)]) doc_list = request.env['ir.attachment'].search([ ('res_model', '=', 'fleet.vehicle.assignation.log'), ('res_id', 'in', car_assignation_logs.ids)], order='create_date') diff --git a/addons/hr_fleet/models/employee.py b/addons/hr_fleet/models/employee.py index 57c7441e732..998de7f8661 100644 --- a/addons/hr_fleet/models/employee.py +++ b/addons/hr_fleet/models/employee.py @@ -12,7 +12,7 @@ class Employee(models.Model): def action_open_employee_cars(self): self.ensure_one() cars = self.env['fleet.vehicle.assignation.log'].search([ - ('driver_id', '=', self.user_id.partner_id.id)]).mapped('vehicle_id') + ('driver_id', 'in', (self.user_id.partner_id | self.address_home_id).ids)]).mapped('vehicle_id') return { "type": "ir.actions.act_window", @@ -23,12 +23,12 @@ class Employee(models.Model): } def _compute_employee_cars_count(self): - driver_ids = self.mapped('user_id.partner_id').ids + driver_ids = (self.mapped('user_id.partner_id') | self.mapped('address_home_id')).ids fleet_data = self.env['fleet.vehicle.assignation.log'].read_group( domain=[('driver_id', 'in', driver_ids)], fields=['driver_id'], groupby=['driver_id']) mapped_data = dict([(m['driver_id'][0], m['driver_id_count']) for m in fleet_data]) for employee in self: - employee.employee_cars_count = mapped_data.get(employee.user_id.partner_id.id, 0) + employee.employee_cars_count = mapped_data.get(employee.user_id.partner_id.id, 0) + mapped_data.get(employee.address_home_id.id, 0) def action_get_claim_report(self): self.ensure_one()