fix: incorrect requested quantity for the subcontracting order
diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py
index 3d55a08..b52fbad 100644
--- a/erpnext/controllers/subcontracting_controller.py
+++ b/erpnext/controllers/subcontracting_controller.py
@@ -952,6 +952,23 @@
return self._sub_contracted_items
+ def update_requested_qty(self):
+ material_request_map = {}
+ for d in self.get("items"):
+ if d.material_request_item:
+ material_request_map.setdefault(d.material_request, []).append(d.material_request_item)
+
+ for mr, mr_item_rows in material_request_map.items():
+ if mr and mr_item_rows:
+ mr_obj = frappe.get_doc("Material Request", mr)
+
+ if mr_obj.status in ["Stopped", "Cancelled"]:
+ frappe.throw(
+ _("Material Request {0} is cancelled or stopped").format(mr), frappe.InvalidStatusError
+ )
+
+ mr_obj.update_requested_qty(mr_item_rows)
+
def get_item_details(items):
item = frappe.qb.DocType("Item")