2016-12-28 5 views
0

Я пытаюсь выполнить функцию для заполнения нового древовидного представления. Мне нужно выполнить функцию и перенаправить на представление дерева, сделанное только одной кнопкой. Пожалуйста, помогите мне с этим.Openerp Повторное использование другого вида при нажатии кнопки

Моя функция

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

древовидном, где мне нужно, чтобы получить перенаправлены

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

Действие окна

<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, это должно быть форма не графика, если вы хотите вернуть вид списка.

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 

 Смежные вопросы

  • Нет связанных вопросов^_^