2016-05-17 24 views
0

我找不到解釋我如何在openerp視圖中執行代碼(c#示例)的地方。嵌套的語法如果openerp

IF(type != 'out_refund' AND (state == "open" OR !sent)){ 
    «print» 
} 

目前,我有這樣的代碼,但它不工作:

<button name="invoice_pay_customer" type="object" string="Register Payment" 
attrs="{'invisible': ['&',('type','=','out_refund'),'|', ('state','!=','open'), ('sent','=',True) ] }" 
groups="base.group_user"/> 

我到底做錯了什麼?

回答

3

De Morgan's laws
〜(A和B)=〜A或〜乙
〜(A或B)=〜A和〜乙

如果B =(C或〜d)和A到如果你想看到它,那麼:
〜A和(C或〜D),所以當你不想看到它時:
〜(〜A和(C或〜D)) = A或〜(C或〜d)= A或(〜C和d)
現在,你必須把它轉換成polish notation或(和〜CD)

答:類型== 'out_refund'
B:狀態== 「打開」
C:發送==真

注:XML,你需要的地方使用&amp;&。這將是openERP的工作。
我假設typestatesent是一個字段,在其他情況下這是行不通的。

attrs="{'invisible': ['|', ('type','=','out_refund'), '&amp;', ('state','!=','open'), ('sent','=',True) ] }" 
+0

我的問題是«&amp»表示法,我總是假定&on代碼。 另一件事,類型,狀態和發送必須使用引號:'type','=','out_refund'。 謝謝。 – JoseSilva