如何使用[[repeatIn(o.invoice_line,'l','td')]]:每行的循环,以及每行数据在openerp中创建一个单元格

时间:2015-08-31 13:44:18

标签: openerp-7 rml

我在OpenERP中使用RML创建一个新报告。这是我的Python函数:

def get_employee_lines(self, context=None):
    print ('--------------------MOMO----------------------')
    res_list=[]
    payslip_line = self.pool.get('hr.payslip')
    print payslip_line

    obj_ids = payslip_line.search(self.cr, self.uid, [])
    print obj_ids
    for res in payslip_line.read(self.cr, self.uid, obj_ids, ['id', 'employee_id'], context=False):
        print res['employee_id'][1]
        obj = {}
        obj['name'] = res['employee_id'][1]
        res_list.append(obj)
    return res_list

和我的RML:

 <tr>
    <td>
      <para style="P9">NOM EMPLOYÉ</para>
    </td>

    <td>
      <para style="P7">[[ repeatIn(get_employee_lines(), 'o') ]]</para>
      <para style="P7">[[ o['name'] ]]</para>
    </td>
  </tr>

我想把每个员工都放在一个新的单元格中,这意味着td。

2 个答案:

答案 0 :(得分:0)

您正在寻找的是:

<tr>
    <td> 
        <para style="P9">NOM EMPLOYÉ</para>
    </td>

    <section>
        [[ repeatIn(get_employee_lines(), 'o') ]]
        <td>
            <para style="P7">[[ o['name'] ]]</para>
        </td>
    </section>
</tr>

基本上每当你有重复呼叫时,你需要把它放在或放在部分之外,并且部分内的所有内容都将重复。但是如果你使用它,请小心,因为该元素通常硬编码为固定数量的列(毕竟你生成表)。

希望有所帮助:)

答案 1 :(得分:0)

最后我找到了它。  这是答案。 首先,我必须更改我的OpenOffice的版本,即v4.1.X. 其次,我使用[[repeatIn(get_employee_lines(example.company_id,example.date_start,example.date_end),'o','td')]]循环每行,并为每一行创建一个新的表格单元格。

所以这是正确答案:

 <tr>
  <td>
  <para style="P8">NOM EMPLOYÉ</para>
  </td>
  <td>
 <para style="P7">[[      repeatIn(get_employee_lines(example.company_id,example.date_start,example.d      ate_end), 'o', 'td') ]]</para>
 <para style="P7">[[ o['name'] ]]</para>
</td>
</tr>*

最诚挚的问候。