如何继承按钮类型="action" odoo 15

How to inherit button type="action" odoo 15

我正在尝试覆盖使用 type="action" 的按钮。

原始按钮:

<button name="%(sale.action_view_sale_advance_payment_inv)d" string="Create Invoice"
    type="action" context="{'default_advance_payment_method': 'percentage'}" data-hotkey="q"
    attrs="{'invisible': ['|',('invoice_status', '!=', 'no'), ('state', '!=', 'sale')]}"/>

我正在尝试用通常的方式继承它,即使用@name= .. 像这样:

<?xml version="1.0" encoding="utf-8"?>
<odoo>

    <record id="sale_order_view_form_create_contract_button" model="ir.ui.view" style="color:#e8bf6a;">>
        <field name="name">sale_order_view_form_create_contract_button</field>
        <field name="model">sale.order</field>
        <field name="inherit_id" ref="sale.view_order_form"/>
        <field name="priority" eval="100"/>
        <field name="arch" type="xml">
            <xpath expr="//button[@name='%(sale.action_view_sale_advance_payment_inv)d']" position="attributes">
                <attribute name="invisible">1</attribute>
            </xpath>
        </field>
    </record>
</odoo>

不幸的是,它似乎不起作用。

请帮忙,谢谢。

我找到了答案:

照常使用名称:

<xpath expr="//button[@name='%(sale.action_view_sale_advance_payment_inv)d']" position="attributes">
    <attribute name="invisible">1</attribute>
</xpath>

但是在这个 view_order_form 中,odoo 定义了 2 个按钮,它们彼此完全相同,所以我为它设置了索引以使其工作,比如我想删除第二个按钮,然后我必须向它添加 [2],所以它看起来像这样:

<!-- remove 2nd button "Create Invoice" in view_order_form -->
<xpath expr="//button[@name='%(sale.action_view_sale_advance_payment_inv)d'][2]" position="attributes">
    <attribute name="invisible">1</attribute>
</xpath>

感谢大家阅读。