2017-06-27 5 views
3

パートナー元帳レポートがありますが、すべてのパートナーにのみ印刷されます。私はウィザードとウィザードのビューでパートナーIDを追加しました。 これで、選択したパートナーのレポートのみを印刷する方法が必要になりました。私はあなたが私に考えのための食糧を与えることができることを願っています。多分私はそれを実装する必要がありますいくつかの擬似コード。選択したパートナーのレポートのみを印刷

class AccountPartnerLedger(models.TransientModel): 
    _inherit = "account.report.partner.ledger" 

    partner_ids = fields.Many2many(
     'res.partner', string='Choose partners') 

私はあなたがパートナー台帳にフィルタリングしたいならば、あなたはすべてのパートナーが設定されている場所から1つのメソッドをオーバーライドする必要があるレポート一般に

class ReportPartnerLedger(models.AbstractModel): 
    _inherit = 'report.account_extra_reports.report_partnerledger' 


    @api.multi 
    def render_html(self, data): 
     domain = [ 
       ('partner_ids', '==', 'partner_ids'), 
      ] 
     return super(ReportPartnerLedger, self).render_html(data=data) 
+1

ここでコードを書く人はいません。あなたは私たちとあなたの試行を共有する必要があります。もし私たちが助けができれば、あなたは間違いや間違いを助けます。 –

+0

私はコードを望んでいない前に言ったように、私はいくつかのポインタを望んでいた –

+0

ここではヒントです:ソースコード –

答えて

0

を呼び出すドメイン法によりフィルタリングしようとしています。そのために

あなたが上書きする必要がある1つの方法

def set_context(self, objects, data, ids, report_type=None): 

があり、そのファイルで

アカウント=>レポート=> report_partner_ledger.py

を参照することができますそれはあなたのフィールドの値を渡す必要がある代わりにすべてのパートナーをフェッチする1行を更新する必要がありますここにe。

self.cr.execute(
      "SELECT DISTINCT l.partner_id " \ 
      "FROM account_move_line AS l, account_account AS account, " \ 
      " account_move AS am " \ 
      "WHERE l.partner_id IS NOT NULL " \ 
       "AND l.account_id = account.id " \ 
       "AND am.id = l.move_id " \ 
       "AND am.state IN %s" 
       "AND " + self.query +" " \ 
       "AND l.account_id IN %s " \ 
       " " + PARTNER_REQUEST + " " \ 
       "AND account.active " + reconcile + " ", params) 
    self.partner_ids = [res['partner_id'] for res in self.cr.dictfetchall()] 

パートナー元帳レポートのすべてのパートナーをフェッチodooこの方法で、これだけのこれらの行をコメントアウトし、コードを交換してください。

このため、 partner_idsフィールドには、その値を置き換える必要があるため、ウィザードを継承する必要があります。

関連する問題