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


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

你可能感兴趣的:(工作流,odoo)