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
相关产品推荐
相关产品推荐

