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

Odoo发票应用新增菜单问题:安装account_accountant后菜单未归至会计应用

解决Odoo安装account_accountant后菜单归属问题

问题原因

安装account_accountant(会计专业版)模块后,Odoo会重构会计模块的菜单体系,原account.menu_finance菜单的归属逻辑被调整,导致自定义菜单无法正常显示在会计应用下。

解决方案

方法1:XML条件化指定父菜单

利用Odoo XML的t-if条件判断,根据account_accountant模块的安装状态动态设置菜单父节点:

<!-- 未安装account_accountant时,沿用原财务菜单作为父节点 -->
<menuitem
    name="Commissions Management"
    id="menu_commissions_management"
    parent="account.menu_finance"
    groups="account.group_account_manager"
    sequence="1"
    t-if="not env['ir.module.module'].search([('name', '=', 'account_accountant'), ('state', '=', 'installed')])"
/>

<!-- 已安装account_accountant时,使用会计应用根菜单作为父节点 -->
<menuitem
    name="Commissions Management"
    id="menu_commissions_management"
    parent="account_accountant.menu_account_root"
    groups="account.group_account_manager"
    sequence="1"
    t-if="env['ir.module.module'].search([('name', '=', 'account_accountant'), ('state', '=', 'installed')])"
/>

方法2:通过Python钩子动态更新菜单

在模块中添加安装/卸载钩子,动态调整菜单的父节点:

  1. 在模块目录下创建hooks.py,编写钩子函数:
from odoo import models, api
from odoo.exceptions import MissingError

def update_menu_parent(cr, registry):
    env = api.Environment(cr, SUPERUSER_ID, {})
    try:
        menu = env.ref('your_module_name.menu_commissions_management')
        if env['ir.module.module'].search([('name', '=', 'account_accountant'), ('state', '=', 'installed')]):
            parent_menu = env.ref('account_accountant.menu_account_root')
        else:
            parent_menu = env.ref('account.menu_finance')
        menu.parent_id = parent_menu
    except MissingError:
        pass

def post_init_hook(cr, registry):
    update_menu_parent(cr, registry)

def uninstall_hook(cr, registry):
    update_menu_parent(cr, registry)
  1. 在__manifest__.py中注册钩子:
{
    # 其他manifest配置项
    'post_init_hook': 'post_init_hook',
    'uninstall_hook': 'uninstall_hook',
    'depends': ['account'],
}

方法3:强制依赖account_accountant并直接指定父菜单

如果你的模块必须搭配account_accountant使用,可直接将父菜单设为会计应用根节点:

<menuitem
    name="Commissions Management"
    id="menu_commissions_management"
    parent="account_accountant.menu_account_root"
    groups="account.group_account_manager"
    sequence="1"
/>

同时在__manifest__.py的depends中添加account_accountant。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:15:39