如何防止经理批准他自己的Odoo请假?

时间:2015-11-26 09:54:43

标签: odoo-8

如何阻止经理批准他们自己的请假申请? 我在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})

现在经理不能批准他自己的假期,只有他的经理可以批准。现在添加上面的功能代码后,验证第二次批准的按钮不起作用。

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

1 个答案:

答案 0 :(得分:1)

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

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

employee_id:

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

parent_id(经理字段):

每个员工都附有一个,这意味着每个员工都有一名经理。

user_id:

每个员工都附有一个相关用户,这有助于访问员工作为用户登录。

这意味着如果您想要访问每位员工的登录信息,那么相关用户提交对我们来说太重要了。

在您的情况下,基本上不需要为每个请假申请添加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})

请在方法操作中添加以上代码,然后检查以验证请假请求。

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