嵌套 if openerp 的语法

Syntax of nested if openerp

我找不到一个地方来解释我如何在 openerp 的视图中执行下面的代码(c# 示例)。

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"/>

我做错了什么?

De Morgan's laws:
~(A 和 B) = ~A 或 ~B
~(A 或 B) = ~A 和 ~B

如果 B=(C 或 ~D) 且 A 为 ~A,则:
~A and (C or ~D) 当你想看的时候,所以当你不想看的时候是:
~(~A and (C or ~D)) = A or ~(C or ~D) = A or (~C and D)
现在,您必须将其转换为 polish notationOR A (AND ~CD)

A:类型 == 'out_refund'
B:状态=="open"
C: 发送 == True

注意:在XML中,您需要使用&amp;代替&。这将在 openERP 上工作。
我假设 typestatesent 是一个字段,否则这将不起作用。

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