我用简单的工作流程创建了自己的月度评估模型。
我成功创建了该部分,一旦我向普通用户授予访问权限,它就会在提交(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)
给定访问权限
给出记录规则
工作流程
<?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>
将工作流状态更改为validate
需要成为base.group_hr_user
的成员。
它在使用admin用户而不是普通用户进行日志记录时起作用,因为qazxsw poi(虽然访问规则可以)。
只需将用户添加到record rules do not apply to the Administrator user
并让他访问模型,然后他应该能够将工作流状态从base.group_hr_user
更改为validate1
。