From a5e18d4ef835488844c7aa4b6dc79f15b0f52009 Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Wed, 3 Dec 2025 17:48:38 +0530 Subject: [PATCH] fix(picklist): calculate picked qty excluding the delivered qty (cherry picked from commit f5b75b27d775a9d4f0aac1be27b46f1c85e52e02) # Conflicts: # erpnext/stock/doctype/pick_list/pick_list.py --- erpnext/stock/doctype/pick_list/pick_list.py | 41 ++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py index a94370c48a5..78a1462cd89 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.py +++ b/erpnext/stock/doctype/pick_list/pick_list.py @@ -527,6 +527,47 @@ class PickList(Document): if serial_no: picked_items[row.item_code][key]["serial_no"].extend(serial_no) +<<<<<<< HEAD +======= + def _get_pick_list_items(self, items): + pi = frappe.qb.DocType("Pick List") + pi_item = frappe.qb.DocType("Pick List Item") + query = ( + frappe.qb.from_(pi) + .inner_join(pi_item) + .on(pi.name == pi_item.parent) + .select( + pi_item.item_code, + pi_item.warehouse, + pi_item.batch_no, + pi_item.serial_and_batch_bundle, + pi_item.serial_no, + ( + Case() + .when( + (pi_item.picked_qty > 0) & (pi_item.docstatus == 1), + pi_item.picked_qty - pi_item.delivered_qty, + ) + .else_(pi_item.stock_qty) + ).as_("picked_qty"), + ) + .where( + (pi_item.item_code.isin([x.item_code for x in items])) + & ((pi_item.picked_qty > 0) | (pi_item.stock_qty > 0)) + & (pi.status != "Completed") + & (pi.status != "Cancelled") + & (pi_item.docstatus != 2) + ) + ) + + if self.name: + query = query.where(pi_item.parent != self.name) + + query = query.for_update() + + return query.run(as_dict=True) + +>>>>>>> f5b75b27d7 (fix(picklist): calculate picked qty excluding the delivered qty) def _get_product_bundles(self) -> dict[str, str]: # Dict[so_item_row: item_code] product_bundles = {}