如何删除 Odoo 中的 window 操作?

How can I delete window action in Odoo?

我创建了一个模块,因为我添加了 window 操作,现在我想在另一个模块中删除该 window 操作。有什么方法可以删除/隐藏 window 操作吗?

假设以下是销售基本模块中可用的操作,我想在我的自定义模块中将其删除。

    <record id="action_view_sale_advance_payment_inv" model="ir.actions.act_window">
        <field name="name">Invoice Order</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">sale.advance.payment.inv</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
        <field name="target">new</field>
        <field name="groups_id" eval="[(4,ref('sales_team.group_sale_salesman'))]"/>
    </record>

    <!-- TODO: check if we need this -->
    <record model="ir.values" id="sale_order_line_make_invoice">
        <field name="model_id" ref="sale.model_sale_order_line" />
        <field name="name">Invoice Orders</field>
        <field name="key2">client_action_multi</field>
        <field name="value" eval="'ir.actions.act_window,' + str(ref('action_view_sale_advance_payment_inv'))" />
        <field name="key">action</field>
        <field name="model">sale.order</field>
    </record>

我已经测试过并且有效。你只需要删除这条ir.value记录

self.env.ref('sale.sale_order_line_make_invoice').unlink()

并且下拉列表为空

要使其自动发生,您需要进行以下更改:

创建xml

<?xml version="1.0"?>
<openerp>
    <data noupdate="1">
        <function model="*model_name*" name="_test_function"/>
    </data>
</openerp>

使用此函数创建模型

@api.model
def _test_function(self):
    self.env.ref('sale.sale_order_line_make_invoice').unlink()

祝你好运

可以删除ir.values条记录,也就是"creating"这个动作。有 2 种(当然还有更多)可能性可以做到这一点。

  1. 使用xml/external ID删除

    条件:ir.values 记录必须有一个外部 ID。删除模块需要另一个作为依赖

<odoo>
    <data>
        <delete model="ir.values" id="my_module.my_ir_values_id" />
    </data>
</odoo>
  1. 搜索删除

    条件:您需要一些东西来搜索记录,例如姓名。

<odoo>
    <data>
        <delete model="ir.values" search="[('name', '=', 'Invoice Order')]" />
    </data>
</odoo>