odoo中的Qweb自定义标头

时间:2018-09-21 07:37:55

标签: python pdf odoo qweb

我现在有PDF格式的qweb报告。但是,如果我的报告(例如销售订单)有一页以上,则标题位于每个页面上。

首页标题上仅显示一个字段。其他字段在每个页面标题上重复。 如何只在第一页上放置一个字段标题? / h3标记/

谢谢 这是我的代码:

<template id="payment_header">
        <div class="header">
            <div style="border: 1px solid black;">
                <div class="col-xs-3" style="border: 1px solid black;">
                    <table>
                        <tr class="text-left">
                            <ul class="list-inline">
                                <li>
                                    <span class="page"/>
                                </li>
                                <li>/</li>
                                <li>
                                    <span class="topage"/>
                                </li>
                            </ul>
                        </tr>
                        <tr>
                            <span>SHOP:</span>
                            <span t-esc="warehouse"/>
                        </tr>
                    </table>

                </div>
                <div>
                    <div class="center">
                        **<h3 class="text-center">
                            <font color="white">Payment</font>
                        </h3>**
                    </div>
                </div>
                <div class="col-xs-4 pull-right" style="margin-top:20px; font-size: 12px; border: 1px solid black;">
                    <span>Period</span>
                    <span t-esc="date_to" t-field-options="{'format': 'yyyy/MM/dd'}"/> ~
                    <span t-esc="date_from" t-field-options="{'format': 'yyyy/MM/dd'}"/>
                </div>
            </div>
        </div>
    </template>

1 个答案:

答案 0 :(得分:-1)

我找到了这个免费的Odoo插件。它可能会帮助您。

https://apps.openerp.com/apps/modules/10.0/report_qweb_element_page_visibility/

在此示例附件中,您可以添加一些Javascript代码来报告XML。

这是代码示例

layouts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <template id="minimal_layout" inherit_id="report.minimal_layout">
        <xpath expr="//t[@t-if='subst is True']" position="replace">
            <t t-if="subst is True">
                <script>
                    function subst() {
                        var vars = {};
                        var x = document.location.search.substring(1).split('&amp;');
                        for (var i in x) {
                            var z = x[i].split('=', 2);
                            vars[z[0]] = unescape(z[1]);
                        }
                        var x=['frompage', 'topage', 'page', 'webpage', 'section', 'subsection', 'subsubsection'];
                        for (var i in x) {
                            var y = document.getElementsByClassName(x[i]);
                            for (var j=0; j&lt;y.length; ++j)
                                y[j].textContent = vars[x[i]];
                        }
                        var operations = {
                            'not-first-page': function (elt) {
                                elt.style.visibility = (vars.page === vars.frompage) ? "hidden" : "visible";
                            },
                            'not-last-page': function (elt) {
                                elt.style.visibility = (vars.page === vars.topage) ? "hidden" : "visible";
                            },
                            'first-page': function (elt) {
                                elt.style.visibility = (vars.page === vars.frompage) ? "visible" : "hidden";
                            },
                            'last-page': function (elt) {
                                elt.style.visibility = (vars.page === vars.topage) ? "visible" : "hidden";
                            },
                        };
                        for (var klass in operations) {
                            var y = document.getElementsByClassName(klass);
                            for (var j=0; j&lt;y.length; ++j)
                                operations[klass](y[j]);
                        }
                    }
                </script>
            </t>
        </xpath>
    </template>
</odoo>

然后将以下代码添加到__manifest __。py:

'data': [
    'views/layouts.xml',
],