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. ionic 调用手机的打电话功能

    1.需求描述 在ionic项目用调用手机的打电话功能.开始还想找cordova和ng-cordova的插件那,现在H5实现起来特别方便. 2.准备 在cordova中所有的URL Schemes 都是 ...

  2. tomcat做成服务

    如果Tomcat是安装版的话服务就已经有了,那么解压版的tomcat(我就经常这么做)没服务怎么办了?     手动把tomcat做成服务方法:      1.环境变量配置jdk      2.运行c ...

  3. Android数据库升级实例

    第一部分 Andoird的SQLiteOpenHelper类中有一个onUpgrade方法.帮助文档中只是说当数据库升级时该方法被触发.经过实践,解决了我一连串的疑问: 1. 帮助文档里说的“数据库升 ...

  4. List多个字段标识过滤

    class Program {  public static void Main(string[] args) { List<T> list = new List<T>(); ...

  5. cocos2d-x-3.0创建项目

    之前一直用的是cocos2d-x-2.3版本号,使用tools里面的create-project.py脚本能够非常方便的创建项目.今天更新为3.0后,发现新版创建项目的方式有了非常大的改变,于是在这里 ...

  6. hibernate开发流程

    开发流程,注意:每个hibernate版本在集成的时候是不太一样的.本次使用的是hibernate-distribution-3.6.10.Final-dist 一.开发流程 1)在数据库中创建表,代 ...

  7. [原]MS SQL表字段自增相关的脚本

    --查询表是否有自增字段 SELECT OBJECTPROPERTY(OBJECT_ID('[表名]'), 'TableHasIdentity') --查询表的自增字段 SELECT COLUMN_N ...

  8. git配置文件读取顺序

    作者:zhanhailiang 日期:2014-11-03 git包括三个配置文件: /etc/gitconfig 文件:系统中对全部用户都普遍适用的配置. 若使用git config 时用' –sy ...

  9. Hadoop-2.2.0中文文档—— Shell命令

    FS Shell 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 全部的的FS shell命令使用URI路径作为參数.URI格式是scheme: ...

  10. Delphi记录record中的变体

    program Day4; {$APPTYPE CONSOLE} uses SysUtils, Util in 'Util.pas'; type TPerson = packed record ID ...