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

Odoo8使用domain_force配置销售团队订单访问权限

Odoo销售团队订单记录规则配置方案

现有配置问题

当前group_sale_salesman_team_orders(查看所属团队订单)组绑定的规则domain仅判断订单创建人等于当前登录用户,没有关联自定义的销售团队、团队成员表做权限范围判断,因此无法实现查看团队内所有成员订单的需求。

正确的domain_force配置逻辑

权限覆盖范围为:当前登录用户 + 当前用户作为负责人的团队下所有成员,对应domain直接通过ORM搜索拿到有权限的用户ID集合做匹配即可,无需额外新增模型字段。如果需要保留查看无负责人(user_id=False)订单的逻辑,可在domain中补充对应或条件。

修正后的规则XML代码

将原配置中sale_order_rule_team的记录替换为以下内容即可:

<record id="sale_order_rule_team" model="ir.rule">
    <field name="name">Sale Order Team</field>
    <field ref="sale.model_sale_order" name="model_id"/>
    <!-- 注意:将sales.group.approval.member替换为你实际的团队成员表对应模型的_name属性值 -->
    <field name="domain_force">[
        '|',
        ('user_id', '=', False),
        ('user_id', 'in', [user.id] + env['sales.group.approval.member'].search([('member_group_id.leader_id', '=', user.id)]).mapped('member_id').ids)
    ]</field>
    <field name="groups" eval="[(4, ref('group_sale_salesman_team_orders'))]"/>
</record>

逻辑验证

按上述配置后:

  • 分配「仅查看本人订单」权限的用户:触发原有个人订单规则,仅可查看本人创建、无负责人的销售订单,原有正常逻辑不受影响
  • 分配「查看所属团队订单」权限的用户:因组的隐含继承关系,会同时叠加个人规则和团队规则权限,最终效果匹配预期:
    • ID为1的团队负责人登录:可查看user_id为1、3、4的订单,以及无负责人订单
    • ID为2的团队负责人登录:可查看user_id为2、5、6的订单,以及无负责人订单

注意事项

  • 代码中sales.group.approval.member为示例模型名,需要和你自定义开发的销售团队成员关联表对应的模型_name参数保持一致,否则会报模型不存在的错误
  • 如果你不需要让团队权限用户看到无负责人的订单,直接删掉domain里的('user_id', '=', False),这一行即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:45:35