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

Purchase Requisition创建异常求助:含行项无法保存

Purchase Requisition创建时带行项无法保存的权限问题

问题概况

  • 涉及文档:Purchase Requisition
  • 异常表现:拥有group_grupos_requis组权限的用户创建采购申请时,填写行项后无法保存;但空行保存成功后,再添加行项并保存可正常完成。
  • 已尝试操作:为mail_followers模块添加创建权限,无效果。

相关security.xml代码

<record id="group_grupos_requis" model="res.groups">
    <field name="name">Solo Requisiciones</field>
    <field name="category_id" ref="base.module_category_hidden"/>
</record>

<record id="group_grupos_requis_hide" model="res.groups">
    <field name="name">Puede Manipular Requisiciones</field>
    <field name="category_id" ref="base.module_category_hidden"/>
</record>

<record id="group_grupos_requis_aproval" model="res.groups">
    <field name="name">Puede Confirmar Requisiciones</field>
    <field name="category_id" ref="base.module_category_hidden"/>
</record>

<record model="ir.rule" id="purchase_requisition_comp_rule">
    <field name="name">Purchase Requisition multi-company</field>
    <field name="model_id" ref="model_purchase_requisition"/>
    <field name="domain_force">[('message_follower_ids.partner_id', '=', user.partner_id.id)]</field>
    <field name="groups" eval="[(4,ref('purchase.group_grupos_requis'))]"/>
</record>

<record model="ir.rule" id="purchase_requisition_all_rule">
    <field name="name">Purchase Requisition Manager all</field>
    <field name="model_id" ref="model_purchase_requisition"/>
    <field name="domain_force">[(1,'=',1)]</field>
    <field name="groups" eval="[(4,ref('purchase.group_grupos_requis_hide')), (4,ref('purchase.group_grupos_requis_aproval'))]"/>
</record>

<record model="ir.rule" id="purchase_requisition_all_rule_line">
    <field name="name">Purchase Requisition Manager line all</field>
    <field name="model_id" ref="model_purchase_requisition_line"/>
    <field name="domain_force">[(1,'=',1)]</field>
    <field name="global" eval="True"/>
</record>

<record model="ir.rule" id="purchase_requisition_rh_rule">
    <field name="name">Purchase Requisition RH</field>
    <field name="model_id" ref="model_purchase_requisition"/>
    <field name="domain_force">[('solo_rh', '!=', False)]</field>
    <field name="groups" eval="[(4,ref('hr.group_hr_manager'))]"/>
</record>

问题原因

异常核心在于purchase_requisition_comp_rule的权限验证逻辑:

  • 用户首次创建带行项的采购申请时,系统还未自动将用户添加为该申请的关注者(message_follower_ids为空),导致[('message_follower_ids.partner_id', '=', user.partner_id.id)]条件不满足,权限验证失败,无法保存。
  • 空行保存成功后,系统会自动将用户添加为申请的关注者,此时message_follower_ids已包含用户对应的partner,后续编辑添加行项时规则验证即可通过。

解决方案

修改purchase_requisition_comp_rule的domain_force,添加对新建记录的兼容判断:

<record model="ir.rule" id="purchase_requisition_comp_rule">
    <field name="name">Purchase Requisition multi-company</field>
    <field name="model_id" ref="model_purchase_requisition"/>
    <!-- 新增对新建记录的判断,允许未生成ID的记录通过验证 -->
    <field name="domain_force">['|', ('id', '=', False), ('message_follower_ids.partner_id', '=', user.partner_id.id)]</field>
    <field name="groups" eval="[(4,ref('purchase.group_grupos_requis'))]"/>
</record>

该规则逻辑为:要么是尚未保存的新建记录(ID为空),要么是已存在且用户为该申请的关注者,覆盖创建场景的权限验证需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:11:29