RML(OpenERP) - 动态分组符合条件的行

时间:2014-03-05 10:01:21

标签: python xml openerp rml

假设我有这张表:

 <para style="terp_default_2">[[ repeatIn(o.invoice_line,'l') ]]</para>
      <blockTable colWidths="180.0,65.0,75.0,70.0,60.0,80.0" style="Table8">
        <tr>
          <td>
            <para style="terp_default_9">[[ format(l.name) ]]</para>
          </td>
          <td>
            <para style="terp_default_Centre_9">[[ formatLang(l.discount, dp='Account', digits=2) ]] </para>
          </td>
          <td>
            <para style="terp_default_Right_9">[[ formatLang(l.quantity, digits=2)]] [[ (l.uos_id and l.uos_id.name) or '' ]]</para>
          </td>
          <td>
            <para style="terp_default_Centre_9">[[ formatLang(l.price_unit, digits=2) ]]</para>
          </td>
          <td>
            <para style="terp_default_Centre_9">[[ ', '.join([ lt.name or '' for lt in l.invoice_line_tax_id ]) ]]</para>
          </td>          
          <td>
            <para style="terp_default_Right_9">[[ formatLang(l.price_subtotal, dp='Account', digits=2, currency_obj=o.currency_id) ]]</para>
          </td>
        </tr>
      </blockTable>

此表格通常会生成并打印发票行,但我需要将它们分组到&#34; groups&#34;如果他们被分配到那个所谓的&#34;组&#34;。

我的意思是,如果订单行已分配&#34;分配合作伙伴&#34; (销售订单中有这样的字段,我也会在发票中添加),然后将它们添加到该组中。为了更好地理解它,我们来看看这个例子:

现在使用上面编写的代码,发票将打印如下:

product1 discount1 quantity1 priceu1 taxes1 prices1
product2 discount2 quantity2 priceu2 taxes2 prices2
product3 discount3 quantity3 priceu3 taxes3 prices3

现在,如果这些行被分配了“分配合作伙伴”,例如第一行和第二行将被分配allot_p1,第三行将被分配allot_p2(让我们说这些是Allotment Partners的名称。那么它应该像这样打印:

allot_p1
product1 discount1 quantity1 priceu1 taxes1 prices1
product2 discount2 quantity2 priceu2 taxes2 prices2
allot_p2
product3 discount3 quantity3 priceu3 taxes3 prices3

我想如何为每一行显示Allotment Partner:

allot_p1 product1 discount1 quantity1 priceu1 taxes1 prices1

allot_p1 product2 discount2 quantity2 priceu2 taxes2 prices2

allot_p2 product3 discount3 quantity3 priceu3 taxes3 prices3

这个很容易,因为我只需要创建额外的td。但是这样的方法看起来不那么好,所以我认为有可能以某种方式自动分组行并像第二个例子一样打印它?

0 个答案:

没有答案