[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
This commit is contained in:
Yannick Tivisse
2019-01-09 10:48:39 +00:00
parent 671c45fbbf
commit 55a48e3415
2 changed files with 6 additions and 6 deletions
+3 -3
View File
@@ -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')
+3 -3
View File
@@ -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()