From fd718833b1e931c3d4435ab41da2a569a0739dfd Mon Sep 17 00:00:00 2001 From: Abdeali Chharchhoda Date: Mon, 1 Dec 2025 13:12:23 +0530 Subject: [PATCH] refactor: optimize picked quantity updates using bulk_update (cherry picked from commit 5f986e40326062fd3274e06f57ec33d9a32e82c3) --- erpnext/stock/doctype/pick_list/pick_list.py | 28 ++++++-------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py index 8d251d143a9..a4a335d2c5c 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.py +++ b/erpnext/stock/doctype/pick_list/pick_list.py @@ -383,35 +383,23 @@ class PickList(TransactionBase): picked_items = get_picked_items_qty(packed_items, contains_packed_items=True) self.validate_picked_qty(picked_items) - picked_qty = frappe._dict() + doc_updates = {} for d in picked_items: - picked_qty[d.product_bundle_item] = d.picked_qty + doc_updates[d.product_bundle_item] = {"picked_qty": flt(d.picked_qty)} - for packed_item in packed_items: - frappe.db.set_value( - "Packed Item", - packed_item, - "picked_qty", - flt(picked_qty.get(packed_item)), - update_modified=False, - ) + if doc_updates: + frappe.db.bulk_update("Packed Item", doc_updates, update_modified=False) def update_sales_order_item_qty(self, so_items): picked_items = get_picked_items_qty(so_items) self.validate_picked_qty(picked_items) - picked_qty = frappe._dict() + doc_updates = {} for d in picked_items: - picked_qty[d.sales_order_item] = d.picked_qty + doc_updates[d.sales_order_item] = {"picked_qty": flt(d.picked_qty)} - for so_item in so_items: - frappe.db.set_value( - "Sales Order Item", - so_item, - "picked_qty", - flt(picked_qty.get(so_item)), - update_modified=False, - ) + if doc_updates: + frappe.db.bulk_update("Sales Order Item", doc_updates, update_modified=False) def update_sales_order_picking_status(self) -> None: sales_orders = []