From 3dbadfadd5e273f11019daacc605acc49a848b71 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 09:46:45 +0000 Subject: [PATCH] fix: raw material should not have target warehouse in manufacture entry (backport #54849) (#54861) fix: raw material should not have target warehouse in manufacture entry (#54849) (cherry picked from commit b5527cf328d47613f7484104405d1c1a6a481873) 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 b06c0013e9d..d8fa53210da 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -243,7 +243,6 @@ class StockEntry(StockController, SubcontractingInwardController): 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() @@ -259,6 +258,7 @@ class StockEntry(StockController, SubcontractingInwardController): else: self.validate_job_card_fg_item() + self.validate_warehouse() self.validate_with_material_request() self.validate_batch() self.validate_inspection() @@ -853,15 +853,14 @@ class StockEntry(StockController, SubcontractingInwardController): 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.type or d.is_legacy_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.type or d.is_legacy_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: