1. 程式人生 > >odoo自定義報表

odoo自定義報表

核心目錄結構 1.建立模板檔案   即上圖的report_template.xml <?xml version="1.0" encoding="utf-8"?> <openerp>     <data>         <template id="report_receipt_template">             <t t-call="report.html_container">                 <t t-call="report.external_layout">                     <div class="page">                         <h2>財務收據</h2>                         <h3>收據內容</h3>                         <p>姓名:<t t-esc="name"/></p>                         <p>收費:<t t-esc="price"/></p>                     </div>                 </t>             </t>         </template>     </data> </openerp> 2.將模板新增到列印按鈕  (menu=True  新增到頂部列印) <?xml version="1.0" encoding="utf-8"?> <openerp>     <data>         <report id="report_receipt"                 model="jm.tju.student.charge"                 string="列印收據"                 report_type="qweb-html"                 name="finance.report_receipt"                 menu="True"/>     </data> </openerp> 3.寫控制函式   注意:_name=report.<模組名>.<第2步中的id>  report.render('<模組名>.<第1步中的id>', docargs)               self.id = 勾選的記錄的id # _*_ coding: utf-8 _*_ from openerp import models, fields, api class Report_receipt(models.AbstractModel):     _name = "report.finance.report_receipt"     @api.multi     def render_html(self, data=None):         report = self.env['report']         report_obj = self.env['jm.tju.student.charge'].browse(self.id)[0]         name = report_obj.name_show         price = 0         for line in report_obj.fee_line:             if(line.printing == True):                 price += line.fee_charged                 line.printed = True                 line.printing = False         docargs = {             "name": name,             "price": price         }         return report.render('finance.report_receipt_template', docargs) 4.自定義按鈕呼叫列印   <模組名>.<第1步中id> return self.env['report'].get_action(self, 'finance.report_receipt')