0
点赞
收藏
分享

微信扫一扫

【odoo15】在odoo中隐藏一个官方的菜单项Customers

秀儿2020 2022-04-30 阅读 95
python

在二次开发的过程中有的菜单项用不着,就需要把它删除,但是删除可能会导致莫名其妙的错误,所以就它隐藏起来是最优的选择。隐藏一下这个二级菜单【客户】 (Customers)

原来有xpath插入过字段的tree就无法隐藏。所以隐藏这个【Customers】效果如下:

 

 

代码如下:继承这个模型:【sale.order】 init里要引入,权限得写。

from odoo import fields, models, api, _


class testInherit(models.Model):
    _inherit = 'sale.order'
    testInherit = fields.Char()

视图文件:【我往tree里加了一个testInherit的字段 ——这个不是本篇需要关注的内容】

<odoo>
    <data>
        <record model="ir.ui.view" id="view_testInherit_tree">
            <field name="name">testInherit_tree</field>
            <field name="model">sale.order</field>
            <field name="inherit_id" ref="sale.view_quotation_tree_with_onboarding"/>
            <field name="arch" type="xml">
                <xpath expr="//field[@name='user_id']" position="after">
                    <field name="testInherit"/>
                </xpath>
            </field>
        </record>

        <record id="sale.res_partner_menu" model="ir.ui.menu">
            <field name="active" eval="False"/>
        </record>

    </data>
</odoo>

重点是这个: record id为需要隐藏的菜单ID   【包名+菜单ID】

 隐藏:eval="False"       显示:eval="True"

官方的这个sale的【报价单】和【客户】的菜单不在sale_views的最上边:(找了半天没找到)

 先拿【报价单】举例:通过在sale_views.xml里搜索【Quotations】

找到了视图的ID,再通过这个视图ID:action_quotations_with_onboarding 就一定能找到菜单

菜单的action就是关联的视图的ID,只是没有写name="Quotations"所以当时直接搜索才会没找到,官方这样写可能有他的用意,大概率不是偷懒,初学者不敢下定论。同理我们也能找到客户【customer】的菜单ID:【res_partner_menu

 这里还有一个groups 应该是分了一个组,为了设置权限。所以隐藏菜单只需三行代码:

 <record id="sale.res_partner_menu" model="ir.ui.menu">
            <field name="active" eval="True"/>
        </record>

这个【sale.res_partner_menu】就是一步步找到的。隐藏和显示上边已经提过了。

注意:1.继承的话记得在depends里添加依赖。

2.使用xpath的方式来修改过后的原视图就不能隐藏了,在依赖模块用到对应菜单的时候不可以将其隐藏。

举报

相关推荐

0 条评论