Odoo 视图通过多个模块继承

问题描述 投票:0回答:1

我需要继承销售点订单搜索视图来添加自定义过滤器。视图是这样定义的

<record id="view_pos_order_filter" model="ir.ui.view">
        <field name="name">pos.order.list.select</field>
        <field name="model">pos.order</field>
        <field name="arch" type="xml">
            <search string="Search Sales Order">
                <field name="name"/>
                <field name="pos_reference"/>
                <field name="date_order"/>
                <field name="tracking_number"/>
                <field name="user_id"/>
                <field name="partner_id"/>
                <field name="session_id"/>
                <field name="config_id"/>
                <field name="lines" string="Product" filter_domain="[('lines.product_id', 'ilike', self)]"/>
                <filter string="Invoiced" name="invoiced" domain="[('state', '=', 'invoiced')]"/>
                <filter string="Posted" name="posted" domain="[('state', '=', 'done')]"/>
                <separator/>
                <filter string="Order Date" name="order_date" date="date_order"/>
                <group expand="0" string="Group By">
                    <filter string="Session" name="session" domain="[]" context="{'group_by': 'session_id'}"/>
                    <filter string="User" name="user_id" domain="[]" context="{'group_by': 'user_id'}"/>
                    <filter string="Point of Sale" name="config_id" domain="[]" context="{'group_by': 'config_id'}"/>
                    <filter string="Customer" name="customer" domain="[]" context="{'group_by': 'partner_id'}"/>
                    <filter string="Status" name="status" domain="[]" context="{'group_by': 'state'}"/>
                    <filter string="Order Date" name="order_month" domain="[]" context="{'group_by': 'date_order'}"/>
                </group>
            </search>
        </field>
    </record>

我的继承观是这样的:

<record id="pos_order_view_search_inherit" model="ir.ui.view">
    <field name="name">pos.order.view.search.inherit</field>
    <field name="model">pos.order</field>
    <field name="inherit_id" ref="point_of_sale.view_pos_order_filter"/>
    <field name="arch" type="xml">
      <xpath expr="//filter[@name='user_id']" position='after'>
        <filter name="group_by_sales_rep" string="Sales Representative" domain="[]" context="{'group_by':'sales_rep_id'}"/>
      </xpath>
    </field>
  </record>

继承似乎很好(至少在启动时的视图解析期间)并且odoo启动没有任何错误。但是,当我在浏览器中进入订单视图时,出现错误,其中部分内容为...

ValueError: Element '<xpath expr="//filter[@name=&#39;user_id&#39;]">' cannot be located in parent view

我发现其他地方也继承了相同的视图,并且

user_id
过滤器被替换成这样

    <record id="pos_order_list_select_inherit" model="ir.ui.view">
        <field name="name">pos.order.list.select.inherit</field>
        <field name="model">pos.order</field>
        <field name="inherit_id" ref="point_of_sale.view_pos_order_filter"/>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='user_id']" position="replace">
                <field name="cashier"/>
            </xpath>
            <xpath expr="//filter[@name='user_id']" position="replace">
                <filter string="Cashier" name="by_cashier" domain="[]" context="{'group_by': 'cashier'}"/>
            </xpath>
        </field>
    </record>

我知道我可以使用不同的 xpath 表达式来完成我需要的操作,但我很好奇继承在这种情况下应该如何工作。 ?

odoo odoo-17
1个回答
0
投票

你可以这样调整你的xpath:

pos.order.view.search.inherit 后序
© www.soinside.com 2019 - 2024. All rights reserved.