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" 樣式效果展示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM