diff --git a/hr_timesheet_sheet_validators/models/__init__.py b/hr_timesheet_sheet_validators/models/__init__.py
index 5858a8189..30d843c02 100644
--- a/hr_timesheet_sheet_validators/models/__init__.py
+++ b/hr_timesheet_sheet_validators/models/__init__.py
@@ -1 +1,2 @@
from . import hr_timesheet_sheet
+from . import hr_employee
diff --git a/hr_timesheet_sheet_validators/models/hr_employee.py b/hr_timesheet_sheet_validators/models/hr_employee.py
new file mode 100644
index 000000000..495b7cea8
--- /dev/null
+++ b/hr_timesheet_sheet_validators/models/hr_employee.py
@@ -0,0 +1,32 @@
+from odoo import api, models
+
+
+class HrEmployee(models.Model):
+ _inherit = "hr.employee"
+
+ @api.multi
+ def get_validator_user_ids(self):
+ """Return the list of user_ids that can validate a given timesheet."""
+ self.ensure_one()
+ for employee in self:
+ users = []
+ if employee and employee.parent_id and employee.parent_id.user_id:
+ users.append(employee.parent_id.user_id.id)
+ if (
+ employee.department_id
+ and employee.department_id.manager_id
+ and employee.department_id.manager_id.user_id
+ and employee.department_id.manager_id.user_id.id
+ != self.env.uid
+ ):
+ users.append(employee.department_id.manager_id.user_id.id)
+ elif (
+ employee.department_id
+ and employee.department_id.parent_id
+ and employee.department_id.parent_id.manager_id
+ and employee.department_id.parent_id.manager_id.user_id
+ and employee.department_id.parent_id.manager_id.user_id.id
+ != self.env.uid
+ ):
+ users.append(employee.department_id.manager_id.user_id.id)
+ return list(set(users)) if users else []
diff --git a/hr_timesheet_sheet_validators/models/hr_timesheet_sheet.py b/hr_timesheet_sheet_validators/models/hr_timesheet_sheet.py
index 7ecc29534..787c75985 100644
--- a/hr_timesheet_sheet_validators/models/hr_timesheet_sheet.py
+++ b/hr_timesheet_sheet_validators/models/hr_timesheet_sheet.py
@@ -22,55 +22,20 @@ def _default_department(self):
default=_default_department,
)
- @api.multi
- def _get_validator_user_ids(self):
- """Return the list of user_ids that can validate a given timesheet."""
- self.ensure_one()
- for timesheet in self:
- users = []
- if (
- timesheet.employee_id
- and timesheet.employee_id.parent_id
- and timesheet.employee_id.parent_id.user_id
- ):
- users.append(timesheet.employee_id.parent_id.user_id.id)
- if (
- timesheet.department_id
- and timesheet.department_id.manager_id
- and timesheet.department_id.manager_id.user_id
- and timesheet.department_id.manager_id.user_id.id
- != self.env.uid
- ):
- users.append(timesheet.department_id.manager_id.user_id.id)
- elif (
- timesheet.department_id
- and timesheet.department_id.parent_id
- and timesheet.department_id.parent_id.manager_id
- and timesheet.department_id.parent_id.manager_id.user_id
- and timesheet.department_id.parent_id.manager_id.user_id.id
- != self.env.uid
- ):
- users.append(timesheet.department_id.manager_id.user_id.id)
- return list(set(users)) if users else []
-
- @api.multi
- def action_timesheet_confirm(self):
- for sheet in self:
- validators = sheet._get_validator_user_ids()
- sheet.write({"validator_user_ids": [(6, 0, validators)]})
- return super(HrTimesheetSheet, self).action_timesheet_confirm()
+ @api.model
+ def create(self, vals):
+ employee_id = vals.get("employee_id", False)
+ if employee_id:
+ employee = self.env["hr.employee"].browse(employee_id)
+ validators = employee.get_validator_user_ids()
+ vals["validator_user_ids"] = [
+ (4, user_id) for user_id in validators
+ ]
+ return super(HrTimesheetSheet, self).create(vals)
@api.multi
def _check_authorised_validator(self):
- group_hr_manager = self.env.ref("hr.group_hr_manager")
- group_hr_user = self.env.ref("hr.group_hr_user")
for timesheet in self:
- if group_hr_manager and self.env.uid in group_hr_manager.users.ids:
- continue
-
- if group_hr_user and self.env.uid in group_hr_user.users.ids:
- continue
-
if self.env.uid not in timesheet.validator_user_ids.ids:
raise UserError(
_(
diff --git a/hr_timesheet_sheet_validators/security/hr_timesheet_sheet_security.xml b/hr_timesheet_sheet_validators/security/hr_timesheet_sheet_security.xml
index b46dc089b..c6b290b11 100644
--- a/hr_timesheet_sheet_validators/security/hr_timesheet_sheet_security.xml
+++ b/hr_timesheet_sheet_validators/security/hr_timesheet_sheet_security.xml
@@ -17,5 +17,13 @@
+
+ HR Validator
+
+
+
+ See timesheet validators
+
+