From dbaa44688ea6cf1d36e1d7d1dd9f71e41de370ea Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Mon, 11 Aug 2025 10:21:16 +0530 Subject: [PATCH] fix: modify all remaining SRE queries to consider new Closed status --- erpnext/controllers/selling_controller.py | 25 +++++++++++-------- .../stock_reservation_entry.py | 2 +- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py index f5350fedfa9..9e1ed45ae2f 100644 --- a/erpnext/controllers/selling_controller.py +++ b/erpnext/controllers/selling_controller.py @@ -855,18 +855,21 @@ class SellingController(StockController): if not item.get(so_field) or not item.so_detail: continue - sre_list = frappe.db.get_all( - "Stock Reservation Entry", - { - "docstatus": 1, - "voucher_type": "Sales Order", - "voucher_no": item.get(so_field), - "voucher_detail_no": item.so_detail, - "warehouse": item.warehouse, - "status": ["not in", ["Delivered", "Cancelled"]], - }, - order_by="creation", + table = frappe.qb.DocType("Stock Reservation Entry") + query = ( + frappe.qb.from_(table) + .select(table.name) + .where( + (table.docstatus == 1) + & (table.voucher_type == "Sales Order") + & (table.voucher_no == item.get(so_field)) + & (table.voucher_detail_no == item.so_detail) + & (table.warehouse == item.warehouse) + & (table.delivered_qty < table.reserved_qty) + ) + .orderby(table.creation) ) + sre_list = query.run(pluck="name") # Skip if no Stock Reservation Entries. if not sre_list: diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py index 0080a4438ae..d6e2af28697 100644 --- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py +++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py @@ -1425,7 +1425,7 @@ class StockReservation: ) .where( (sre.docstatus == 1) - & (sre.status.notin(["Delivered", "Cancelled", "Draft", "Closed"])) + & (sre.delivered_qty < sre.reserved_qty) & (sre.voucher_type == doctype) & (sre.voucher_no.isin(docnames)) )