如何根据合作伙伴表单中的字段将自定义过滤器/自定义搜索字段添加到销售订单视图

How can add a Custom filter / Custom search field to Sale Order view based on a field in the partner form

我在合作伙伴表单中有一个字段 card_customer。我需要的是我必须根据字段 card_customer 添加销售订单的自定义过滤器。选择此过滤器时,我需要销售订单,其中 card_customer 字段等于 True.

的客户

这可以通过创建过滤器 "technically" 来实现。到目前为止,普通用户无法在香草 Odoo 中做到这一点。希望这一功能有一天会出现。

"Technically" 表示在自定义模块中或在客户端中使用调试模式。 Odoo 可以在此类过滤器的域中使用 dot-Notation。管理员可以使用它直接在客户端中创建自定义过滤器。

正在调试模式下创建

  1. 激活调试模式
  2. 要么转到 Settings/Technical/user-defined 过滤器,要么在销售订单列表视图的调试上下文菜单中打开 "Manage filters"

  1. 创建过滤器

在自定义模块中创建过滤器

  <record id="my_customer_filter" model="ir.filters">
    <field name="action_id" eval="False"/>
    <field name="active" eval="True"/>
    <field name="context">{}</field>
    <field name="domain">[["partner_id.card_customer","=",True]]</field>
    <field name="is_default" eval="True"/>
    <field name="model_id">sale.order</field>
    <field name="name">cart_customer is true</field>
    <field name="sort">[]</field>
  </record>

在自定义模块的搜索视图中创建过滤器

        <record id="view_sales_order_filter" model="ir.ui.view">
            <field name="name">sale.order.list.select</field>
            <field name="model">sale.order</field>
            <field name="inherit_id" ref="sale.view_sales_order_filter" />
            <field name="arch" type="xml">
                <filter name="need_message" position="after">
                    <filter name="filter_card_customer_true" string="card_customer is true"
                        domain="[('partner_id.card_customer','=',True)]" />
                </filter>
            </field>
        </record>

您可以在搜索视图中创建一个过滤器,通过继承销售订单的基本搜索视图,并创建一个新视图。

<data>
    <record id="sale_order_search_inherit_receipt" model="ir.ui.view">
        <field name="name">sale.order.search.receipt</field>
        <field name="model">sale.order</field>
        <field name="inherit_id" ref="sale.sale_order_view_search_inherit_quotation"/>
        <field name="arch" type="xml">
            <xpath expr="//filter[@name='order_confirmed']" position="after"> // Adding the filter after existing filter 'Confirmed Orders'
                <separator/>
                <filter string="Card Customer" name="is_card_customer" domain="[('partner_id.card_customer','=', True)]"/>
                <separator/>
            </xpath>
        </field>
    </record>
</data>