2016-12-28 61 views
0

我試圖執行一個函數來填充新的樹視圖。我需要執行該功能並重定向到僅由一個按鈕完成的樹視圖。請幫助我做到這一點。Openerp在點擊按鈕上點擊其他視圖

我的功能與按鈕

<record model="ir.ui.view" id="edit_leave_score_card_form"> 
      <field name="name">leave.score.card.form</field> 
      <field name="model">leave.score.card</field> 
      <field name="arch" type="xml"> 
       <form string="Leave Score Card" create="false" edit="false" version="7.0"> 
       <sheet> 
        <button string="Generate" type="object" name="populate_values" class="oe_highlight"/>       


        </sheet> 
        </form> 
      </field> 
     </record> 

樹視圖,我需要重定向

def populate_values(self, cr, uid, ids, context={}): 

     result = {'value': {}} 
     today = datetime.datetime.now() 
     tt=today.date() 
     emps=self.pool.get('hr.employee').search(cr, uid, [('current_status','=','active')], context=context) 
     if emps: 
      #... 
      #... 
      #... 
      return { 
       'name':_("leave.score.card.tree"), 
       'view_mode': 'tree', 
       'view_id': '%(open_leave_score_card_tree)d', 
       'views': [('tree'),('graph')], 
       'view_type': 'graph', 
       'res_id' : '%(open_leave_score_card)d', 
       'res_model': 'leave.score.card', 
       'type': 'ir.actions.act_window', 
       'target': 'new', 
      } 

表單視圖

<record model="ir.ui.view" id="view_leave_score_card_tree"> 
      <field name="name">leave.score.card.tree</field> 
      <field name="model">leave.score.card</field> 
      <field name="arch" type="xml"> 

      <tree string="Leave Score Card To the Date" create="false" edit="false" colors="red:available_medical &lt; 0.0; red:available_casual &lt; 0.0">      
         <field name="employee_id" /> 
         <field name="category_id" /> 
         <field name="taken_medical" /> 
         <field name="taken_casual" /> 
         <field name="taken_annual" /> 
         <field name="taken_spc" />  
         <field name="available_medical" /> 
         <field name="available_casual" /> 
         <field name="available_annual" /> 
         <field name="available_spc" /> 
         <field name="sec_id" invisible="1" /> 


       </tree> 
      </field> 
     </record> 

操作Windows

<record id="open_leave_score_card" model="ir.actions.act_window"> 
      <field name="name">Leave Score Card Form</field> 
      <field name="type">ir.actions.act_window</field> 
      <field name="res_model">leave.score.card</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">form</field> 

     </record> 

     <record id="open_leave_score_card_tree" model="ir.actions.act_window"> 
      <field name="name">Leave Score Card Tree</field> 
      <field name="type">ir.actions.act_window</field> 
      <field name="res_model">leave.score.card</field> 
      <field name="view_type">form</field>    
      <field name="view_mode">tree,graph</field> 
      <field name="view_id" eval="view_leave_score_card_tree"/> 
      <field name="search_view_id" ref="view_leave_score_card_search"/> 
     </record> 

請讓我知道我做錯了,因爲按鈕呼叫完全不是重定向

回答

1

無需編寫任何功能。我知道你想打印員工的記分卡,而你點擊按鈕。

記分卡的更新動作如下。

<record id="open_leave_score_card_tree" model="ir.actions.act_window"> 
    <field name="name">Leave Score Card Tree</field> 
    <field name="type">ir.actions.act_window</field> 
    <field name="res_model">leave.score.card</field> 
    <field name="view_type">form</field>    
    <field name="view_mode">tree,graph</field> 
    <field name="view_id" eval="view_leave_score_card_tree"/> 
    <field name="search_view_id" ref="view_leave_score_card_search"/> 
    <field name="context">{ 
       'search_default_employee_id': [active_id], 
       'default_employee_id': active_id, 
       'active_test': False,} 
    </field> 
</record> 

然後在xml中更改按鈕代碼如下。

<button string="Generate" type="action" name="%(open_leave_score_card_tree)d" class="oe_highlight"/>       

刪除功能不需要它。如果你想在不改變任何東西的情況下用現有的代碼來完成,那麼在你從函數返回的動態行爲中設置域。

在你的函數中你寫錯了view_type,如果你想返回列表視圖,那麼它應該是form not graph。

def populate_values(self, cr, uid, ids, context={}): 
    today = datetime.datetime.now() 
    tt=today.date() 
    emps=self.pool.get('hr.employee').search(cr, uid, [('current_status','=','active')], context=context) 
    if emps: 
     return { 
      'name':_("leave.score.card.tree"), 
      'view_mode': 'tree', 
      'view_id': '%(open_leave_score_card_tree)d', 
      'views': [('tree'),('graph')], 
      'view_type': 'form', 
      'res_id' : '%(open_leave_score_card)d', 
      'res_model': 'leave.score.card', 
      'type': 'ir.actions.act_window', 
      'domain' : [('employee_id','in', ids)], 
      'target': 'new', 
     } 
    return True