In Employee / Work information / Responsible: there is a lack of information on the "help message" The objective is to change text in the help message by the ones below: Field "Coach": -Employee responsible of this employee. -The "coach" has no specific rignts or responsibilities by default. Field "Time Off": -User responsible for approving "time off" of this employee. -If empty, the approval is done by any administrators or approvers (determinated in settings/users) Field "expense": -User responsible for approving "Expenses" of this employee. -If empty, the approval is done by any administrators or approvers (determinated in settings/users) TaskId :2168330 closes odoo/odoo#43467 Closes: #43467 Related: odoo/enterprise#7778 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
58 lines
2.6 KiB
Python
58 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import fields, models, api
|
|
|
|
|
|
class Employee(models.Model):
|
|
_inherit = 'hr.employee'
|
|
|
|
def _group_hr_expense_user_domain(self):
|
|
# We return the domain only if the group exists for the following reason:
|
|
# When a group is created (at module installation), the `res.users` form view is
|
|
# automatically modifiedto add application accesses. When modifiying the view, it
|
|
# reads the related field `expense_manager_id` of `res.users` and retrieve its domain.
|
|
# This is a problem because the `group_hr_expense_user` record has already been created but
|
|
# not its associated `ir.model.data` which makes `self.env.ref(...)` fail.
|
|
group = self.env.ref('hr_expense.group_hr_expense_team_approver', raise_if_not_found=False)
|
|
return [('groups_id', 'in', group.ids)] if group else []
|
|
|
|
expense_manager_id = fields.Many2one(
|
|
'res.users', string='Expense',
|
|
domain=_group_hr_expense_user_domain,
|
|
compute='_compute_expense_manager', store=True, readonly=False,
|
|
help='Select the user responsible for approving "Expenses" of this employee.\n'
|
|
'If empty, the approval is done by an Administrator or Approver (determined in settings/users).')
|
|
|
|
@api.depends('parent_id')
|
|
def _compute_expense_manager(self):
|
|
for employee in self:
|
|
previous_manager = employee._origin.parent_id.user_id
|
|
manager = employee.parent_id.user_id
|
|
if manager and manager.has_group('hr_expense.group_hr_expense_user') and (employee.expense_manager_id == previous_manager or not employee.expense_manager_id):
|
|
employee.expense_manager_id = manager
|
|
elif not employee.expense_manager_id:
|
|
employee.expense_manager_id = False
|
|
|
|
|
|
class EmployeePublic(models.Model):
|
|
_inherit = 'hr.employee.public'
|
|
|
|
expense_manager_id = fields.Many2one('res.users', readonly=True)
|
|
|
|
|
|
class User(models.Model):
|
|
_inherit = ['res.users']
|
|
|
|
expense_manager_id = fields.Many2one(related='employee_id.expense_manager_id')
|
|
|
|
def __init__(self, pool, cr):
|
|
""" Override of __init__ to add access rights.
|
|
Access rights are disabled by default, but allowed
|
|
on some specific fields defined in self.SELF_{READ/WRITE}ABLE_FIELDS.
|
|
"""
|
|
init_res = super(User, self).__init__(pool, cr)
|
|
# duplicate list to avoid modifying the original reference
|
|
type(self).SELF_READABLE_FIELDS = type(self).SELF_READABLE_FIELDS + ['expense_manager_id']
|
|
return init_res
|