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页 ...
随机推荐
- Java 中断线程
- DBCP(一)数据源配置文件
DBCP是Apache开发的数据源API,使用的话需要导入dbcp jar包.collections jar包.pool jar包. 其数据源匹配的配置文件格式如下: #连接设置 driverCl ...
- 用python实现的的手写数字识别器
概述 带GUI界面的,基于python sklearn knn算法的手写数字识别器,可用于识别手写数字,训练数据集为mnist. 详细 代码下载:http://www.demodashi.com/de ...
- MFC显示GIF动画图片
本帖则将讨论如何在MFC的对话框里显示GIF动画图片.一些关于传统控件的美化方法正在研究当中会陆续发帖的. 这是本帖用到的一个VS2008例程. 附件 GifPicture.rar (138.1 ...
- Jquery实现无刷新DropDownList联动
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...
- string.Format字符串格式化说明
1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...
- 如何让maven 将工程依赖的jar 复制到WEB-INF/lib 目录下
1.在默认生命周期的compile阶段执行 maven-dependency-plugin:copy-dependencies命令即可:<plugin><groupId>org ...
- android:scaleType="matrix"布局文件载入图片时候的显示方式
android:scaleType="center" 以原图的几何中心点和ImagView的几何中心点为基准,按图片的原来size居中显示,不缩放,当图片长/宽超过View的长/宽 ...
- X86平台简称
1.PCH:PCH全称为Platform Controller Hub,是intel公司的集成南桥.AMD SB700/710/750 http://support.amd.com/TechDocs ...
- solr 简单搭建 数据库数据同步(待续)
原来在别的公司负责过文档检索模块的维护(意思就是不是俺开发的啦). 所以就略微接触和研究了下文档检索. 文档检索事实上是全文检索.是通过一种技术把N多文档进行一定规律的分割归类,然后创建易于搜索的索引 ...