Openerp 7:当给定访问权限时,工作流程停止

问题描述 投票:1回答:1

我用简单的工作流程创建了自己的月度评估模型。

enter image description here

  1. 任何员工都可以创建每月评估保存并提交(草稿 - >确认 - >验证1)它。
  2. 提交的评估将由主管确认(验证1 - >验证)

我成功创建了该部分,一旦我向普通用户授予访问权限,它就会在提交(confirm - > validate1)按钮时停止工作流程。将普通配置文件连接到管理员配置文件后,它再次顺利运行。

请帮我解决这个问题,因为我无法想象我做错了什么。

工作流程功能

  def evaluation_confirm(self, cr, uid, ids, context=None):
        #self.hr_mnthly_evaluation(cr, uid, ids, context=context)

        eval_id=self.browse(cr, uid, ids[0],context=context).evaluation_id
        eval_state=self.browse(cr, uid, ids[0],context=context).state


        values = {}
        values.update({'state':'confirm'})
        ime_super_obj = self.browse(cr, uid, ids ,context) 

        emp_id = ime_super_obj[0].employee_id.id
        emp_obj=self.pool.get('hr.employee')


        return self.write(cr, uid, ids, {'state': 'confirm'})


    def evaluation_first_validate(self, cr, uid, ids, context=None):

        values = {}
        values.update({'state':'validate1'})
        return self.write(cr, uid, ids, values)

    def evaluation_validate(self, cr, uid, ids, context=None):


        obj_emp = self.pool.get('hr.employee')
        state = self.browse(cr, uid, ids[0],context=context).state
        sup_id=self.browse(cr, uid, ids[0],context=context).parent_id.id

        idss = obj_emp.search(cr, uid, [('user_id', '=', uid)])
        log_user_uid=self.browse(cr, uid, ids[0],context=context).employee_id.id



        if (idss[0]==log_user_uid)and(state!='confirm'):
            raise osv.except_osv(_('Warning!'),_('You are not allow to acknowledge your own appraisals'))


        if idss[0]!=sup_id:
            raise osv.except_osv(_('Warning!'),_('Only Immediate Supervisor , can acknowledge the appraisals !'))


        obj_emp = self.pool.get('hr.employee')

        idss = obj_emp.search(cr, uid, [('user_id', '=', uid)])

        values = {}
        values.update({'state':'validate'})
        return self.write(cr, uid, ids, values)


    def evaluation_refuse(self, cr, uid, ids, context=None):
        print "workflow validate"
        values = {}
        values.update({'state':'refuse'})
        return self.write(cr, uid, ids, values)

给定访问权限

enter image description here

给出记录规则

enter image description here

一旦我点击“提交”(确认)按钮,日志就像enter image description here

工作流程

<?xml version="1.0" ?>
<openerp>
<data>

    <record model="workflow" id="wkf_mnthly_evaluation">
        <field name="name">hr.wkf.mnthly.evaluation</field>
        <field name="osv">hr.mnthly.evaluation</field>
        <field name="on_create">True</field>
    </record>

    <record model="workflow.activity" id="act_draft"> <!-- draft -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="flow_start">True</field>
        <field name="name">draft</field>
    </record>

    <record model="workflow.activity" id="act_confirm"> <!-- confirm -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="name">confirm</field>
        <field name="kind">function</field>
        <field name="action">evaluation_confirm()</field>
        <field name="split_mode">OR</field>
    </record>

    <record model="workflow.activity" id="act_validate1"> <!-- first_validate -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="name">validate1</field>
        <field name="kind">function</field>
        <field name="action">evaluation_first_validate()</field>
        <field name="split_mode">OR</field>
    </record>




    <record model="workflow.activity" id="act_validate"> <!-- validate -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="name">validate</field>
        <field name="kind">function</field>
        <field name="action">evaluation_validate()</field>
    </record>


    <record model="workflow.activity" id="act_refuse"> <!-- refused -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="name">refuse</field>
        <field name="flow_stop">True</field>
        <field name="kind">function</field>
        <field name="action">evaluation_refuse()</field>
    </record>

    <!--
        workflow transition
    -->

    <record model="workflow.transition" id="evaluation_draft2confirm"> <!-- 1. draft->confirm (Save BTN - no action) -->
        <field name="act_from" ref="act_draft" />
        <field name="act_to" ref="act_confirm" />
    </record>

    <record model="workflow.transition" id="evaluation_confirm2validate1"> <!-- 2. confirm->validate1 (Request Confirm BTN)-->
        <field name="act_from" ref="act_confirm" />
        <field name="act_to" ref="act_validate1" />
        <field name="signal">validate1</field>

        <field name="group_id" ref="base.group_hr_user"/>
    </record>

    <record model="workflow.transition" id="evaluation_validate12validate2"> <!-- 2. validate1 -> validate2 (Manager Approval BTN)-->
        <field name="act_from" ref="act_validate1" />
        <field name="act_to" ref="act_validate" />
        <field name="signal">validate2</field>
         <field name="condition">True</field>
        <field name="group_id" ref="base.group_hr_user"/>
    </record>






<!-- //////////////////////////////////////////////////////////////////////////////////////////////////////// -->



    <record model="workflow.transition" id="evaluation_confirm2refuse"> <!-- 2. submitted->refused (refuse signal) -->
        <field name="act_from" ref="act_confirm" />
        <field name="act_to" ref="act_refuse" />
        <field name="signal">refuse</field>
        <field name="condition">True</field>
        <field name="group_id" ref="base.group_hr_user"/>
    </record>

    <record model="workflow.transition" id="evaluation_validate12refuse"> <!-- 2. submitted->refused (refuse signal) -->
        <field name="act_from" ref="act_validate1" />
        <field name="act_to" ref="act_refuse" />
        <field name="signal">refuse</field>
        <field name="condition">True</field>
        <field name="group_id" ref="base.group_hr_user"/>
    </record>




</data>
</openerp>

纽扣

        <header>
            <button string="Submit" name="validate1" states="confirm" type="workflow" class="oe_highlight"/>
            <button string="Manager Acknowledgement" name="validate2" states="validate1" type="workflow" class="oe_highlight" />

            <button string="Refuse" name="refuse" states="validate1" type="workflow"/>                    
            <field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate1,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
        </header>
xml python-2.7 odoo openerp-7
1个回答
0
投票

将工作流状态更改为validate需要成为base.group_hr_user的成员。

它在使用admin用户而不是普通用户进行日志记录时起作用,因为qazxsw poi(虽然访问规则可以)。

只需将用户添加到record rules do not apply to the Administrator user并让他访问模型,然后他应该能够将工作流状态从base.group_hr_user更改为validate1

© www.soinside.com 2019 - 2024. All rights reserved.