2016-02-19 220 views
1

我試圖創建一個報告按鈕動態嚮導:創建鏈接下載PDF文件

  • 觀點:account_payment.view_payment_order_form
  • 型號:payment.order

會計 - >付款 - > Rec。付款訂單 - >表格

我的目標是獲取'line_ids'的每一行並打開一個嚮導,其中包含每行'line_ids'的下載鏈接。

目前我正在嘗試創建一個動態嚮導,但沒有運氣。我不知道是否有可能做到這一點。

感謝您的答案。

+0

你的意思是動態?如果你的意思是你需要一個嚮導來提供數據,你可以,但是你需要指定更多。 – dccdany

+0

當嚮導出現時,我需要動態地創建一些字段,並鏈接下載PDF文件。每個鏈接都是payment.order模型的'line_id'。 – Elektro

回答

0

嚮導模式:

class my_wizard(osv.TransientModel): 
    _name = 'my_wizard' 

    _columns = { 
     'line_ids': fields.one2many('payment.order', 'Payment order'), 
    } 

Call嚮導(在 「payment.order」 模型):

def call_wizard(self, cr, uid, ids, context): 

     my_wizard_form_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_payment', 'my_wizard_form')[1] 

     lines = [] 
     for line in self.browse(cr, uid, ids, context).line_ids: 
      lines.append([0, 0, {'line_id': line.id}]) 

     #To create records dyamically 
     ctx={'default_line_ids': lines} 

     return { 
      'type': 'ir.actions.act_window', 
      'view_type': 'form', 
      'view_mode': 'form', 
      'res_model': 'my_wizard', 
      'views': [(my_wizard_form_id, 'form')], 
      'view_id': my_wizard_form_id, 
      'target': 'new', 
      'context': ctx, 
     } 

嚮導觀點:

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <record id="my_wizard_form" model="ir.ui.view"> 
      <field name="name">my_wizard.form</field> 
      <field name="model">my_wizard</field> 
      <field name="type">form</field> 
      <field name="arch" type="xml" > 
       <form> 
        <field name="line_ids" widget="one2many_list"> 
           <tree editable="bottom"> 
            <field name="id"/> 
            <!-- define "download" function in "payment.line" 
            <button name='download' type='object' string='download' /> 
           </tree> 
        </field> 
         <field name='' /> 
        </group> 
       </form> 
      </field> 
     </record> 

     <record id="action_my_wizard_form" model="ir.actions.act_window"> 
      <field name="name"></field> 
      <field name="type">ir.actions.act_window</field> 
      <field name="res_model">my_wizard</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">form</field> 
      <field name="target">new</field> 
     </record> 
    </data> 
</openerp> 

按鈕調用嚮導(payment_order視圖):

<button name='call_wizard' type="object" string="WIZARD" /> 

您應該在payment.line模型中創建download方法。

def download(self, cr, uid, ids, context): 
    #To open an URL 
    '''return { 
     "type": "ir.actions.act_url", 
     "url": "LINK TO PDF", 
     "target": "self", 
    } 
    ''' 

    #To generate a report 
    datas = { 
     'ids': ids, 
     'model': 'dossier', 
     'form': self.read(cr, uid, ids[0], context=context) 
    } 

    return { 
     'type': 'ir.actions.report.xml', 
     'report_name': 'my_report', 
     'datas': datas, 
     'nodestroy': True 
    } 

我希望這會有用。

+0

謝謝,我要儘快測試。如果它有效(似乎是),我會打勾作爲答案。 – Elektro

+0

@Elektro這是否有用。 – Zety

+0

是的,抱歉,這個延遲。 – Elektro

相關問題