You need to enable JavaScript to run this app. Odoo12 伙伴分类账实现伙伴列表默认仅展示客户伙伴的配置方法
优惠活动
大模型
产品
解决方案
定价
更多

Odoo12 伙伴分类账实现伙伴列表默认仅展示客户伙伴的配置方法

Odoo12 Partner Ledger 伙伴筛选列表默认仅展示客户的实现方案

之前定位失败的原因

Odoo12的account_reports模块采用动态报表渲染框架,伙伴筛选的数据源域并非定义在传统ir.ui.view视图中,也未暴露在前端按钮的JS配置里,因此你之前查找视图、修改JS的路径无法找到配置入口是符合模块设计逻辑的。

可行实现方案

Partner Ledger对应的后端报表模型为account.report.partner.ledger,伙伴选择弹窗的可选记录域由父类account.report的_get_partner_values方法返回,仅需通过独立自定义模块覆写该方法,追加客户过滤规则即可实现需求,无需修改原生模块代码。

步骤1:编写模型继承逻辑

在自定义模块的模型文件中新增如下代码:

from odoo import models, api

class AccountPartnerLedgerReport(models.Model):
    _inherit = 'account.report.partner.ledger'

    @api.model
    def _get_partner_values(self, options):
        # 调用原方法获取默认的伙伴筛选配置
        result = super()._get_partner_values(options)
        # 追加客户判定规则,customer_rank > 0 等价于原生客户标识customer_rank=1的判定逻辑
        original_domain = result.get('domain', [])
        original_domain.append(('customer_rank', '>', 0))
        result['domain'] = original_domain
        return result

该逻辑修改后,伙伴选择弹窗的下拉列表将仅展示客户类伙伴,过滤掉供应商、内部联系人等非客户记录。

步骤2(可选):调整报表默认统计范围

如果需要实现报表首次加载时,默认就仅统计客户的交易数据,而非仅在选择弹窗里过滤客户,可以继续覆写_get_options方法:

@api.model
def _get_options(self, previous_options=None):
    options = super()._get_options(previous_options)
    # 初始化报表选项时,默认给伙伴统计范围追加客户过滤规则
    options['partner_domain'] = [('customer_rank', '>', 0)]
    return options

注意事项

  • 所有自定义逻辑需放在独立继承模块中,不要直接修改account_reports原生模块代码,避免后续Odoo版本升级时自定义逻辑被覆盖。
  • 代码修改完成后,需要升级自定义模块并刷新前端页面,配置即可生效。

说明:该方案复用了Odoo12原生伙伴筛选组件的域传递逻辑,前端会自动读取后端返回的domain参数,无需额外修改JS代码。

内容的提问来源于stack exchange,提问作者czuniga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 02:54:08