odoo工做流
介紹
-
新版本的odoo開始減小workflow的使用,推薦使用workflow-ish的方式來處理工做流過程api
-
不少模塊中仍是使用到工做流,這裏我記錄一個簡單的實例,歡迎你們給出建議。數組
-
在本實例中工做流能夠分爲兩個部分,一部分是「view視圖」,一部分是「model方法」和相關的「流程字段」dom
定義流程流轉字段
state = fields.Selection([ ('draft', '草稿'), ('read', '已閱'), ('write', '已寫心得'), ('submit', '已上傳心得')], string='Status', default='draft', readonly=True, copy=False, track_visibility='onchange')
- Selection 是一個多值選擇的字段類型,裏面能夠定義一個數組集。
odoo工做流
-
String 是一個字段前臺顯示的值。post
-
default 是一個默認的初始的狀態新建立數據後會默認加載這個狀態初始值。ui
-
track_visibility 流程變動可見性。spa
-
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顯示可見,便可用。code
-
class="oe_highlight" 是引入的 button 的樣式,可自定義樣式並引入。orm
-
name="button_done" 是調用模型中的方法字段,如該方法調用後臺 def button_done(self) 方法。xml
-
string="活動已閱" String是該狀態按鈕顯示的值,最好定義爲英文,而後進行國際化i18n翻譯。
-
<field name="state"... 是工做流程流轉的狀態值顯示,到哪一個階段顯示到哪一個階段的值。
-
widget="statusbar" 樣式效果展現。