2014-12-18 1 views
0

Я разместил кнопки (значок зеленой стрелки) в древовидной структуре. Я хочу показать кнопку, только если в записи есть Билль (BOM). У меня есть логика, как это выяснить, но не знаю, как выборочно отображать или скрывать кнопку.Выборочно отобразить или скрыть кнопку в дереве в OpenERP

Кроме того, при загрузке представления необходимо активировать действие кнопки отображения или скрытия. Как я могу это сделать, поскольку нет события view_on_load, например, в Visual Basic?

Вот вид дерева:

enter image description here

Вот как кнопки определены в XML-файле:

<!-- mrp_bom --> 
     <record id="adamson_mrp_bom_form_view" model="ir.ui.view"> 
      <field name="name">adamson.mrp.bom.form.view</field> 
      <field name="model">mrp.bom</field> 
      <field name="type">form</field> 
      <field name="inherit_id" ref="mrp.mrp_bom_form_view" /> 
      <field name="arch" type="xml"> 
       <xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='sequence']" position="before" > 
        <button class="oe_inline oe_stat_button" type="object" string="Go!" icon="gtk-go-forward" name="action_go" /> 

       </xpath> 

Вот логика, как найти, если есть BOM или не для конкретного продукта. Обратите внимание на список bom_ids, который, скорее всего, будет иметь только одно значение. Эта логика используется для действия кнопки, но ее можно использовать для выбора кнопки show или нет.

class mrp_bom_line(osv.osv): 
    _inherit = 'mrp.bom.line' 

    def action_go(self, cr, uid, ids, context=None): 
     bom_obj = self.pool.get('mrp.bom') 

     for bom_line in self.browse(cr, uid, ids, context=context): 
      if bom_line.product_id.default_code > '300': 
       bom_ids = bom_obj.search(cr, uid, [('product_id', '=', bom_line.product_id.id)], context=context) 
       if bom_ids: 

ответ

2

Вы можете использовать AttrS, например

attrs="{'invisible':[('selection_field_name','=','value')]}" 

Примечание: мы должны дать значение, которое хранить в базе данных.

попробовать это,

<xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='sequence']" position="before" > 
    <button class="oe_inline oe_stat_button" type="object" string="Go!" icon="gtk-go-forward" name="action_go" attrs="{'invisible':[('type','=','normal')]}" /> 
</xpath> 
+0

Я не знаю, как выбрать 'selection_field_name'. По этой причине я обновил свой вопрос с помощью логического кода. Если вы можете дать мне пример, это было бы здорово. Благодаря! – Nebojsa

+0

Могу ли я узнать, из какого поля условия вы хотите скрыть/показать кнопку? –

+0

В коде есть список bom_ids, который является индикатором, если конкретный продукт имеет спецификацию (спецификацию). Этот список, скорее всего, будет иметь только один элемент. Если список пуст, сделайте кнопку невидимой. Если в списке bom_ids есть элемент, нажмите кнопку. – Nebojsa