trytond-patches/issue53451002_1_10001.diff
2019-01-02 16:59:18 +01:00

68 lines
3.5 KiB
Diff

Index: ticnova/trytond/trytond/modules/stock/move.py
===================================================================
--- ticnova.orig/trytond/trytond/modules/stock/move.py
+++ ticnova/trytond/trytond/modules/stock/move.py
@@ -850,7 +850,6 @@ class Move(Workflow, ModelSQL, ModelView
])
else:
locations = list(set((m.from_location for m in moves)))
-
location_ids = [l.id for l in locations]
product_ids = list(set((m.product.id for m in moves)))
stock_date_end = Date.today()
@@ -967,7 +966,8 @@ class Move(Workflow, ModelSQL, ModelView
@classmethod
def compute_quantities_query(cls, location_ids, with_childs=False,
- grouping=('product',), grouping_filter=None):
+ grouping=('product',), grouping_filter=None,
+ quantity_field='internal_quantity'):
"""
Prepare a query object to compute for each location and product the
stock quantity in the default uom of the product.
@@ -985,6 +985,8 @@ class Move(Workflow, ModelSQL, ModelView
stock_skip_warehouse: if set, quantities on a warehouse are no more
quantities of all child locations but quantities of the storage
zone.
+ quantity_field is the name of the field containing the quantity to be
+ aggregated
If with_childs, it computes also for child locations.
grouping is a tuple of Move (or Product if prefixed by 'product.')
field names and defines how stock moves are grouped.
@@ -1122,7 +1124,7 @@ class Move(Workflow, ModelSQL, ModelView
if PeriodCache:
location = Location.__table__()
parent_location = Location.__table__()
- columns = ['internal_quantity', 'period'] + list(grouping)
+ columns = [quantity_field, 'period'] + list(grouping)
columns = [Column(period_cache, c).as_(c) for c in columns]
period_cache = Union(
period_cache.select(
@@ -1320,7 +1322,7 @@ class Move(Workflow, ModelSQL, ModelView
move_keys_alias = [Column(move, key).as_(key) for key in grouping]
move_keys = [Column(move, key) for key in grouping]
query = move.select(move.to_location.as_('location'),
- Sum(move.internal_quantity).as_('quantity'),
+ Sum(getattr(move, quantity_field)).as_('quantity'),
*move_keys_alias,
where=state_date_clause_in
& where
@@ -1330,7 +1332,7 @@ class Move(Workflow, ModelSQL, ModelView
& dest_clause_from,
group_by=[move.to_location] + move_keys)
query = Union(query, move.select(move.from_location.as_('location'),
- (-Sum(move.internal_quantity)).as_('quantity'),
+ (-Sum(getattr(move, quantity_field))).as_('quantity'),
*move_keys_alias,
where=state_date_clause_out
& where
@@ -1345,7 +1347,7 @@ class Move(Workflow, ModelSQL, ModelView
for key in grouping]
query = Union(query, from_period.select(
period_cache.location.as_('location'),
- period_cache.internal_quantity.as_('quantity'),
+ getattr(period_cache, quantity_field).as_('quantity'),
*period_keys,
where=(period_cache.period
== (period.id if period else None))