Help

0

Domain filter odoo11 manyToOne

Avatar
Quentin Soetemondt

Hello,

I need to get out of the equipment of a list following the following conditions:

A = is_bookable

B = maintenance.schedule_date

C = maintenance.end_date

D = context.schedule_date

E = context.end_date

F = maintenance_ids 

So i need : 

(A = true and F = false) or ( A = true and ( (B>E or C<D) or (B<E or C>D) ) )


I have tried this but I can book a equipment when I want to... The restriction of date are not taken... 

[
"|",
"&amp;",("is_bookable","=",True),("maintenance_ids","=",False),
"&amp;",("is_bookable","=",True),
[
"|",["maintenance_ids.schedule_date","&gt;",context.get('end_date')],["maintenance_ids.end_date","&lt;",context.get('schedule_date')],
"|",["maintenance_ids.schedule_date","&lt;",context.get('end_date')],["maintenance_ids.end_date","&gt;",context.get('schedule_date')]
]
]
4 Comments
Avatar
Discard
Avatar
Yogesh
-

maintenance_ids is a o2m or m2m field? to which record schedule_date belongs to if there are many?

Avatar
Quentin Soetemondt
-

Hi Yogesh, thanks for your interest! :)

maintenance_ids is a o2m. One equipment but multiple booking.

Its a module for the booking of equipment so i need to check if the equipment was free for the date the user want. For exemple i have 2 phone. I have a phone book from 01/01/2018 to 31/01/2018. It must be that this phone is not available if someone wants to book a phone of the 04/01/2018 to 08/01/2018

sorry for my english... I hope you understand what i mean..

Avatar
Quentin THEURET
-

I don't understand (A = true and F = false) or ( A = true and ( (B>E or C<D) or (B<E or C>D) ) )

Because for me, this equals to :

(A = true) AND (F = false or B > E or C < D or B < E or C > D)

That's a non-sense. I think you should say :

(A = true) AND (F = false OR (B > E and C < D) OR (B < E AND C > D))

That's right ?

Avatar
Quentin Soetemondt
-

Hi Quentin,

Verbatim I need to be able to book a equipment if its date of the beginning and end of its reservation before or after a reservation already existing. No possible overlap

so if I have 3 equipment:

the First E1 is book of the 02/01/2018 to 04/01/2018

The second E2 is book of the 06/01/2018 to 10/01/2018

The third E3 is book of the 02/01/2018 to 10/01/2018

My user like to book a equipment of the 02/01/2018 to 05/02/2018 therefore only E2 can be book.

By against if the user like book of the 01/01/2018 to 11/01/2018 No equipment cannot be Book

It is more clear?

1 Answer
0
Avatar
Quentin Soetemondt
Best Answer

I find this solution

[ ("is_bookable","=",True),
"|",("maintenance_ids","=",False),
"&amp;",
    "|",["maintenance_ids.schedule_date","&gt;",context.get('end_date')],["maintenance_ids.end_date","&lt;",context.get('schedule_date')],
      "|",["maintenance_ids.schedule_date","&lt;",context.get('end_date')],["maintenance_ids.end_date","&gt;",context.get('schedule_date')]]
Avatar
Discard