@@ -425,6 +425,18 @@ def validate_sales_order(self):
425425 if self .production_plan_sub_assembly_item :
426426 return
427427
428+ production_item = self .production_item
429+
430+ if self .material_request_item and (
431+ mr_plan_item := frappe .get_value (
432+ "Material Request Item" , self .material_request_item , "material_request_plan_item"
433+ )
434+ ):
435+ if main_item_code := frappe .get_value (
436+ "Material Request Plan Item" , mr_plan_item , "main_item_code"
437+ ):
438+ production_item = main_item_code
439+
428440 if self .sales_order :
429441 self .check_sales_order_on_hold_or_close ()
430442
@@ -445,8 +457,8 @@ def validate_sales_order(self):
445457 & (SalesOrder .docstatus == 1 )
446458 & (SalesOrder .name == self .sales_order )
447459 & (
448- (SalesOrderItem .item_code == self . production_item )
449- | (ProductBundleItem .item_code == self . production_item )
460+ (SalesOrderItem .item_code == production_item )
461+ | (ProductBundleItem .item_code == production_item )
450462 )
451463 )
452464 .run (as_dict = 1 )
@@ -465,7 +477,7 @@ def validate_sales_order(self):
465477 & (SalesOrder .skip_delivery_note == 0 )
466478 & (SalesOrderItem .item_code == PackedItem .parent_item )
467479 & (SalesOrder .docstatus == 1 )
468- & (PackedItem .item_code == self . production_item )
480+ & (PackedItem .item_code == production_item )
469481 )
470482 .run (as_dict = 1 )
471483 )
0 commit comments