关注各种黑科技
B站UP主,编程教学,游戏玩家,挂B,金牛座

Odoo打印报表

从odoo8.0开始使用基于Qweb,Bootstrap和Wkhtmltopdf的全新报表引擎。 一份报表由两个元素构成: 在ir.actions.report.xml中定义报表记录,使用<report>定义报表生成的参数。
<report
    id="account_invoices"
    model="account.invoice"
    string="Invoices"
    report_type="qweb-pdf"
    name="account.report_invoice"
    file="account.report_invoice"
    attachment_use="True"
    attachment="(object.state in ('open','paid')) and
        ('INV'+(object.number or '').replace('/','')+'.pdf')"
/>
Qweb view定义报表样式
<t t-call="report.html_container">
    <t t-foreach="docs" t-as="o">
        <t t-call="report.external_layout">
            <div class="page">
                <h2>Report title</h2>
            </div>
        </t>
    </t>
</t>
这里docs是从context发送过来的变量,代表报表内容记录 另外还有user代表打印此报表的人   创建的报表可以通过html和pdf格式直接访问 http://localhost:8069/report/html/account.report_invoice/1 http://localhost:8069/report/pdf/account.report_invoice/1   注意 生成pdf需要服务端安装wkhtmltopdf程序 有时候打印的报表样式丢失,需要正确设置相关参数。 report.url = http://localhost:8069 如果你的odoo有使用反向代理,你可以设置url路径为本地访问。 web.base.url.freeze=True 样式路径通过web.base.url参数取得,但是有时在不同用户登录导致其发生变化,取到不一样的值,可以锁住设定。   练习 为session制作报表, 包括 session名称, 开始结束时间, 出席学生。 openacademy/__openerp__.py
      'views/openacademy.xml',
        'views/partner.xml',
        'views/session_workflow.xml',
        'reports.xml',
    ],
  openacademy/reports.xml
<openerp>
<data>
    <report
        id="report_session"
        model="openacademy.session"
        string="Session Report"
        name="openacademy.report_session_view"
        file="openacademy.report_session"
        report_type="qweb-pdf" />
    <template id="report_session_view">
        <t t-call="report.html_container">
            <t t-foreach="docs" t-as="doc">
                <t t-call="report.external_layout">
                    <div class="page">
                        <h2 t-field="doc.name"/>
                        <p>From <span t-field="doc.start_date"/> to <span t-field="doc.end_date"/></p>
                        <h3>Attendees:</h3>
                        <ul>
                            <t t-foreach="doc.attendee_ids" t-as="attendee">
                                <li><span t-field="attendee.name"/></li>
                            </t>
                        </ul>
                    </div>
                </t>
            </t>
        </t>
    </template>
</data>
</openerp>
  http://127.0.0.1:8069/report/html/openacademy.report_session_view/ http://127.0.0.1:8069/report/pdf/openacademy.report_session_view/   参考 https://www.odoo.com/documentation/8.0/howtos/backend.html#printed-reports https://www.odoo.com/documentation/10.0/reference/qweb.html https://www.odoo.com/documentation/10.0/reference/reports.html
转载请注明出处
分享到: 更多 (0)

评论 0