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

Odoo中account.move视图XPath无效果且无报错问题求助

问题:Account Move视图按钮权限控制XPath失效排查

我需要让两个视图中的按钮仅对特定用户组可见,sale.order视图实现正常,但采用相同方式继承的account.move视图中XPath设置无效果且未抛出任何错误。视图已正确注册为继承视图,修改按钮名称会提示找不到按钮,但设置无效果。已尝试重启服务器与虚拟机、更换用户组、设置invisible=1等方法,均未解决,求进一步排查思路。


正常工作的Sale Order视图代码

<odoo>
    <record id="view_sale_order_form_extension" model="ir.ui.view">
        <field name="name">sale.order.form.extension</field>
        <field name="model">sale.order</field>
        <field name="inherit_id" ref="sale_commission.view_order_agent_form_inherit"/>
        <field name="arch" type="xml">
            <xpath expr="//button[@name='button_edit_agents'][@icon='fa-users']"
                   position="attributes">
                <attribute name="groups">sale_commission.group_sales_agent</attribute>
            </xpath>
        </field>
    </record>
</odoo>

无效果的Account Move视图代码

<odoo>
    <record id="view_account_move_form_extension" model="ir.ui.view">
        <field name="name">sale.commission.view.move.form.extension</field>
        <field name="model">account.move</field>
        <field name="inherit_id" ref="sale_commission.view_move_form"/>
        <field name="arch" type="xml">
            <xpath expr="//button[@name='button_edit_agents'][@icon='fa-users']"
                   position="attributes">
                <attribute name="groups">sale_commission.group_sales_agent</attribute>
            </xpath>
        </field>
    </record>
</odoo>

按钮添加的实现代码

<xpath expr="//field[@name='invoice_line_ids']/tree//field[@name='price_subtotal']" position="after">
<button name="button_edit_agents" icon="fa-users" attrs="{'invisible': [                         '|',('commission_free', '=', True),('any_settled', '=', True),],'column_invisible': [('parent.move_type', 'not in', ['out_invoice', 'out_refund'])]}" type="object"/>
</xpath>

排查思路
  • 精确XPath定位:按钮位于invoice_line_ids的tree视图内部,全局//button可能匹配偏差。尝试使用更精确的路径://field[@name='invoice_line_ids']/tree/button[@name='button_edit_agents'][@icon='fa-users'],限定在目标tree内部匹配。
  • 检查attrs与groups优先级:按钮本身的attrs包含invisible规则,Odoo中groups和attrs是逻辑与关系,但如果attrs的条件强制显示可能覆盖效果。先移除按钮原有的invisible attrs,测试groups是否生效,再逐步合并规则。
  • 调整视图继承顺序:如果有其他模块同时继承该视图并修改按钮,可能覆盖你的设置。在视图记录中添加priority字段(如设置为20),确保你的视图最后加载应用。
  • 直接在按钮添加时设置groups:跳过继承视图,直接在按钮添加代码中加入groups属性,测试是否生效,判断是继承视图问题还是XPath定位问题:
    <button name="button_edit_agents" icon="fa-users" attrs="..." type="object" groups="sale_commission.group_sales_agent"/>
    
  • 查看合并后视图结构:开发者模式下进入设置 > 技术 > 用户界面 > 视图,找到account.move表单视图,查看合并后的XML结构,确认groups属性是否被正确应用到按钮上。
  • 验证用户组权限:确认测试用户确实不属于sale_commission.group_sales_agent组,且未通过父组间接获得该权限,可在用户权限设置中查看「有效权限」确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:16:06