diff --git a/addons/sale_stock/models/sale_order.py b/addons/sale_stock/models/sale_order.py index 9045f6f8db4..12f2d445689 100644 --- a/addons/sale_stock/models/sale_order.py +++ b/addons/sale_stock/models/sale_order.py @@ -262,6 +262,7 @@ class SaleOrderLine(models.Model): grouped_lines = defaultdict(lambda: self.env['sale.order.line']) # We first loop over the SO lines to group them by warehouse and schedule # date in order to batch the read of the quantities computed field. + now = fields.Datetime.now() for line in self: if not line.display_qty_widget: continue @@ -269,7 +270,7 @@ class SaleOrderLine(models.Model): if line.order_id.commitment_date: date = line.order_id.commitment_date else: - confirm_date = line.order_id.date_order if line.order_id.state in ['sale', 'done'] else datetime.now() + confirm_date = line.order_id.date_order if line.order_id.state in ['sale', 'done'] else now date = confirm_date + timedelta(days=line.customer_lead or 0.0) grouped_lines[(line.warehouse_id.id, date)] |= line diff --git a/addons/sale_stock/tests/test_sale_stock.py b/addons/sale_stock/tests/test_sale_stock.py index fbc3dd74df2..f2f4331033f 100644 --- a/addons/sale_stock/tests/test_sale_stock.py +++ b/addons/sale_stock/tests/test_sale_stock.py @@ -653,6 +653,9 @@ class TestSaleStock(TestSaleCommon): self.assertEqual(line.warehouse_id, warehouse1) self.assertEqual(line.qty_to_deliver, 1) so.warehouse_id = warehouse2 + # invalidate product cache to ensure qty_available is recomputed + # bc warehouse isn't in the depends_context of qty_available + line.product_id.invalidate_cache() self.assertEqual(line.virtual_available_at_date, 5) self.assertEqual(line.free_qty_today, 5) self.assertEqual(line.qty_available_today, 5)