From bad85ad01b1fdc955c86db600bd4e466602c830f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 09:46:54 +0000 Subject: [PATCH] fix: raw material should not have target warehouse in manufacture entry (backport #54849) (#54860) * fix: raw material should not have target warehouse in manufacture entry (#54849) (cherry picked from commit b5527cf328d47613f7484104405d1c1a6a481873) # Conflicts: # erpnext/stock/doctype/stock_entry/stock_entry.py * chore: resolve conflicts --------- Co-authored-by: Mihir Kandoi --- .../stock/doctype/stock_entry/stock_entry.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index a4bf79cc943..ee832b8c6bb 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -214,7 +214,6 @@ class StockEntry(StockController): self.set_transfer_qty() self.validate_uom_is_integer("uom", "qty") self.validate_uom_is_integer("stock_uom", "transfer_qty") - self.validate_warehouse() self.validate_warehouse_of_sabb() self.validate_work_order() self.validate_source_stock_entry() @@ -227,6 +226,7 @@ class StockEntry(StockController): self.mark_finished_and_scrap_items() self.validate_finished_goods() + self.validate_warehouse() self.validate_with_material_request() self.validate_batch() self.validate_inspection() @@ -775,15 +775,14 @@ class StockEntry(StockController): frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx)) if self.purpose == "Manufacture": - if has_bom: - if d.is_finished_item or d.is_scrap_item: - d.s_warehouse = None - if not d.t_warehouse: - frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx)) - else: - d.t_warehouse = None - if not d.s_warehouse: - frappe.throw(_("Source warehouse is mandatory for row {0}").format(d.idx)) + if d.is_finished_item or d.is_scrap_item: + d.s_warehouse = None + if not d.t_warehouse: + frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx)) + else: + d.t_warehouse = None + if not d.s_warehouse: + frappe.throw(_("Source warehouse is mandatory for row {0}").format(d.idx)) if self.purpose == "Disassemble": if has_bom: