2017-04-03 14 views
0

在我的模塊不同的工作流程我已經指出:Odoo條件

_STATES = [ 
    ('draft', 'Draft'), 
    ('to_approve_first', 'Waiting for approval'), 
    ('approved', 'Approved'), 
    ('purchase_conditions','Purchase conditions'), 
    ('create_order','Creating Order'), 
    ('to_approve_second','Approved'), 
    ('in_stock','Products in stock'), 
    ('rejected', 'Rejected') 
] 

我能得到基於窗體視圖狀態草案狀態2個不同的工作流程?例如if field iam_in boolean in draft state is true worklow將是:

   <header> 
        <button name="%(action_sale_order_reset)d" attrs="{'invisible': [('state','not in', ('to_approve_first'))]}" string="Reset" type="action" groups="purchase_request.group_purchase_request_manager"/> 
        <button name="button_to_approve_first" states="draft" string="Request approval" type="object" class="oe_highlight"/> 
        <button name="button_approved" states="to_approve_first" string="Approve" type="object" class="oe_highlight" groups="purchase_request.group_purchase_request_manager"/> 
        <button name="button_purchase_conditions" states="approved" string="Return Request" type="object" class="oe_highlight" groups="purchase_request.group_purchase_request_manager"/> 
        <button name="button_create_order" states="purchase_conditions" string="Create Order" type="object" class="oe_highlight" groups="purchase_request.group_purchase_request_user"/> 
        <button name="button_to_approve_second" states="create_order" string="Approve" type="object" class="oe_highlight" groups="purchase_request.group_purchase_request_manager"/> 
        <button name="button_in_stock" states="to_approve_second" string="Done" type="object" class="oe_highlight" groups="purchase_request.group_purchase_request_manager"/> 
        <button name="button_rejected" states="draft,purchase_conditions" string="Reject" type="object" groups="purchase_request.group_purchase_request_user"/> 
        <button name="%(action_sale_order_cancel)d" attrs="{'invisible': [('state','not in', ('to_approve_first', 'approved', 'create_order'))]}" string="Cancel with feedback" type="action" groups="purchase_request.group_purchase_request_manager"/> 
<field name="state" widget="statusbar" statusbar_visible="draft,to_approve_first,approved,rejected" statusbar_colors="{&quot;approved&quot;:&quot;green&quot;}"/> 
      </header> 

如果iam_in boolean in draft is false工作流程將縮短:

draft -> to_approve_first -> in_stock 

我怎麼能這樣做?我正在考慮兩種不同的觀點。因爲在視圖中我不能使用if .. else條件。

回答

1

您可以在attrs(不可見)中使用您的字段iam_in來顯示或隱藏按鈕。這可能是一個有點複雜,但應該工作,例如在你的按鈕button_approved

<button name="button_approved" states="to_approve_first" 
    string="Approve" type="object" class="oe_highlight" 
    groups="purchase_request.group_purchase_request_manager" 
    attrs="{'invisible': [('iam_in', '=', True)]}" /> 

這將只顯示按鈕,如果狀態是to_approve_firstiam_in=True。要求:字段iam_in必須放在模型上並在視圖中定義(不可見就足夠了)。

使用states結合使用attrs(不可見),因爲兩者都將自動結合使用。

+0

但是我仍然不能寫這樣的條件,例如當'state','!=','to_approve_second'或'state','!=','approved'時不可見按鈕「button_approved」 'iam_in','=',真。是否有可能在一個attrs領域編寫或聲明? – fueggit

+0

我試過了:attrs =「{'invisible':['&','I',('state','!=','approved'),('particip_process','=',True)('state ','!=','to_approve_second')]}「但是我得到一個錯誤,'&'符號是不可知的符號。 – fueggit