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

Odoo 8中如何按条件显示/隐藏继承的库存报表菜单

解决Odoo 8中按记录状态控制报表菜单显示的问题

首先得明确:你之前的写法无效是因为Odoo 8里<report>标签的menu属性只支持静态布尔值(True/False),根本没法直接写动态域表达式来根据记录状态控制显示。要实现你要的效果,得换个思路——通过继承表单视图来控制报表对应菜单项的可见性,这是Odoo 8里最直接的实现方式,而且完全符合你“必须通过继承实现”的要求。

具体实现步骤

1. 继承库存调拨单的表单视图

在你的自定义模块里创建视图继承文件,针对stock.picking的表单视图,找到打印下拉菜单里对应报表的按钮/菜单项,给它加上动态可见性的控制属性。

下面是完整的代码示例:

<odoo>
    <data>
        <!-- 继承原生库存调拨单表单视图 -->
        <record id="view_picking_form_inherit_custom" model="ir.ui.view">
            <field name="name">stock.picking.form.inherit.custom</field>
            <field name="model">stock.picking</field>
            <field name="inherit_id" ref="stock.view_picking_form"/>
            <field name="arch" type="xml">
                <!-- 定位到打印按钮对应的报表动作 -->
                <xpath expr="//button[@name='%(stock.action_report_picking)d']" position="attributes">
                    <!-- 设置当state为assigned时隐藏该按钮 -->
                    <attribute name="attrs">{'invisible': [('state', '=', 'assigned')]}</attribute>
                </xpath>
                
                <!-- 如果报表是在下拉菜单的menuitem里,补充这段代码适配 -->
                <xpath expr="//menuitem[@action='stock.action_report_picking']" position="attributes">
                    <attribute name="attrs">{'invisible': [('state', '=', 'assigned')]}</attribute>
                </xpath>
            </field>
        </record>
    </data>
</odoo>

2. 代码细节说明

  • XPath定位:这里用xpath精准找到原生视图里对应报表的按钮/菜单项,你可能需要根据Odoo 8的实际视图结构微调expr内容(比如部分版本里打印按钮是在<header>的<dropdown>容器内)。
  • attrs属性控制:{'invisible': [('state', '=', 'assigned')]}的逻辑很直白——当stock.picking的state等于assigned时,该控件自动隐藏;其他状态下正常显示,完美匹配你的需求。

为什么你的原写法行不通?

Odoo 8的<report>标签里的menu参数只是个全局开关,用来控制报表是否出现在打印菜单里,是静态配置,不支持动态的域表达式。所以要实现基于记录状态的动态显示,必须从视图层面入手,直接控制具体控件的可见性。

额外调试小技巧

如果上面的XPath定位没找到目标控件,你可以打开Odoo开发者模式,查看stock.picking表单视图的源代码,找到对应报表动作的按钮/菜单项的具体位置,再调整XPath表达式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:55:39