首页 > 解决方案 > Qweb PDF 有两个模型,可能吗?

问题描述

我尝试创建一个 PDF,其中包含来自两个不同模型的信息:

pos.order & pos.order.line

认为也许可以创建一个子模板并在主模板中调用它。

本地日期.xml:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
       <report 
        id="pos_report_localdate"
        model="pos.order"    
        string="Informe de ventas"
        report_type="qweb-pdf"
        name="pos_localdate.local_date_document"
        attachment_use="False"
        file="pos_localdate.local_date_document"
        menu = "True"
    />

    <report 
        id="pos_report_localdate_2"
        model="pos.order.line"    
        string="Informe de ventas 2"
        report_type="qweb-pdf"
        name="pos_localdate.local_date_document"
        attachment_use="False"
        file="pos_localdate.local_date_document"
        menu = "True"
    />

</data>

pos_localdate_report.xml:

<template id="local_date_document">
<t t-call="report.html_container">
  <t t-call="report.external_layout">

    <div class="page">
        <div class="row mt32 mb32">

            <div class="col-xs-2">
                <strong>Order number</strong>:<br/>
            </div>
            <div class="col-xs-2">
                <strong>Delivery date</strong>:<br/>
            </div>  
            <div class="col-xs-2">
                <strong>Client</strong>:<br/>
            </div>
            <div class="col-xs-2">
                <strong>Product</strong>:<br/>                
            </div>
            <div class="col-xs-2">
                <strong>Quantity</strong>:<br/>
            </div>

            <t t-foreach="docs" t-as="o">
                <div class="col-xs-12">
                <!-- pos_order -->
                    <div class="col-xs-2">
                        <p t-field="o.name"/>
                    </div>
                    <div class="col-xs-2" t-if="o.x_exp_date">
                        <p t-field="o.x_exp_date"/>
                    </div>  
                    <div class="col-xs-2">
                        <p t-field="o.partner_id"/>
                    </div>

                <!-- pos_order_line ??????????  -->
                    <t t-call="pos_report_localdate_2">
                        <div class="col-xs-2">
                            <p t-field="o.product_id"/>
                        </div>
                        <div class="col-xs-2">
                            <p t-field="o.qty"/>
                        </div>
                    </t>
                </div>   
            </t>
        </div>
    </div>
</t>

继续 pos_localdate_report.xml:

<template id="pos_report_localdate_2">
    <t t-call="report.html_container">
<!-- ............................................... -->
    </t>
</template>
</data>
</openerp>

请不要误会,如果在某些时候我把错误的做法,我是新人。

标签: xmlodoo-8

解决方案


无需创建第二个模板,

我需要改变:

     <t t-call="pos_report_localdate_2">
       <div class="col-xs-2">
          <p t-field="o.product_id"/>
        </div>
        <div class="col-xs-2">
           <p t-field="o.qty"/>
        </div>
      </t> 

为了:

     <!-- pos_order_line  -->
     <t t-foreach="request.env['pos.order.line'].search([('order_id','=',o.id)])" t-as="obj">
        <div class="col-xs-2">
           <p t-field="obj.product_id"/>
        </div>
        <div class="col-xs-2">
           <p t-field="obj.qty"/>
        </div>
     </t>

推荐阅读