乐趣区

odoo12 工作流

介绍

新版本的 odoo 开始减少 workflow 的使用,推荐使用 workflow-ish 的方式来处理工作流过程
很多模块中还是使用到工作流,这里我记录一个简单的实例,欢迎大家给出建议。
在本实例中工作流可以分为两个部分,一部分是“view 视图”,一部分是“model 方法”和相关的“流程字段”

定义流程流转字段
state = fields.Selection([
(‘draft’, ‘ 草稿 ’),
(‘read’, ‘ 已阅 ’),
(‘write’, ‘ 已写心得 ’),
(‘submit’, ‘ 已上传心得 ’)],
string=’Status’, default=’draft’, readonly=True, copy=False, track_visibility=’onchange’)

Selection 是一个多值选择的字段类型,里面可以定义一个数组集。
odoo 工作流

String 是一个字段前台显示的值。
default 是一个默认的初始的状态新创建数据后会默认加载这个状态初始值。
track_visibility 流程变更可见性。
readonly 是定义改状态值是否只读。

定义工作流程的 def
@api.one
def button_done(self):
self.state = ‘read’
self.message_post(‘ 变更——————草稿 ——> 已阅 ’, subtype=’mail.mt_note’)

@api.one
def button_confirm(self):
self.state = ‘submit’
self.message_post(‘ 变更——————已写心得 ——> 已上传心得 ’, subtype=’mail.mt_note’)

for rel in self.employee_ids:
domain = [(‘id’, ‘=’, rel.id)]
employee = self.env[‘files.employee’].search(domain)
data = {
‘name’: employee.name,
’email’: employee.work_email,
‘event_id’: self.id,
‘wx_number’: employee.wx_number,
}
self.env[‘activity.registration’].create(data)

定义页面的 View
<record model=”ir.ui.view” id=”view_activity_form”>
<field name=”name”>activity.event.form</field>
<field name=”model”>activity.event</field>
<field name=”arch” type=”xml”>
<form string=” 党员活动 ”>
<header>
<button string=” 活动已阅 ” name=”button_done” states=”draft” type=”object” class=”oe_highlight” groups=”base.group_user”/>
<button string=” 已上传活动心得 ” name=”button_confirm” states=”read” type=”object” class=”oe_highlight” groups=”base.group_user”/>
<field name=”state” widget=”statusbar” statusbar_visible=”draft,confirm,done”/>
</header>
<sheet>

states=”draft” 是 button 显示与否的判断条件,如果值是这个值,则改 button 显示可见,即可用。
class=”oe_highlight” 是引入的 button 的样式,可自定义样式并引入。
name=”button_done” 是调用模型中的方法字段,如该方法调用后台 def button_done(self) 方法。
string=” 活动已阅 ” String 是该状态按钮显示的值,最好定义为英文,然后进行国际化 i18n 翻译。
<field name=”state”… 是工作流程流转的状态值显示,到哪个阶段显示到哪个阶段的值。
widget=”statusbar” 样式效果展示。

退出移动版