Contributors mailing list archives

contributors@odoo-community.org

Browse archives

Avatar

Re: Assistance Needed: Searching for Specific Products in Sales Orders (Odoo CE 17.0+)

by
Holger Brunn
- 13/11/2024 09:37:55
> [("order_line.product_id.name", "ilike",

> "blue"),(("order_line.product_id.name", "ilike", "desk"))]

> 

> 

> I expect to get sales orders only containing the product*Blue xxxsome_elsexx

> Desk*

this expectation is wrong. Your domain evaluates to something like

select id
from sale_order
where
exists (
  select id from order_line ...
  where .... name like '%blue%'
)
and
exists (
  select id from order_line ...
  where .... name like '%desk%'
)

so any order having some (not necessarily the same) order line satisfying your 
conditions will be returned.

What you need is the any operator that was introduced in v17:
https://www.odoo.com/documentation/17.0/developer/reference/backend/
orm.html#search-domains

 [("order_line.product_id", "any", [("name", "ilike", "blue"),("name", 
"ilike", "desk")])]

and before v17 you were just out of luck trying to express such a condition 
with a domain.

If you also want to exclude orders with order lines not fitting your condition, 
you need to add a "not any" clause.


-- 
Your partner for the hard Odoo problems
https://hunki-enterprises.com

Reference