带有docIf的有条件企业RML标头

时间:2016-01-27 09:42:42

标签: python openerp openerp-7 rml

逗人,

我们要求仅在PDF上的业务单据的第一页(例如发票,销售报价单,销售订单)上打印用户定义的公司标题。 PDF报告的所有其他页面都必须包含我们的公司徽标。

很幸运找到post of Brett Lehrer我尝试使用

来实现这一目标
<header>
    <pageTemplate>
        <frame id="first" x1="1.3cm" y1="3.0cm" height="21.7cm" width="19.0cm"/>
        <stylesheet>
            <!-- style definitions in here -->
        </stylesheet>
        <pageGraphics>
            ...
            <!-- corporate logo definition in here -->
            ...
            <docIf cond="doc.page==1">
                ...
                <!-- all corporate contact data in here -->
                ...
            </docIf>
        </pageGraphics>
    </pageTemplate>
</header>

在自定义公司标头RML定义中。

进一步修改了函数./odoo/openerp/report/render/rml2pdf/trml2pdf.py中的文件def _flowable(...)以处理<docIf>标记,如下所示

elif node.tag == 'hr':
    width_hr=node.get('width') or '100%'
    color_hr=node.get('color')  or 'black'
    thickness_hr=node.get('thickness') or 1
    lineCap_hr=node.get('lineCap') or 'round'
    return platypus.flowables.HRFlowable(width=width_hr,color=color.get(color_hr),thickness=float(thickness_hr),lineCap=str(lineCap_hr))
##### edit-start ####
elif node.tag == 'docIf':
    return platypus.flowables.DocIf(node.get('cond'), self.render(node))
##### edit-end ####
else:
    sys.stderr.write('Warning: flowable not yet implemented: %s !\n' % (node.tag,))
    return None

但这导致所需的结果:

公司标题打印在PDF上,而每个页面上的<docIf>标记内没有任何定义。似乎条件永远变为真。

几天的网络研究现在没有结果。

你们中的任何人可能已经解决了这样的需求,或者在OpenERP / odoo中使用条件RML输出?

你能帮忙吗?您的意见/想法非常感谢。 感谢

1 个答案:

答案 0 :(得分:0)

我只是评论,但我不允许。 ^^ 我认为不可能使用带有页码的docIf来更改布局,因为rml将页码作为最后一步处理。 (我猜?!) 我也尝试了它并没有让它发挥作用。

长话短说我有同样的问题。我这样解决了。 Link

只要您只想更改第一页就应该有效。

MFG