2017-03-19 12 views
1

私は次の関数を使ってレポートにレコードを取得しています。 アクティブなレコードに基づいてodooレポートを生成する

def get_records(self): 
    recsss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').search(self.cr,self.uid, [], context=self.context) 
    resss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').browse(self.cr, self.uid, recsss) 
    return resss 

次の方法でレコードを呼び出す:

<t t-set="i" t-value="1"/> 
<tr t-foreach="get_records()" t-as="data"> 

    <td style="display:none"> 
     <t t-esc="i"/> 
     <t t-set="i" t-value="i+1"/> 
    </td> 

    <td t-esc="data['employee_code']"></td> 
    <td t-esc="data['employee'].name"></td> 
    <td t-esc="data['employee'].job_id.name"></td> 
    <td t-esc="data['no_of_days']"></td> 
    <td t-esc="data['employee'].contract_id.wage"></td> 
    <td t-esc="data['employee'].contract_id.wage*0.64516129"></td> 
</tr> 

問題は、結果のレポートは、データベースに保存されたすべてのレコードを表示されていることです。ツリービューで選択したレコードだけを表示したい。下の画像で、アクティブ/選択されたレコードが表示されます。

enter image description hereまた、単一のレコードビューでレポートを生成しても、すべてのレコードが表示されますが、フローに従って、そのレポートを生成している場所からそのレコードのレポートを生成する必要があります。

このような要件に役立つものをご提案ください。前もって感謝します。

+0

どのようにしてget_records()関数を呼び出すことができましたか?oを使わないでqwebから関数を呼び出すときはいつも、非型のエラーが出ます。前に。または、おそらく完全なXMLコードを提供できますか?ありがとうJesse – Jesse

+0

私たちはウィジェットを作成します。トップにはt-foreachをt-as = oと呼んでいません。 –

答えて

1

Relace thisコード:

def get_records(self): 
    recsss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').search(self.cr,self.uid, [], context=self.context) 
    resss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').browse(self.cr, self.uid, recsss) 
    return resss 

は、それが唯一のアクティブなIDを生成します以下

def get_records(self): 
    active_ids = self.context.get('active_ids',False) 
    recsss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').search(self.cr,self.uid, [('id','in',active_ids)], context=self.context) 
    resss = self.pool.get('overtime_oms_bcube.overtime_oms_bcube').browse(self.cr, self.uid, recsss) 
    return resss 

を小枝。 乾杯!

0

active_idsが、contextに存在するかどうかは、メソッドを呼び出すときに確認してください。存在する場合は、browse()呼び出しのIDを使用します。

1

ステップ1:2:あなたは、アクティブIDとget_action方法が印刷されてしまいますコンテキストでウィザード

def print_report(self, cr, uid, ids, context=None): 
    """ 
    To get the date and print the report 
    @return : return report 
    """ 
    if context is None: 
     context = {} 
    datas = {'ids': context.get('active_ids', [])} 
    res = self.read(cr, uid, ids, ['price_list','qty1', 'qty2','qty3','qty4','qty5'], context=context) 
    res = res and res[0] or {} 
    res['price_list'] = res['price_list'][0] 
    datas['form'] = res 
    return self.pool['report'].get_action(cr, uid, [], 'product.report_pricelist', data=datas, context=context) 

で作成して印刷する方法 Example of odoo default product pricelist report wizard

Click on Print button system will call wizard print method

ステップの作成ウィザードレポート

+0

なぜ私たちはその長い手順に入る必要があるのですか? –

+0

答えは間違いありません。しかし、その長い手順.. –

関連する問題