odoo 在原有工作流中添加审批流
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 在原有工作流中添加审批流的更多相关文章
- 如何使用django操作数据库,向原有表中添加新的字段信息并建立一个多对多的关系?
(注:本人用的pycharm开发工具) 1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(book表新增authors字段并和author建立多对多关系,author表新增 ...
- Django数据库,在原有表中添加新字段
1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(这里新增的是dress字段): from django.db import models # Create your mo ...
- SVN工具的使用 和在Eclipse中安装GPD插件:(多步审批流,因此选择使用工作流(JBPM)来实现)
前言 重点解说SVN工具的还原版本号. 1.提交svn之前.要先更新文件.假设更新之后有版本号冲突的话.就线下解决掉冲突,在把该文件标记为已经解决冲突. 正文 使用SVN还原历史版本号 water ...
- Winform开发框架中工作流模块之审批会签操作(2)
前面随笔介绍了请假申请单和报销申请单两个不同的业务表单的流程处理,一个是单表信息,一个包含明细的主从表信息,后者包含了条件流程的处理,在流程审批中,一般还有一种流程处理就是会签的操作,会签处理是几个审 ...
- Winform开发框架中工作流模块之审批会签操作
在前面介绍了框架中工作流的几个开发过程,本篇随笔重点介绍一下日常审批环节中的具体处理过程,从开始创建表单,以及各个审批.会签过程的流转过程,希望大家对其中流程的处理有一个大概的印象. 1.请假申请表单 ...
- PowerShell工作流学习-4-工作流中重启计算机
关键点: a)工作流中重新启动计算机,请使用Restart-Computer的Wait参数,Wait参数不仅适用于本地计算机,也适用于远程计算机. b)重启运行工作流的计算机,手工恢复请使用Resum ...
- OA办公软件篇(三)—审批流
背景 作用 迭代历程 具体实现 写在最后 背景 在前面两篇文章中,我们分别讲了组织架构和权限管理,今天我们来讲一个跟组织架构关系比较密切的功能-审批流. 审批流,通俗来说就是一个完整的审批流程,是 ...
- Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置
上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义 ...
- odoo11 审批流中行总额与申请单总额的计算问题
一. 问题的描述 在做审批流的过程中,涉及到这样一个问题,用户申请的行总额需要根据当前行的数量和单价相乘计算得出,这本来是一个很简单的功能需求,利用odoo的计算方法就可以轻松实现,但是在在view页 ...
随机推荐
- om.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException
Error:Execution failed for task ':app:dexDebug'.> com.android.ide.common.process.ProcessException ...
- Redhat 5禁止IPv6
Redhat 5禁止IPv6 IPv6还没有全然普及,可是安装完系统之后IPv6是有效的,在一定程度上影响网络性能,所以在我们在全然不使用IPv6的情况下.最好关闭IPv6.如今我们就在本文以完整的 ...
- Thrift实现C#调用Java开发步骤详解
概述 Thrift实现C#调用Java开发步骤详解 详细 代码下载:http://www.demodashi.com/demo/10946.html Apache Thrift 是 Facebook ...
- Android数据库升级实例
第一部分 Andoird的SQLiteOpenHelper类中有一个onUpgrade方法.帮助文档中只是说当数据库升级时该方法被触发.经过实践,解决了我一连串的疑问: 1. 帮助文档里说的“数据库升 ...
- ZOJ 3427 Array Slicing (scanf使用)
题意 Watashi发明了一种蛋疼(eggache) 语言 你要为这个语言实现一个 array slicing 函数 这个函数的功能是 有一个数组初始为空 每次给你一个区间[ l, r) 和 ...
- c++,当const char*为0时,不能将其直接赋给string
下面程序会崩溃: const char* t_objName = (obj!=NULL)?obj->getName(): 0; string objName=t_objName; cout< ...
- unity, 查看资源文件类型
- 什么是:before和:after?
前几天的晚上较全面的去看了下css的一些文档和资料,大部分的样式运用都没什么大问题了,只是有些许较陌生,但是也知道他们的存在和实现的是什么样式.今天主要想在这篇学习笔记中写的也不多,主要是针对:bef ...
- 绕过IE10直接安装VS2013
参考资料:http://blog.163.com/qimo601%40126/blog/static/1582209320143354446462/ 这SB设定我就懒得说了,安个IE10要安装N多WI ...
- linux查看匹配内容的前后几行(转)
linux系统中,利用grep打印匹配的上下几行 如果在只是想匹配模式的上下几行,grep可以实现. $grep -5 'parttern' inputfile //打印匹配行的前后5行 ...