0
votes

I have a question about the possibility to use a One2Many field in the search view for filter purposes. Lets say I have this field here:

class AccountInvoice(models.Model):
    _inherit= 'account.invoice'

    custom_field_ids = fields.One2Many(
        comodel_name='account.payment.order',
        compute='some_method',
        readonly=True,
    ) 

Now I want to go ahead and insert a filter into the search view

        <record id="view_payment_order_filter" model="ir.ui.view">
            <field name="name">view.payment.order.filter</field>
            <field name="model">account.invoice</field>
            <field name="inherit_id" ref="account.view_account_invoice_filter"/>
            <field name="arch" type="xml">

                <xpath expr="//filter[@name='refunds']" position="after">
                    <filter string="In Payment Orders" domain="[('payment_order_ids', '!=', False)]" />
                </xpath>

            </field>
        </record>

When I update the module then it doesnt give me any error. But the filter is not working. I did some research on this but there is no real "best practise" solution for this. What would be a good approach to enable the filter for this field. I basicaly want to show all invoices where this One2Many field is not empty.

1
In older version i had problems using One2many fields as computed fields. I tried to avoid them by using Many2many fields instead. And if you want to search on computed fields, you have to store them, which isn't easy in Odoo 10. What about an alternative? Have 2 computed fields: Many2many for showing the payments and a boolean stored computed field for the search (filter).CZoellner

1 Answers

0
votes

You can't filter with fields that are not stored. An workaround for this is to make a bool field stored based on your condition. Than add this field to search view as filter.