[IMP] hr*: Use correct default employee_id based on company

Followup of https://github.com/odoo/odoo/pull/50982/commits

Courtesy of https://github.com/sswapnesh

In a multi-company environment `self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)` could be wrong while `employee_id`represents correct employee based on company.

https://github.com/odoo/odoo/blob/fb17af76d791488c69eb3829376940b32998d374/addons/hr/models/res_users.py#L13

Making behavior Similar to https://github.com/odoo/odoo/blob/fb17af76d791488c69eb3829376940b32998d374/addons/hr_expense/models/hr_expense.py#L663

closes odoo/odoo#51246

Taskid: 2254687
X-original-commit: d7d1557e7a0f613335a9ca5ca1355d246093f9d1
Related: odoo/enterprise#10599
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
Yannick Tivisse
2020-05-15 07:06:59 +00:00
parent b6537c4335
commit 152097d099
7 changed files with 18 additions and 18 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ class HrAttendance(models.Model):
_order = "check_in desc"
def _default_employee(self):
return self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
return self.env.user.employee_id
employee_id = fields.Many2one('hr.employee', string="Employee", default=_default_employee, required=True, ondelete='cascade', index=True)
department_id = fields.Many2one('hr.department', string="Department", related="employee_id.department_id",
+4 -4
View File
@@ -18,7 +18,7 @@ class HrExpense(models.Model):
@api.model
def _default_employee_id(self):
return self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
return self.env.user.employee_id
@api.model
def _default_product_uom_id(self):
@@ -35,7 +35,7 @@ class HrExpense(models.Model):
res = "['|', ('company_id', '=', False), ('company_id', '=', company_id)]" # Then, domain accepts everything
elif self.user_has_groups('hr_expense.group_hr_expense_team_approver') and self.env.user.employee_ids:
user = self.env.user
employee = user.employee_ids[0]
employee = self.env.user.employee_id
res = [
'|', '|', '|',
('department_id.manager_id', '=', employee.id),
@@ -44,8 +44,8 @@ class HrExpense(models.Model):
('expense_manager_id', '=', user.id),
'|', ('company_id', '=', False), ('company_id', '=', employee.company_id.id),
]
elif self.env.user.employee_ids:
employee = self.env.user.employee_ids[0]
elif self.env.user.employee_id:
employee = self.env.user.employee_id
res = [('id', '=', employee.id), '|', ('company_id', '=', False), ('company_id', '=', employee.company_id.id)]
return res
+5 -5
View File
@@ -890,7 +890,7 @@ class HolidaysRequest(models.Model):
if any(holiday.state != 'confirm' for holiday in self):
raise UserError(_('Time off request must be confirmed ("To Approve") in order to approve it.'))
current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
current_employee = self.env.user.employee_id
self.filtered(lambda hol: hol.validation_type == 'both').write({'state': 'validate1', 'first_approver_id': current_employee.id})
@@ -906,7 +906,7 @@ class HolidaysRequest(models.Model):
return True
def action_validate(self):
current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
current_employee = self.env.user.employee_id
if any(holiday.state not in ['confirm', 'validate1'] and holiday.validation_type != 'no_validation' for holiday in self):
raise UserError(_('Time off request must be confirmed in order to approve it.'))
@@ -1014,7 +1014,7 @@ class HolidaysRequest(models.Model):
return True
def action_refuse(self):
current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
current_employee = self.env.user.employee_id
if any(holiday.state not in ['draft', 'confirm', 'validate', 'validate1'] for holiday in self):
raise UserError(_('Time off request must be confirmed or validated in order to refuse it.'))
@@ -1044,7 +1044,7 @@ class HolidaysRequest(models.Model):
if self.env.is_superuser():
return
current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
current_employee = self.env.user.employee_id
is_officer = self.env.user.has_group('hr_holidays.group_hr_holidays_user')
is_manager = self.env.user.has_group('hr_holidays.group_hr_holidays_manager')
@@ -1168,7 +1168,7 @@ class HolidaysRequest(models.Model):
def get_unusual_days(self, date_from, date_to=None):
# Checking the calendar directly allows to not grey out the leaves taken
# by the employee
calendar = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1).resource_calendar_id
calendar = self.env.user.employee_id.resource_calendar_id
if not calendar:
return {}
dfrom = datetime.combine(fields.Date.from_string(date_from), time.min).replace(tzinfo=UTC)
@@ -495,14 +495,14 @@ class HolidaysAllocation(models.Model):
if any(holiday.state != 'confirm' for holiday in self):
raise UserError(_('Allocation request must be confirmed ("To Approve") in order to approve it.'))
current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
current_employee = self.env.user.employee_id
self.filtered(lambda hol: hol.validation_type == 'both').write({'state': 'validate1', 'first_approver_id': current_employee.id})
self.filtered(lambda hol: not hol.validation_type == 'both').action_validate()
self.activity_update()
def action_validate(self):
current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
current_employee = self.env.user.employee_id
for holiday in self:
if holiday.state not in ['confirm', 'validate1']:
raise UserError(_('Allocation request must be confirmed in order to approve it.'))
@@ -539,7 +539,7 @@ class HolidaysAllocation(models.Model):
return childs
def action_refuse(self):
current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
current_employee = self.env.user.employee_id
if any(holiday.state not in ['confirm', 'validate', 'validate1'] for holiday in self):
raise UserError(_('Allocation request must be confirmed or validated in order to refuse it.'))
@@ -557,7 +557,7 @@ class HolidaysAllocation(models.Model):
""" Check if target state is achievable. """
if self.env.is_superuser():
return
current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
current_employee = self.env.user.employee_id
if not current_employee:
return
is_officer = self.env.user.has_group('hr_holidays.group_hr_holidays_user')
+1 -1
View File
@@ -257,7 +257,7 @@ class HolidaysType(models.Model):
elif 'default_employee_id' in self._context:
employee_id = self._context['default_employee_id']
else:
employee_id = self.env['hr.employee'].search([('user_id', '=', self.env.user.id), ('company_id', '=', self.env.company.id)], limit=1).id
employee_id = self.env.user.employee_id.id
return employee_id
def _compute_leaves(self):
+1 -1
View File
@@ -87,7 +87,7 @@ class LeaveReport(models.Model):
if 'name' in field_names:
if self.user_has_groups('hr_holidays.group_hr_holidays_user'):
return
current_employee = self.env['hr.employee'].sudo().search([('user_id', '=', self.env.uid)], limit=1)
current_employee = self.env.user.employee_id
for record in self:
emp_id = record._cache.get('employee_id', [False])[0]
if emp_id != current_employee.id:
+2 -2
View File
@@ -81,7 +81,7 @@ class MaintenanceRequest(models.Model):
@api.returns('self')
def _default_employee_get(self):
return self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
return self.env.user.employee_id
employee_id = fields.Many2one('hr.employee', string='Employee', default=_default_employee_get)
owner_user_id = fields.Many2one(compute='_compute_owner', store=True)
@@ -120,7 +120,7 @@ class MaintenanceRequest(models.Model):
email = tools.email_split(msg.get('from')) and tools.email_split(msg.get('from'))[0] or False
user = self.env['res.users'].search([('login', '=', email)], limit=1)
if user:
employee = self.env['hr.employee'].search([('user_id', '=', user.id)], limit=1)
employee = self.env.user.employee_id
if employee:
custom_values['employee_id'] = employee and employee[0].id
return super(MaintenanceRequest, self).message_new(msg, custom_values=custom_values)