openerp学习笔记 调用工作流
获取工作流服务:wf_service = netsvc.LocalService("workflow")
删除对象对应记录的工作流:wf_service.trg_delete(uid, 'kl.qingjd', id, cr)
#传入对象名称,对象ID
创建对象对应记录的工作流:wf_service.trg_create(uid, 'kl.qingjd', id,
cr) #传入对象名称,对象ID
手动触发对象对应记录的工作流(信号):wf_sale_order.trg_validate(uid, 'sale.order', ids[0], 'order_confirm', cr) #传入对象名称,对象ID,信号名称
示例代码:
#设置为草稿状态,需要重新初始化工作流
def
set_to_draft(self, cr, uid, ids,
context=None):
for rec in
self.browse(cr, uid, ids,
context=context):
#当请假单不是自己创建的时,不能设置为草稿
if rec.create_uid.id !=
uid:
raise
osv.except_osv(_(u'警告!'),_(u'您不能设置他人创建的单据为草稿状态.'))
self.write(cr, uid, ids,
{
'state':
'draft',
'manager_id':
False,
'refuse_notes':False
})
#重新初始化工作流
wf_service =
netsvc.LocalService("workflow")
for id in
ids:
wf_service.trg_delete(uid,
'kl.qingjd', id, cr)
#传入对象名称
wf_service.trg_create(uid,
'kl.qingjd', id, cr)
return
True
def sale_confirm_invoice(self, cr, uid, ids,
context=None):
#自动确认订单,将自动生成发货单
#action_button_confirm
assert
len(ids) == 1, 'This option should only be used for a single id at a
time.'
wf_sale_order =
netsvc.LocalService('workflow')
wf_sale_order.trg_validate(uid,
'sale.order', ids[0], 'order_confirm',
cr)