You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo销售报表管道添加res.partner.category过滤功能的技术问询

在Odoo销售管道报表中添加客户分类过滤的解决方案

我来帮你搞定这个需求!结合你已经继承crm.opportunity.report模型的情况,咱们一步步来实现按客户标签(res.partner.category)过滤的功能:

1. 扩展报表模型字段

首先,在你的自定义模块里,给继承的crm.opportunity.report模型添加关联到客户标签的字段。因为报表模型是用于聚合统计的视图模型,咱们通过partner_id关联到客户的标签字段,并且设置store=True来支持报表的分组和过滤(毕竟报表需要预存数据才能高效查询):

from odoo import models, fields

class CrmOpportunityReport(models.Model):
    _inherit = 'crm.opportunity.report'

    category_id = fields.Many2many(
        'res.partner.category',
        string='Customer Tags',
        related='partner_id.category_id',
        store=True
    )

2. 修改报表搜索视图

接下来要让这个字段出现在报表的过滤选项里,咱们继承原有的销售管道报表搜索视图,添加客户标签的过滤组件:

<odoo>
    <!-- 继承搜索视图,添加客户标签过滤 -->
    <record id="view_crm_opportunity_report_search_inherit" model="ir.ui.view">
        <field name="name">crm.opportunity.report.search.inherit</field>
        <field name="model">crm.opportunity.report</field>
        <field name="inherit_id" ref="crm.view_crm_opportunity_report_search"/>
        <field name="arch" type="xml">
            <!-- 在团队过滤后添加客户标签过滤选项 -->
            <xpath expr="//filter[@name='my_team']" position="after">
                <filter 
                    name="category_id" 
                    string="Customer Tags" 
                    domain="[('category_id', 'in', self)]"
                    context="{'group_by': 'category_id'}"
                />
            </xpath>
            <!-- 把客户标签字段加入搜索框的可选字段列表 -->
            <xpath expr="//field[@name='partner_id']" position="after">
                <field name="category_id"/>
            </xpath>
        </field>
    </record>
</odoo>

3. 可选:在报表视图中显示标签字段

如果你想在报表的树形视图里直接看到客户标签,可以继承原树形视图添加这个字段:

<!-- 继承树形视图,添加客户标签显示 -->
<record id="view_crm_opportunity_report_tree_inherit" model="ir.ui.view">
    <field name="name">crm.opportunity.report.tree.inherit</field>
    <field name="model">crm.opportunity.report</field>
    <field name="inherit_id" ref="crm.view_crm_opportunity_report_tree"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='partner_id']" position="after">
            <field name="category_id"/>
        </xpath>
    </field>
</record>

4. 模块配置与测试

  • 确保你的自定义模块在__manifest__.py中依赖crm模块:
    'depends': ['crm'],
    
  • 升级模块后,打开「销售→报表→销售管道」,就能看到新增的「Customer Tags」过滤选项,也可以在搜索框里直接搜索客户标签啦!

注意事项

如果升级后过滤功能没生效,可能需要手动刷新报表模型的SQL视图:可以在Odoo后台的「设置→技术→模型」里找到crm.opportunity.report,点击「刷新视图」按钮;或者通过执行以下代码触发:

self.env['crm.opportunity.report']._init_view()

内容的提问来源于stack exchange,提问作者Developer Marius Žilėnas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:18:43