2014-12-10 5 views
0

act_window에 대한 특수한 양식보기를 만들려고하는데 대신 일반 양식보기가 나타납니다. 이것이 내가 한 일입니다.양식보기를 기본보기의 기본보기로 정의했지만 표시되지 않습니다. 왜?

<record id="mrp_bom_form_view_master" model="ir.ui.view"> 
    <field name="name">mrp.bom.master</field> 
    <field name="inherit_id" ref="mrp.mrp_bom_form_view"/> 
    <field name="model">mrp.bom</field> 
    <field name="mode">primary</field> 
    <field name="arch" type="xml"> 
    <field name="name" position="after"> 
     <h1>Show me.</h1> 
    </field> 
    </field> 
</record> 

<record model="ir.actions.act_window" id="mrp_bom_form_action_base"> 
    <field name="name">Master Bill of Materials</field> 
    <field name="res_model">mrp.bom</field> 
    <field name="view_type">form</field> 
    <field name="view_mode">form,tree</field> 
    <field name="view_id" ref="mrp_bom_form_view_master"/> 
    <field name="search_view_id" ref="mrp.view_mrp_bom_filter"/> 
</record> 

<record model="ir.actions.act_window" id="mrp_bom_form_action_master_product"> 
    <field name="name">Master Products</field> 
    <field name="domain">[('is_master', '=', True), ('category', '=', 'product')]</field> 
    <field name="res_model">mrp.bom</field> 
    <field name="inherit_id" ref="mrp_bom_form_action_base"/> 
</record> 

<menuitem 
     action="mrp_bom_form_action_master_product" 
     id="menu_manufacturing_master_product" 
     parent="menu_manufacturing_sana_master" 
     name="Products" 
     sequence="1"/> 

왜 작동하지 않습니까?

답변

1

당신은 이 fields_view_get 방법

def fields_view_get(self, cr, uid, view_id=None, view_type=False, context=None, toolbar=False, submenu=False): 
    mod_obj = self.pool.get('ir.model.data') 
    if context is None: context = {} 

    if view_type == 'form': 
     if not view_id and context.get('invoice_type'): 
      if context.get('invoice_type') in ('out_invoice', 'out_refund'): 
       result = mod_obj.get_object_reference(cr, uid, 'account_voucher', 'view_vendor_receipt_form') 
      else: 
       result = mod_obj.get_object_reference(cr, uid, 'account_voucher', 'view_vendor_payment_form') 
      result = result and result[1] or False 
      view_id = result 
     if not view_id and context.get('line_type'): 
      if context.get('line_type') == 'customer': 
       result = mod_obj.get_object_reference(cr, uid, 'account_voucher', 'view_vendor_receipt_form') 
      else: 
       result = mod_obj.get_object_reference(cr, uid, 'account_voucher', 'view_vendor_payment_form') 
      result = result and result[1] or False 
      view_id = result 

    res = super(account_voucher, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu) 
    doc = etree.XML(res['arch']) 

    if context.get('type', 'sale') in ('purchase', 'payment'): 
     nodes = doc.xpath("//field[@name='partner_id']") 
     for node in nodes: 
      node.set('context', "{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}") 
      if context.get('invoice_type','') in ('in_invoice', 'in_refund'): 
       node.set('string', _("Supplier")) 
    res['arch'] = etree.tostring(doc) 
    return res 

또는 당신이 voucher_payment_receipt_view.xml & account_voucher.py시 모양을 가질 수 이해 더 나은

<record model="ir.actions.act_window.view" id="mrp_bom_form_view_master_form"> 
     <field name="sequence" eval="1"/> 
     <field name="view_mode">tree</field> 
     <field name="view_id" ref=module.xml_id_tree_view/> 
     <field name="act_window_id" ref="mrp_bom_form_action_base"/> 
    </record> 

    <record model="ir.actions.act_window.view" id="mrp_bom_form_view_master_tree"> 
     <field name="sequence" eval="2"/> 
     <field name="view_mode">form</field> 
     <field name="view_id" ref=module.xml_id_form_view/> 
     <field name="act_window_id" ref="mrp_bom_form_action_base"/> 
    </record> 

을 사용할 수 있습니다 사용해야 account_voucher 모듈

+0

감사합니다. 나는'act_window.view'를 보냈습니다. –