Support list as search operand on shipment measurements

Closes #13437
(grafted from 254da45259dc2b75b57f55c0e4d873d7c57e87a0)

--HG--
branch : 7.0
This commit is contained in:
Cédric Krier
2024-08-05 18:53:34 +02:00
parent 87e5de96cc
commit 8e81f18950
2 changed files with 16 additions and 2 deletions
+14 -2
View File
@@ -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',
@@ -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)