Button 记账。发票表格';不可编辑';当发票状态为';支付';

Button 记账。发票表格';不可编辑';当发票状态为';支付';,button,hide,openerp,edit,odoo,Button,Hide,Openerp,Edit,Odoo,当发票状态为“已付款”时,我尝试使account.invoice表单“不可编辑”。 这是我在acount.invoice类中的代码: def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False,submenu=False): result=super(account_invoice, self).fields_view_get(cr, uid, vie

当发票状态为“已付款”时,我尝试使account.invoice表单“不可编辑”。 这是我在acount.invoice类中的代码:

def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False,submenu=False):
        result=super(account_invoice, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu)
        if(view_type=='form'):
            invoice=self.pool.get('account.invoice')
            active_id=context.get('active_id',False)
            current_state=invoice.browse(cr,uid,active_id).state
            if current_state=="paid":
                result['arch']='''<form string="Invoice" edit="false" ....................></form>'''
        return result
def fields\u view\u get(self、cr、uid、view\u id=None、view\u type='form',context=None、toolbar=False、submenu=False):
结果=超级(帐户\发票,自我)。字段\视图\获取(cr、uid、视图\ id、视图\类型、上下文、工具栏、子菜单)
如果(视图类型=='form'):
发票=self.pool.get('account.invoice')
active\u id=context.get('active\u id',False)
当前\u状态=发票。浏览(cr、uid、活动\u id)。状态
如果当前状态==“已支付”:
结果['arch']=''
返回结果
但是它看起来像context.get('active_id',False)总是返回“False”


提前感谢:)

您可以编辑不希望他人编辑的字段的XML,并为其赋予如下属性:

<field name="your_field" attrs="{'readonly':[('state','in','paid')]}"/>

或者,您可以从模型继承write方法并插入检查以查看当前状态并引发异常

编辑: 您可以通过编辑表单来隐藏/删除按钮

<form string="NAMEOFFORM" create="false" edit="false" version="7.0"></form>


当我说“不可编辑”表单时,我的意思是隐藏或禁用“编辑按钮”。嘿,谢谢你的回答。这是正确的,但它会对每个account.invoice表单隐藏编辑按钮。我试图仅在发票状态为“已付款”时隐藏编辑按钮。@leibstandarte你能尝试将最后一部分与第一部分的属性相结合吗?我做到了,但不起作用:false true