Skip to content

Commit

Permalink
[FIX]hr_timesheet_sheet_validators move validation to employee side
Browse files Browse the repository at this point in the history
  • Loading branch information
AaronHForgeFlow committed Oct 23, 2019
1 parent d3bc4cf commit e529688
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 51 deletions.
1 change: 1 addition & 0 deletions hr_timesheet_sheet_validators/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
from . import hr_timesheet_sheet
from . import hr_employee
33 changes: 33 additions & 0 deletions hr_timesheet_sheet_validators/models/hr_employee.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
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 []
62 changes: 11 additions & 51 deletions hr_timesheet_sheet_validators/models/hr_timesheet_sheet.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,62 +22,22 @@ 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(
_(
"You are not authorised to approve or "
"refuse this Timesheet."
)
)
raise UserError(_('You are not authorised to approve or '
'refuse this Timesheet.'))

@api.multi
def action_timesheet_draft(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,13 @@
<field name="groups" eval="[(4,ref('hr.group_hr_user'))]"/>
</record>

<record id="group_hr_validator" model="res.groups">
<field name="name">HR Validator</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="implied_ids" eval="[(4, ref('hr.group_hr_manager'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
<field name="comment">See timesheet validators</field>
</record>

</data>
</odoo>

0 comments on commit e529688

Please sign in to comment.