From 8e81f1895085426ef06d85eef3b1c13e3aa84104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 5 Aug 2024 18:53:34 +0200 Subject: [PATCH] Support list as search operand on shipment measurements Closes #13437 (grafted from 254da45259dc2b75b57f55c0e4d873d7c57e87a0) --HG-- branch : 7.0 --- modules/stock_shipment_measurements/stock.py | 16 ++++++++++++++-- .../tests/test_module.py | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) 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)