Как помешать менеджеру утвердить собственный отпуск в Odoo?

Как я могу помешать менеджерам утверждать свои собственные запросы на отпуск? Я добавил одно поле ename и функцию в holiday.py.

'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 ответ

Решение

Ниже вы можете запретить менеджеру утверждать свой отпуск:

Для начала вам необходимо понять приведенную ниже концепцию модели hr.holidays и ее взаимосвязи.

employee_id:

В каждом запросе на отпуск есть один сотрудник

parent_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})

пожалуйста, добавьте приведенный выше код в действие вашего метода и проверьте, чтобы подтвердить, что оставить запрос.

Я надеюсь, что мой ответ может быть полезным для вас:)

Другие вопросы по тегам