如何使用 [[ repeatIn(o.invoice_line,'l', 'td') ]] : 循环每一行,并为每一行数据在 openerp 中创建一个单元格
How to use [[ repeatIn(o.invoice_line,'l', 'td') ]] : cycle of each line, and for each row of data to create a cell in openerp
我正在 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。
你要找的是这个:
<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>
基本上只要你有 repeatIn 调用,你需要把它放在节内或刚好放在节外,节内的所有内容都会被重复。但是,如果你使用它要小心,因为该元素通常被硬编码为固定数量的列(毕竟你正在生成 table)。
希望对您有所帮助:)
终于找到了。
这是答案。
首先,我必须更改我的 OpenOffice 版本,即 v4.1.X。
其次,我使用了 [[ repeatIn(get_employee_lines(example.company_id,example.date_start,example.date_end), 'o', 'td') ]] 循环每行并为每行创建一个新的 table 单元格。
正确答案如下:
<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>*
此致。
我正在 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。
你要找的是这个:
<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>
基本上只要你有 repeatIn 调用,你需要把它放在节内或刚好放在节外,节内的所有内容都会被重复。但是,如果你使用它要小心,因为该元素通常被硬编码为固定数量的列(毕竟你正在生成 table)。
希望对您有所帮助:)
终于找到了。 这是答案。 首先,我必须更改我的 OpenOffice 版本,即 v4.1.X。 其次,我使用了 [[ repeatIn(get_employee_lines(example.company_id,example.date_start,example.date_end), 'o', 'td') ]] 循环每行并为每行创建一个新的 table 单元格。
正确答案如下:
<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>*
此致。