diff --git a/modules/stock_shipment_measurements/stock.py b/modules/stock_shipment_measurements/stock.py index 8a2a5358bd..f3c40875ab 100644 --- a/modules/stock_shipment_measurements/stock.py +++ b/modules/stock_shipment_measurements/stock.py @@ -279,12 +279,24 @@ class MeasurementsMixin(object): measurement = Sum(move.internal_weight) if value is not None: kg = Uom(ModelData.get_id('product', 'uom_kilogram')) - value = Uom.compute_qty(uom, value, kg, round=False) + if isinstance(value, (int, float)): + value = Uom.compute_qty(uom, value, kg, round=False) + else: + value = [ + Uom.compute_qty(uom, v, kg, round=False) + if v is not None else v + for v in value] else: measurement = Sum(move.internal_volume) if value is not None: liter = Uom(ModelData.get_id('product', 'uom_liter')) - value = Uom.compute_qty(uom, value, liter, round=False) + if isinstance(value, (int, float)): + value = Uom.compute_qty(uom, value, liter, round=False) + else: + value = [ + Uom.compute_qty(uom, v, liter, round=False) + if v is not None else v + for v in value] query = table.join( move, type_='LEFT', diff --git a/modules/stock_shipment_measurements/tests/test_module.py b/modules/stock_shipment_measurements/tests/test_module.py index 5c31fa0487..528fb53b27 100644 --- a/modules/stock_shipment_measurements/tests/test_module.py +++ b/modules/stock_shipment_measurements/tests/test_module.py @@ -187,8 +187,10 @@ class StockShipmentMeasurementsTestCase(CompanyTestMixin, ModuleTestCase): for clause, result in [ ([('weight', '=', 10)], [shipment]), ([('weight', '=', 5)], []), + ([('weight', 'in', [10, 5])], [shipment]), ([('volume', '=', 2)], [shipment]), ([('volume', '=', 3)], []), + ([('volume', 'in', [2, 3])], [shipment]), ]: msg = 'clause: %s' % clause self.assertEqual(Shipment.search(clause), result, msg=msg)