【发布时间】:2018-02-28 07:12:40
【问题描述】:
我用简单的工作流程创建了自己的月度评估模型。
任何员工都可以创建月度评估,保存并提交(草稿--> 确认--> 验证1)。
提交的评估将由主管确认(验证 1 --> 验证)
我成功创建了该部分,一旦我向普通用户授予访问权限,它就会在提交(确认 --> 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>
【问题讨论】:
-
能否添加日志输出。
-
附上@Zety 日志
-
您是否为
confirm到validate状态创建了工作流转换? -
是的,我做到了。当我将它连接到管理员用户帐户时,它运行良好
-
请显示工作流代码和相关按钮。
标签: xml python-2.7 odoo openerp-7