OA办公自动化
 
编辑点评
Odoo 11 已经完全取消工作流支持,本方案是兼顾灵活性与兼容性的最佳Odoo解决方案。
应用简介
比Odoo内置工作流更灵活的单据制作模式,有简单的Python编程基础即可实现复杂流程,媲美大型商业OA系统。
分类标签
详细信息
技术名称:oa
支持版本:8.0, 9.0, 10.0, 11.0
开发者名称:ODOO模块网
 

 

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