2017-05-02 4 views
0

Ich möchte einen eine UND Operator anidate innerhalb ODER, Suchfunktion von odoo 9.Wie kann ich ein UND in einem ODER in der Suchfunktion anidieren? In Odoo 9

Ich habe diese beiden Bedingungen:

A = self.env['sale.order'].search(['&', ('state', '=', 'done'), ('id', '>', my_id)]) 
B = self.env['sale.order'].search([('date_order', '>', my_date)]) 

Diese Bedingungen funktionieren pro separaten , aber ich brauche A OR B

ich das versucht habe:

C = self.env['sale.order'].search(['|', ('date_order', '>', my_date), ('&', ('state', '=', 'done'), ('id', '>', my_id))]) 

Das funktioniert nicht. Es gibt mir diesen Fehler:

ValueError: "Invalid leaf ('&', ('state', '=', 'done'), ('id', '>', my_id))" while evaluating 

Was ist der richtige Weg, um den Zustand einzustellen?

+0

@Odedra Es war ein Fehler von Copy & Paste. Ich habe es korrigiert. – MouTio

Antwort

1

Dies sollte es dem Bediener, bevor die beiden Tupel verwenden immer tun:

C = self.env['sale.order'].search(['|', ('date_order', '>', my_date), '&', ('state', '=', 'done'), ('id', '>', my_id)]) 

EDITS:

dies ist das gleiche wie:

('date_order', '>', my_date) OR (('state', '=', 'done') AND ('id', '>', my_id)) 

Beispiel:

 A and (B or (C AND D)) 

    A and (B or (AND, C, D)) 

    A and,(or, B, AND, C, D) 

    and, A, or, B, AND, C, D