zoukankan      html  css  js  c++  java
  • odoo 工作流

    odoo工作流

    介绍

    • 新版本的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" 样式效果展示。

  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/chenshuquan/p/10528649.html
Copyright © 2011-2022 走看看