2017-01-27 54 views
1

我需要關於從odoo 9中的嚮導生成報告的幫助。在互聯網上我找到一個未完成的例子。我想從我的wizzard中獲取所有用戶的res.user,其中create_date(res.users中的字段)> = date_from和= < date_to。從odoo 9中的嚮導生成報告

我來源:

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <record id="view_my_wiz_form" model="ir.ui.view"> 
      <field name="name">print.report.form</field> 
      <field name="model">my.test.report</field> 
      <field name="type">form</field> 
      <field name="arch" type="xml"> 
       <form string="Print Report"> 
        <group colspan="4" > 
         <field name="date_from"/> 
         <field name="date_to" /> 
        </group>        
        <group colspan="4" col="6">      
         <button name="print_report" string="Print Users" type="object"/> 
        </group> 
       </form> 
      </field> 
     </record> 

     <record id="action_my_wiz_form" model="ir.actions.act_window"> 
      <field name="name">Print Report</field> 
      <field name="res_model">my.test.report</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">tree,form</field> 
      <field name="view_id" ref="view_my_wiz_form"/> 
      <field name="target">new</field>   
     </record> 

     <menuitem name="REPORT" id="menu_my_test_report" action="action_my_wiz_form" sequence="19"/>  
    </data> 
</openerp> 

.py文件

class my_test_report(models.Model): 

     _name = 'my.test.report' 
     _description = 'Test Report' 


     date_from = fields.Date(string = 'From') 
     date_to = fields.Date(string = 'To') 



     def print_report(self, cr, uid, ids, context=None): 
      datas = {} 
      if context is None: 
       context = {} 
      data = self.read(cr, uid, ids,['date_from', 'date_to'], context=context) 
      date_from = data[0]['date_from'] 
      date_to = data[0]['date_to'] 
      obj = self.pool.get('res.users') 
      ids = obj.search(cr, uid, [('create_date','>=',date_from),('create_date','<=',date_to)]) 
      print(ids) 
      datas = { 
        'ids': ids, 
        'model': 'res.users', 
        'form': data 
        } 
      return { 
        'type': 'ir.actions.report.xml', 
        'report_name': "XXXXXXX, 
        'datas': datas, 
       } 

Hw的創建的.py REPORT_NAME,我把XXXXXXXX從res.users幾個領域?

後運行的代碼,而

return { 
         'type': 'ir.actions.report.xml', 
         'report_name': "XXXXXXX, 
         'datas': datas, 
        } 

在控制檯中看到[3,4]

我與該XML

<?xml version="1.0" encoding="utf-8"?> 
<odoo> 
<template id="report_sasa_test"> 
    <t t-call="report.html_container"> 
     <t t-set="data_report_margin_top" t-value="12"/> 
     <t t-set="data_report_header_spacing" t-value="9"/> 
     <t t-set="data_report_dpi" t-value="110"/> 
     <t t-foreach="docs" t-as="o"> 
       <div class="page"> 

        <table class="table table-condensed"> 
         <thead> 
          <tr> 
           <th>Name</th> 
           <th>Test</th> 
          </tr> 
         </thead> 
         <tbody> 
          <tr> 
           <td><t t-esc="o.name"/></td> 
           <td><t t-esc="o.name"/></td> 
          </tr> 
         </tbody> 
        </table> 
       </div> 
     </t> 
    </t> 
</template> 
</odoo> 

但生成後的PDF嘗試,我得到兩個PDF頁面與一行我需要在一個頁面上的所有數據--->https://postimg.org/image/gbdadtrm5/

任何解決方案如何defi ne這份報告?

id | login | signature 
3 | 25.01.17 | --- 
4 | 25.01.17 | --- 

回答

0

docs變量表示在默認情況下,除非另行定義它在模型上的記錄。我沒有看到你在其他地方定義它,所以你的問題是你有t-foreach="docs",然後你創建一個頁面。 t-foreach="docs"應該包含整個報告視圖而不是頁面。看看addons/account/views/report_invoince.xml這個循環是如何工作的。

<template id="report_report_sasa_test"> 
    <t t-call="report.html_container"> 
     <t t-foreach="docs" t-as="o"> 
      <t t-call="your_module.report_sasa_test" t-lang="o.partner_id.lang"/> 
     </t> 
    </t> 
</template> 
+0

我嘗試用這個例子,但再次在兩個PDF頁面,而不是一個數據顯示https://postimg.org/image/rdzyxs7w7/ –

+0

檢查設置 - 爲您的報告>的報告,檢查使用附件變量設置爲true。這會導致報告從數據庫中重新加載,而不是重新呈現。 –

+0

由於默認值未被刪除!我正在嘗試兩個變種再次報告2 pdf頁面! –