odoo 在原有工做流中添加審批流

odoo 在原有工做流中添加審批流api

步驟:app

一、加入所需的工做流節點以及相連的線(即所添加的審批流),代碼以下:函數

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <openerp>
 3     <data>
 4         <record id="hrp_sale_approve" model="workflow.activity">
 5             <field name="wkf_id" ref="sale.wkf_sale"/>
 6             <field name="name">HrpApproval</field>
 7             <field name="kind">function</field>
 8             <field name="action">start_base_workflow()</field>
 9         </record>
10 
11         <record id="trans_confirmed_hrp_approve" model="workflow.transition">
12             <field name="act_from" ref="sale.act_draft"/>
13             <field name="act_to" ref="hrp_sale_approve"/>
14             <field name="signal">to_hrpApprove</field>
15         </record>
16 
17         <record id="hrp_sale_approve_trans" model="workflow.transition">
18             <field name="act_from" ref="hrp_sale_approve"/>
19             <field name="act_to" ref="sale.act_router"/>
20             <field name="condition">is_complete_approved</field>
21             <field name="signal"/>
22             <field name="group_id" ref=""/>
23         </record>
24 
25         <record id="sale.trans_sent_router" model="workflow.transition">
26             <field name="act_from" ref="sale.act_sent"/>
27             <field name="act_to" ref="hrp_sale_approve"/>
28             <field name="signal">to_hrpApprove</field>
29         </record>
30     </data>
31 </openerp>

效果以下,ui

二、添加審批流的相關按鈕spa

三、_state_selection函數的相關映射,不懂可參考前一篇博客3d

四、is_complete_approved 字段來自動控制工做流的走向code

五、在state中添加等待審批狀態router

六、start_base_workflow函數啓動審批流xml

七、重寫相關審批流按鈕,根據本身所需來重寫blog

 1 # 取消
 2     @api.multi
 3     def action_cancel(self):
 4         for rec in self:
 5             rec.state = 'cancel'
 6 
 7     # 完成
 8     @api.multi
 9     def action_done(self):
10         for rec in self:
11             rec.state = 'done'
12 
13     # 批准邏輯
14     @api.multi
15     def action_approve(self):
16         for rec in self:
17             rec.state = 'approved'
18         self.signal_workflow('to_hrpApprove')
19 
20     # 拒絕邏輯
21     @api.multi
22     def action_refuse(self):
23         for rec in self:
24             rec.state = 'draft'
25 
26     # 批准訂單
27     @api.model
28     def complete_approve(self, requisition_id):
29         requisition_order = self.browse(requisition_id)
30         requisition_order.write({'is_complete_approved': True})
31 
32     # 拒絕訂單
33     @api.model
34     def refuse_approve(self, requisition_id):
35         requisition_order = self.browse(requisition_id)
36         requisition_order.action_refuse()
37 
38     # 拒絕按鈕邏輯
39     @api.multi
40     def order_refuse_task(self):
41         if self.approve_task:
42             wkf_task_obj = self.env['hrp.base.wkf.task']
43             return wkf_task_obj.approve_note_view(self.approve_task.id, 'refuse')
44         else:
45             return True
46 
47     # 審批按鈕邏輯
48     @api.multi
49     def order_approve_task(self):
50         if self.approve_task:
51             wkf_task_obj = self.env['hrp.base.wkf.task']
52             return wkf_task_obj.approve_note_view(self.approve_task.id, 'approve')
53         else:
54             return True

八、action_button_confirm方法爲提交訂單按鈕,按下後將跳到審批流執行審批

1     def action_button_confirm(self, cr, uid, ids, context=None):
2         self.signal_workflow(cr, uid, ids, 'to_hrpApprove')
3         self.write(cr, uid, ids, {'state': 'confirmed'})
4         return True
self.signal_workflow(cr, uid, ids, 'to_hrpApprove')發送一個信號to_hrpApprove,則將自動執行到審批流。
self.write(cr, uid, ids, {'state': 'confirmed'}) :將state狀態改寫爲'confirmed'
相關文章
相關標籤/搜索