Reputation: 99
I want to display for my report released in RML for openerp x columns from an array per page. For this I have done two function. The first will give the size of the table divided per x (=7 because I want to display 7 columns per page). And the second one is to display the result where parameters needed are the start_position and the number of columns. Here is what I have realised:
def get_employee_taille(self, company_id, date_start, date_end, context=None):
res_list=[]
res_list2=[]
i = 0
obj2 = company_id.id
payslip_line = self.pool.get('hr.payslip')
obj_ids = payslip_line.search(self.cr, self.uid, [('date_from', '=', date_start), ('date_to', '=', date_end), ('company_id', '=', obj2)])
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)
taille = len (res_list) / 6
print taille
return taille
And the second one:
def get_employee_lines(self, company_id, date_start, date_end, start_position, number_of_columns, context=None):
print ('--------------------MOMO----------------------')
i = 0
res_list=[]
print ('--------------------test me----------------------')
print company_id
obj2 = company_id.id
payslip_line = self.pool.get('hr.payslip')
print payslip_line
obj_ids = payslip_line.search(self.cr, self.uid, [('date_from', '=', date_start), ('date_to', '=', date_end), ('company_id', '=', obj2)])
print obj_ids
for res in payslip_line.read(self.cr, self.uid, obj_ids, ['id', 'employee_id','seetek_worked_day','hours_overtime_100','seetek_absence_day','total_brut','retenue_source','net_payer'], context=False):
print res['employee_id'][1]
obj = {}
obj['name'] = res['employee_id'][1]
obj['matricule'] = str (res['employee_id'][0])
obj['presence'] = str (res['seetek_worked_day'])
obj['heures_sup'] = str (res['hours_overtime_100'])
obj['absence'] = str (res['seetek_absence_day'])
obj['total_brut'] = str (res['total_brut'])
obj['retenue_source'] = str ( - res['retenue_source'])
obj['net_payer'] = str (res['net_payer'])
obj['cnss_sal'] = str (res['total_brut'] * 9.18)
obj['cnss_pat'] = str (res['total_brut'] * 16.57)
obj['salaire_imposable'] = str ( -res['total_brut'] * (1-9.18))
res_list.append(obj)
print res_list
print res_list[0:2]
end_position = start_position + number_of_columns
return res_list[start_position:end_position]
And in my RML:
<section>
<para>[[ repeatIn(get_employee_taille(example.company_id,example.date_start,example.date_end),'test') ]]</para>
<blockTable colwidths="150,100,100,100,100,100" style="Table1">
<tr>
<td>
<para style="P8">NOM EMPLOYÉ</para>
</td>
<td>
<para style="P7">[[ repeatIn(get_employee_lines(example.company_id,example.date_start,example.date_end, 0, 7), 'o', 'td') ]]</para>
<para style="P7">[[ o['name'] ]]</para>
</td>
</tr>
</blockTable>
Any suggestion to realise that.
Upvotes: 2
Views: 106
Reputation: 26748
You issue is in repeatIn(get_employee_taille(...),'test') ]]
, you are trying to iterate over get_employe_taille
result which is an integer.
The repeatIn
function expects the first parameter to be iterable.
To fix your issue, remove repeatIn
and use the returned value as-is, or fix the get_employee_taille
function to return a list.
Upvotes: 0