Use Function fields to compute moves
Using the Function field on stock move as relation field is not very efficient because of the sub-query it generates. issue11204 review395421008
This commit is contained in:
+10
-2
@@ -217,7 +217,9 @@ class Purchase(
|
||||
shipment_returns = fields.Function(fields.Many2Many(
|
||||
'stock.shipment.in.return', None, None, "Shipment Returns"),
|
||||
'get_shipment_returns', searcher='search_shipment_returns')
|
||||
moves = fields.One2Many('stock.move', 'purchase', 'Moves', readonly=True)
|
||||
moves = fields.Function(
|
||||
fields.Many2Many('stock.move', None, None, "Moves"),
|
||||
'get_moves', searcher='search_moves')
|
||||
|
||||
quoted_by = employee_field(
|
||||
"Quoted By",
|
||||
@@ -602,6 +604,13 @@ class Purchase(
|
||||
return 'waiting'
|
||||
return 'none'
|
||||
|
||||
def get_moves(self, name):
|
||||
return [m.id for l in self.lines for m in l.moves]
|
||||
|
||||
@classmethod
|
||||
def search_moves(cls, name, clause):
|
||||
return [('lines.' + clause[0],) + tuple(clause[1:])]
|
||||
|
||||
@classmethod
|
||||
def _get_origin(cls):
|
||||
"Return list of Model names for origin Reference"
|
||||
@@ -692,7 +701,6 @@ class Purchase(
|
||||
default.setdefault('number', None)
|
||||
default.setdefault('invoice_state', 'none')
|
||||
default.setdefault('invoices_ignored', None)
|
||||
default.setdefault('moves', None)
|
||||
default.setdefault('shipment_state', 'none')
|
||||
default.setdefault('purchase_date', None)
|
||||
default.setdefault('quoted_by')
|
||||
|
||||
Reference in New Issue
Block a user