zoukankan      html  css  js  c++  java
  • odoo 在原有工作流中添加审批流

    odoo 在原有工作流中添加审批流

    步骤:

    1、加入所需的工作流节点以及相连的线(即所添加的审批流),代码如下:

     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>

    效果如下,

    2、添加审批流的相关按钮

    3、_state_selection函数的相关映射,不懂可参考前一篇博客

    4、is_complete_approved 字段来自动控制工作流的走向

    5、在state中添加等待审批状态

    6、start_base_workflow函数启动审批流

    7、重写相关审批流按钮,根据自己所需来重写

     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

    8、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'
  • 相关阅读:
    1.求整数最大的连续0的个数 BinaryGap Find longest sequence of zeros in binary representation of an integer.
    JTree实例
    java发送邮件完整实例 java邮件工具类
    oracle存储过程中文乱码问题
    黑马day16 jquery&amp;内容过滤选择器&amp;可见度选择器
    隐性反馈行为数据的协同过滤推荐算法
    ACdream 1083 有向无环图dp
    正則表達式
    hdu 2209 bfs+状压
    action属性注入为null
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/6322761.html
Copyright © 2011-2022 走看看