class Doc(models.Model): _name = 'oa.doc.employee.change' _description = u'员工异动审批表' _inherit = 'oa.doc' workflow_stage = fields.Selection([('callOut', '调出部门意见'), ('callIn', '调入部门意见'), ('hrOpinion', '人力资源部意见'), ('CADopinion', '综合管理中心意见'), ('managerOpinion', '总经理意见')]) @api.multi def workflow_route(self, stage, result='approve'): """ :param stage: 目标阶段 :param result: 审批意见 :return: 目标用户IDs, 指定下一目标阶段(可选) :rtype: list,str """ if result == 'approve': user_ids, next_stage = None, None if stage == 'callOut': user_ids = self.src_department_id.manager_id.user_id if stage == 'callIn': hr_dept = self.env['hr.department'].search([('name', '=', u'人力资源部')]) if hr_dept.id == self.dest_department_id.id: if self.src_department_id.id == self.dest_department_id.id: stage = 'CADopinion' next_stage = stage else: stage = 'hrOpinion' next_stage = stage elif self.src_department_id.id == self.dest_department_id.id: stage = 'hrOpinion' next_stage = stage else: user_ids = self.dest_department_id.manager_id.user_id if stage == 'hrOpinion': user_ids = self.env['hr.department'].search([('name', '=', u'人力资源部')]).manager_id.user_id if stage == 'CADopinion': user_ids = self.env['hr.department'].search([('name', '=', u'综合管理中心')]).manager_id.user_id if stage == 'managerOpinion': user_ids = self.env['hr.department'].search([('name', '=', u'总裁办')]).manager_id.user_id if user_ids: return user_ids.ids + [SUPERUSER_ID], next_stage @api.multi def workflow_done(self, stage, result='approve'): if result == 'approve': if stage == 'managerOpinion': val = {} if self.dest_department_id: val['department_id'] = self.dest_department_id.id if self.dest_job_id: val['job_id'] = self.dest_job_id.id self.employee_id.write(val) self.write({'state': 'done'}) else: self.write({'state': 'refused'})