From 9a4c693f2de641d7d9699157866f9c6dc9c52b92 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 22 Apr 2026 15:05:29 +0000 Subject: [PATCH] fix: sales order is not valid when creating WO from MR from PP (backport #54435) (#54470) fix: sales order is not valid when creating WO from MR from PP (#54435) (cherry picked from commit e65b9fc2ae96fa10c03ff4d064bad956a8cc13d6) Co-authored-by: Mihir Kandoi --- .../doctype/work_order/work_order.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index 8bc2e7c1953..2de6f934a15 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -228,6 +228,18 @@ class WorkOrder(Document): if self.production_plan_sub_assembly_item: return + production_item = self.production_item + + if self.material_request_item and ( + mr_plan_item := frappe.get_value( + "Material Request Item", self.material_request_item, "material_request_plan_item" + ) + ): + if main_item_code := frappe.get_value( + "Material Request Plan Item", mr_plan_item, "main_item_code" + ): + production_item = main_item_code + if self.sales_order: self.check_sales_order_on_hold_or_close() @@ -248,8 +260,8 @@ class WorkOrder(Document): & (SalesOrder.docstatus == 1) & (SalesOrder.name == self.sales_order) & ( - (SalesOrderItem.item_code == self.production_item) - | (ProductBundleItem.item_code == self.production_item) + (SalesOrderItem.item_code == production_item) + | (ProductBundleItem.item_code == production_item) ) ) .run(as_dict=1) @@ -268,7 +280,7 @@ class WorkOrder(Document): & (SalesOrder.skip_delivery_note == 0) & (SalesOrderItem.item_code == PackedItem.parent_item) & (SalesOrder.docstatus == 1) - & (PackedItem.item_code == self.production_item) + & (PackedItem.item_code == production_item) ) .run(as_dict=1) )