fix: performance issue related to stock entry (#39301)
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.js b/erpnext/manufacturing/doctype/production_plan/production_plan.js
index cd92263..c9c474d 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.js
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.js
@@ -173,7 +173,7 @@
method: "set_status",
freeze: true,
doc: frm.doc,
- args: {close : close},
+ args: {close : close, update_bin: true},
callback: function() {
frm.reload_doc();
}
diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py
index f64af50..5dc5c38 100644
--- a/erpnext/manufacturing/doctype/production_plan/production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py
@@ -579,7 +579,7 @@
frappe.delete_doc("Work Order", d.name)
@frappe.whitelist()
- def set_status(self, close=None):
+ def set_status(self, close=None, update_bin=False):
self.status = {0: "Draft", 1: "Submitted", 2: "Cancelled"}.get(self.docstatus)
if close:
@@ -599,7 +599,7 @@
if close is not None:
self.db_set("status", self.status)
- if self.docstatus == 1 and self.status != "Completed":
+ if update_bin and self.docstatus == 1 and self.status != "Completed":
self.update_bin_qty()
def update_ordered_status(self):
diff --git a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
index fedeb7a..1c748a8 100644
--- a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
+++ b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py
@@ -1486,14 +1486,14 @@
before_qty = flt(frappe.db.get_value("Bin", bin_name, "reserved_qty_for_production_plan"))
pln.reload()
- pln.set_status(close=True)
+ pln.set_status(close=True, update_bin=True)
bin_name = get_or_make_bin(rm_item, rm_warehouse)
after_qty = flt(frappe.db.get_value("Bin", bin_name, "reserved_qty_for_production_plan"))
self.assertAlmostEqual(after_qty, before_qty - 10)
pln.reload()
- pln.set_status(close=False)
+ pln.set_status(close=False, update_bin=True)
bin_name = get_or_make_bin(rm_item, rm_warehouse)
after_qty = flt(frappe.db.get_value("Bin", bin_name, "reserved_qty_for_production_plan"))