diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py index aa4468c04e..8d67e300a3 100644 --- a/erpnext/controllers/subcontracting_controller.py +++ b/erpnext/controllers/subcontracting_controller.py @@ -89,6 +89,9 @@ class SubcontractingController(StockController): if bom.item != item.item_code: msg = f"Please select an valid BOM for Item {item.item_name}." frappe.throw(_(msg)) + else: + msg = f"Please select a BOM for Item {item.item_name}." + frappe.throw(_(msg)) def __get_data_before_save(self): item_dict = {} diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py index cd05b745e6..bce53608be 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py @@ -57,6 +57,7 @@ class SubcontractingReceipt(SubcontractingController): def before_validate(self): super(SubcontractingReceipt, self).before_validate() + self.set_items_bom() self.set_items_cost_center() self.set_items_expense_account() @@ -193,6 +194,24 @@ class SubcontractingReceipt(SubcontractingController): ).format(item.idx) ) + def set_items_bom(self): + if self.is_return: + for item in self.items: + if not item.bom: + item.bom = frappe.db.get_value( + "Subcontracting Receipt Item", + {"name": item.subcontracting_receipt_item, "parent": self.return_against}, + "bom", + ) + else: + for item in self.items: + if not item.bom: + item.bom = frappe.db.get_value( + "Subcontracting Order Item", + {"name": item.subcontracting_order_item, "parent": item.subcontracting_order}, + "bom", + ) + def set_items_cost_center(self): if self.company: cost_center = frappe.get_cached_value("Company", self.company, "cost_center")