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

步骤:

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

 <?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="hrp_sale_approve" model="workflow.activity">
<field name="wkf_id" ref="sale.wkf_sale"/>
<field name="name">HrpApproval</field>
<field name="kind">function</field>
<field name="action">start_base_workflow()</field>
</record> <record id="trans_confirmed_hrp_approve" model="workflow.transition">
<field name="act_from" ref="sale.act_draft"/>
<field name="act_to" ref="hrp_sale_approve"/>
<field name="signal">to_hrpApprove</field>
</record> <record id="hrp_sale_approve_trans" model="workflow.transition">
<field name="act_from" ref="hrp_sale_approve"/>
<field name="act_to" ref="sale.act_router"/>
<field name="condition">is_complete_approved</field>
<field name="signal"/>
<field name="group_id" ref=""/>
</record> <record id="sale.trans_sent_router" model="workflow.transition">
<field name="act_from" ref="sale.act_sent"/>
<field name="act_to" ref="hrp_sale_approve"/>
<field name="signal">to_hrpApprove</field>
</record>
</data>
</openerp>

效果如下,

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

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

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

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

6、start_base_workflow函数启动审批流

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

 # 取消
@api.multi
def action_cancel(self):
for rec in self:
rec.state = 'cancel' # 完成
@api.multi
def action_done(self):
for rec in self:
rec.state = 'done' # 批准逻辑
@api.multi
def action_approve(self):
for rec in self:
rec.state = 'approved'
self.signal_workflow('to_hrpApprove') # 拒绝逻辑
@api.multi
def action_refuse(self):
for rec in self:
rec.state = 'draft' # 批准订单
@api.model
def complete_approve(self, requisition_id):
requisition_order = self.browse(requisition_id)
requisition_order.write({'is_complete_approved': True}) # 拒绝订单
@api.model
def refuse_approve(self, requisition_id):
requisition_order = self.browse(requisition_id)
requisition_order.action_refuse() # 拒绝按钮逻辑
@api.multi
def order_refuse_task(self):
if self.approve_task:
wkf_task_obj = self.env['hrp.base.wkf.task']
return wkf_task_obj.approve_note_view(self.approve_task.id, 'refuse')
else:
return True # 审批按钮逻辑
@api.multi
def order_approve_task(self):
if self.approve_task:
wkf_task_obj = self.env['hrp.base.wkf.task']
return wkf_task_obj.approve_note_view(self.approve_task.id, 'approve')
else:
return True

8、action_button_confirm方法为提交订单按钮,按下后将跳到审批流执行审批

     def action_button_confirm(self, cr, uid, ids, context=None):
self.signal_workflow(cr, uid, ids, 'to_hrpApprove')
self.write(cr, uid, ids, {'state': 'confirmed'})
return True
self.signal_workflow(cr, uid, ids, 'to_hrpApprove'):发送一个信号to_hrpApprove,则将自动执行到审批流。
self.write(cr, uid, ids, {'state': 'confirmed'}) :将state状态改写为'confirmed'

odoo 在原有工作流中添加审批流的更多相关文章

  1. 如何使用django操作数据库,向原有表中添加新的字段信息并建立一个多对多的关系?

    (注:本人用的pycharm开发工具) 1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(book表新增authors字段并和author建立多对多关系,author表新增 ...

  2. Django数据库,在原有表中添加新字段

    1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(这里新增的是dress字段): from django.db import models # Create your mo ...

  3. SVN工具的使用 和在Eclipse中安装GPD插件:(多步审批流,因此选择使用工作流(JBPM)来实现)

    前言 重点解说SVN工具的还原版本号.   1.提交svn之前.要先更新文件.假设更新之后有版本号冲突的话.就线下解决掉冲突,在把该文件标记为已经解决冲突. 正文 使用SVN还原历史版本号 water ...

  4. Winform开发框架中工作流模块之审批会签操作(2)

    前面随笔介绍了请假申请单和报销申请单两个不同的业务表单的流程处理,一个是单表信息,一个包含明细的主从表信息,后者包含了条件流程的处理,在流程审批中,一般还有一种流程处理就是会签的操作,会签处理是几个审 ...

  5. Winform开发框架中工作流模块之审批会签操作

    在前面介绍了框架中工作流的几个开发过程,本篇随笔重点介绍一下日常审批环节中的具体处理过程,从开始创建表单,以及各个审批.会签过程的流转过程,希望大家对其中流程的处理有一个大概的印象. 1.请假申请表单 ...

  6. PowerShell工作流学习-4-工作流中重启计算机

    关键点: a)工作流中重新启动计算机,请使用Restart-Computer的Wait参数,Wait参数不仅适用于本地计算机,也适用于远程计算机. b)重启运行工作流的计算机,手工恢复请使用Resum ...

  7. OA办公软件篇(三)—审批流

    背景 作用 迭代历程 具体实现 写在最后   背景 在前面两篇文章中,我们分别讲了组织架构和权限管理,今天我们来讲一个跟组织架构关系比较密切的功能-审批流. 审批流,通俗来说就是一个完整的审批流程,是 ...

  8. Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置

    上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义 ...

  9. odoo11 审批流中行总额与申请单总额的计算问题

    一. 问题的描述 在做审批流的过程中,涉及到这样一个问题,用户申请的行总额需要根据当前行的数量和单价相乘计算得出,这本来是一个很简单的功能需求,利用odoo的计算方法就可以轻松实现,但是在在view页 ...

随机推荐

  1. Maven--要点笔记

    --maven笔记 1.maven命令 2.archetype插件:用于创建符合maven规定的文件夹骨架   命令: mvn archetype:generate 3. 坐标:构件 仓库: 本地仓库 ...

  2. e.keycode详解

    function submitLoginForm(e) { e = window.event || e; if(e.keyCode == 13) { login(); } } keycode 8 = ...

  3. 【TP3.2】模板引用头和尾.html文件

    传送门:http://document.thinkphp.cn/manual_3_2.html#include 使用模版表达式 模版表达式的定义规则为:模块@主题/控制器/操作 例如: <inc ...

  4. 控制器中添加DB类才可以操作数据库表中的数据

    必须使用DB:  use DB;

  5. C#处理和对接HTTP接口请求

    对于现在接口泛滥的时代,了解和处理接口对于一名程序员来说是很有必要的! 在对接时对于对方发过来的文档,需要认真看一遍,有疑问的比如加密等,需特别提出来和对方交接: 第一步,在对接接口时,你应该拿到服务 ...

  6. Linux更改Apache网站目录出错:Document root must be a directory解决

    Linux更改Apache网站目录出错:Document root must be a directory解决   修改   DocumentRoot     <Directory " ...

  7. HttpOperater

    using System; using System.IO; using System.Linq; using System.Net; using System.Text; using System. ...

  8. RPC服务框架dubbo(六):Consumer搭建过程

    1.在pom.xml中除了ssm的依赖添加dubbo相关3个依赖(接口,dubbo.jar,zkClient) 2.web.xml中修改<init-value>applicationCon ...

  9. atitit..主流 浏览器 js 引擎 内核 市场份额 attialx总结vOa9

    atitit..主流 浏览器 js 引擎  内核 市场份额 attialx总结vOa9 1. 浏览器内核 1 2. 浏览器的主要组件包括: 2 2.1. 主要组件体系结构 2 2.2. WebCore ...

  10. Atitit.部分错误 设计模式,异常处理框架atiPartErr 的总结

    Atitit.部分错误 设计模式,异常处理框架atiPartErr 的总结 1. 流程图 1 2. Java 类关系结构图片 1 3. 错误信息结构 1 4. 调用 2 4.1. 收集错误信息 3 4 ...