如何防止经理在 Odoo 中批准自己的休假?

How to prevent Manager to approve his own Leave in Odoo?

如何防止经理批准他们自己的请假申请? 我在 holidays.py.

中添加了一个 ename 字段和函数
'ename':fields.many2one('res.users','Name',readonly=True),

def is_officer_employee(self,cr,uid,ids,ename,context=None):
        user_obj = self.pool.get('res.users')
        user_value = user_obj.browse(cr, uid, uid)

        for leave in self.browse(cr,uid,ids,context=context):
            if leave.ename.id == uid:
                raise osv.except_osv(_('Warning!'), _('Can not approve own Leave!'))
            else:
                return self.write(cr, uid, ids, {'state':'validate1', 'manager_id': False})

现在经理不能审批自己的请假,只有他的经理可以approve.Now添加以上功能代码后,二次审批的验证按钮不起作用。

请提供一些解决方案。 谢谢。

您可以通过以下方式阻止经理批准自己请假:

首先您必须了解以下 hr.holidays 模型的概念及其关系。

employee_id :

每个请假申请都有一个员工

parent_id(经理字段):

附在each Employee上表示每个员工有一个经理。

user_id :

每个Employee关联一个相关用户,方便make以用户登录访问Employee。

这意味着如果您想访问每个员工的登录名,那么相关用户归档对我们来说太重要了。

在您的情况下,基本上不需要为每个请假请求添加 ename 字段。

所以你可以做一些这样的事情:

for leave in self.browse(cr,uid,ids,context=context):
            if leave.employee_id.parent_id.user_id.id == uid:
                raise osv.except_osv(_('Warning!'), _('Can not approve own Leave!'))
            else:
                return self.write(cr, uid, ids, {'state':'validate1', 'manager_id': False})

请在您的方法操作中添加以上代码并检查以验证休假请求。

希望我的回答对您有所帮助:)