diff --git a/erpnext/manufacturing/doctype/work_order/work_order.js b/erpnext/manufacturing/doctype/work_order/work_order.js index 92080c05baf..2f189ba4c46 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.js +++ b/erpnext/manufacturing/doctype/work_order/work_order.js @@ -116,6 +116,20 @@ frappe.ui.form.on("Work Order", { frm.set_indicator_formatter("operation", function (doc) { return frm.doc.qty == doc.completed_qty ? "green" : "orange"; }); + + if (frm.doc.docstatus == 0 && frm.doc.bom_no) { + frappe.call({ + method: "erpnext.manufacturing.doctype.work_order.work_order.check_if_scrap_warehouse_mandatory", + args: { + bom_no: frm.doc.bom_no, + }, + callback: function (r) { + if (r.message["set_scrap_wh_mandatory"]) { + frm.toggle_reqd("scrap_warehouse", true); + } + }, + }); + } }, onload: function (frm) { diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index a1260c5ffdd..0d1175b2fe0 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -2123,7 +2123,16 @@ class StockEntry(StockController): "Work Order", self.work_order, "allow_alternative_item" ) - item.from_warehouse = self.from_warehouse or item.source_warehouse or item.default_warehouse + item.from_warehouse = ( + frappe.get_value( + "Work Order Item", + {"parent": self.work_order, "item_code": item.item_code}, + "source_warehouse", + ) + if frappe.get_value("Work Order", self.work_order, "skip_transfer") + and not frappe.get_value("Work Order", self.work_order, "from_wip_warehouse") + else self.from_warehouse or item.source_warehouse or item.default_warehouse + ) if item.item_code in used_alternative_items: alternative_item_data = used_alternative_items.get(item.item_code) item.item_code = alternative_item_data.item_code