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. Linux cmp命令——比较二进制文件(转)

    Linux cmp命令用于比较两个文件是否有差异. 当相互比较的两个文件完全一样时,则该指令不会显示任何信息.若发现有所差异,预设会标示出第一个不同之处的字符和列数编号.若不指定任何文件名称或是所给予 ...

  2. CLightLock:一个简单AutoLock

    原理: 标准的RAII, 利用构造函数进行加锁,利用析构函数进行解锁. #ifndef _C_LIGTHT_LOCK_HPP #define _C_LIGTHT_LOCK_HPP class CLig ...

  3. 14-spring学习-变量操作

    表达式所有操作都是可以以变量形式出现的. 观察变量的定义: package com.Spring.ELDemo; import org.springframework.expression.Evalu ...

  4. 关于Javascript表单验证

    //验证字符串非空        var Validator = {    VerityLib: {         IsNotEmpty: function (input) {        if ...

  5. android中RecycleView分页原生代码封装,无任何第三方代

    概述 RecycleView分页加载封装,简单方便,功能齐全 详细 代码下载:http://www.demodashi.com/demo/13283.html 一.场景: 在项目开发中经常使用到列表集 ...

  6. Ubuntu下设置redis让其他服务器访问

    修改redis配置文件,将 bind 127.0.0.1to bind 0.0.0.0Then restart your service (service redis-server restart) ...

  7. HTML5 学习笔记 表单属性

    HTML5新的表单属性 HTML5 的form和input 标签添加了几个新的属性 <form>新属性 autocomplete novalidate input 新属性 autocomp ...

  8. android VLayout 全面解析

    概述 前不久.阿里新开源了2个东西,Atlas和vlayout.今天我来介绍下vlayout的使用. 在介绍前,先抱怨两句,阿里放开源出来,感觉就是让我们这群人给他们找bug~~我曾遇到一个奇怪的问题 ...

  9. unity, GUI.Button texture is black

    GUI.Button(rect,tex),结果显示出来tex是黑的,原来是因为我以前在别处调用了GUI.contentColor =Color.black. 参考:http://answers.uni ...

  10. redis五种基本数据类型

    1.string类:一个key对应一个value(key:value).string类是二进制安全,可以包含任何数据(例如:图片.音乐). 2.hash类:string类型field和value的映射 ...