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钩子动态更新菜单
在模块中添加安装/卸载钩子,动态调整菜单的父节点:
- 在模块目录下创建
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)
- 在
__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
相关产品推荐
相关产品推荐

