2

ページごとの配列から openerp x 列の RML でリリースされたレポートを表示したいと考えています。このために、私は2つの機能を実行しました。最初のものは、x ごとに分割されたテーブルのサイズを示します (1 ページあたり 7 列を表示したいため、=7)。2 つ目は、必要なパラメータが start_position と列数である結果を表示することです。これが私が気づいたことです:

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  

そして2番目のもの:

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]

そして私の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>

それを実現するための提案。

4

1 に答える 1

0

あなたの問題は にあり、整数である結果をrepeatIn(get_employee_taille(...),'test') ]]反復しようとしています。get_employe_taille

このrepeatIn関数は、最初のパラメーターが反復可能であることを期待しています。

repeatIn問題を解決するには、返された値を削除してそのまま使用するか、get_employee_taille関数を修正してリストを返します。

于 2015-11-10T10:17:16.603 に答える