37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo import fields, models
|
||
|
|
||
|
|
||
|
class HrManagerDepartmentReport(models.AbstractModel):
|
||
|
_name = 'hr.manager.department.report'
|
||
|
_description = 'Hr Manager Department Report'
|
||
|
_auto = False
|
||
|
|
||
|
employee_id = fields.Many2one('hr.employee', string="Employee", readonly=True)
|
||
|
has_department_manager_access = fields.Boolean(search="_search_has_department_manager_access",
|
||
|
compute="_compute_has_department_manager_access")
|
||
|
|
||
|
def _search_has_department_manager_access(self, operator, value):
|
||
|
supported_operators = ["="]
|
||
|
if operator not in supported_operators or not isinstance(value, bool):
|
||
|
raise NotImplementedError()
|
||
|
if not value:
|
||
|
return [1, "=", 0]
|
||
|
department_ids = self.env['hr.department']._search([('manager_id', 'in', self.env.user.employee_ids.ids)])
|
||
|
return [
|
||
|
'|',
|
||
|
('employee_id.user_id', '=', self.env.user.id),
|
||
|
('employee_id.department_id', 'child_of', department_ids),
|
||
|
]
|
||
|
|
||
|
def _compute_has_department_manager_access(self):
|
||
|
department_ids = self.env['hr.department']._search([('manager_id', 'in', self.env.user.employee_ids.ids)])
|
||
|
employees = self.env['hr.employee'].search([
|
||
|
'|',
|
||
|
('user_id', '=', self.env.user.id),
|
||
|
('department_id', 'child_of', department_ids),
|
||
|
])
|
||
|
for report in self:
|
||
|
report.has_department_manager_access = report.employee_id in employees
|