【问题标题】:Print report only for selected partner仅为选定的合作伙伴打印报告
【发布时间】:2017-06-27 14:21:42
【问题描述】:

有合作伙伴分类帐报告,但它只为所有合作伙伴打印。所以我在向导和向导视图中添加了合作伙伴 ID。 现在我需要一种只为选定的合作伙伴打印报告的方法。我希望你们能给我一些思考的食物。也许一些伪代码我应该如何实现它。

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

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

我试图通过调用报告的域方法进行过滤

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)

【问题讨论】:

  • 这里没有人会为你写代码。您应该与我们分享您的尝试,如果我们可以提供帮助,我们将帮助您解决错误或错误。
  • 正如我之前所说的我不想要代码,我想要一些指针
  • 好的,这里是提示:源代码

标签: openerp odoo-8 odoo-9


【解决方案1】:

一般来说,如果您想在合作伙伴分类帐中进行过滤,那么您需要覆盖一种方法,从那里设置所有合作伙伴。

你可以参考一下

帐户 => 报告 => report_partner_ledger.py

在那个文件中有一种方法

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

您需要覆盖它并需要更新一行来获取所有合作伙伴,而不是您需要在此处传递字段的值。

    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 字段在那里,您需要替换该值。

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多