From 760c26e9c0ab0c35f3fe6296809ceb1ca3082c0e Mon Sep 17 00:00:00 2001 From: Sagar Sharma Date: Sat, 5 Nov 2022 15:50:39 +0530 Subject: [PATCH] fix: make `BOM` required in SCR Item --- .../controllers/subcontracting_controller.py | 3 +++ .../subcontracting_receipt.py | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) 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")