diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index 4a8aaac03dd..0facf78cad6 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -37,6 +37,7 @@ from erpnext.manufacturing.doctype.manufacturing_settings.manufacturing_settings from erpnext.manufacturing.doctype.work_order.services.material_coverage import ( get_minimum_material_coverage_fraction, ) +from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults from erpnext.stock.doctype.batch.batch import make_batch from erpnext.stock.doctype.item.item import get_item_defaults, validate_end_of_life from erpnext.stock.doctype.serial_no.serial_no import get_available_serial_nos, get_serial_nos @@ -576,7 +577,18 @@ class WorkOrder(Document): if not self.wip_warehouse and not self.skip_transfer: self.wip_warehouse = frappe.get_cached_value("Company", self.company, "default_wip_warehouse") if not self.fg_warehouse: - self.fg_warehouse = frappe.get_cached_value("Company", self.company, "default_fg_warehouse") + self.fg_warehouse = ( + frappe.get_cached_value("Company", self.company, "default_fg_warehouse") + or self.get_production_item_warehouse() + ) + + def get_production_item_warehouse(self): + if not self.production_item: + return None + + return get_item_defaults(self.production_item, self.company).get( + "default_warehouse" + ) or get_item_group_defaults(self.production_item, self.company).get("default_warehouse") def check_wip_warehouse_skip(self): if self.skip_transfer and not self.from_wip_warehouse: @@ -1714,7 +1726,12 @@ class WorkOrder(Document): "allow_alternative_item": item.allow_alternative_item, "required_qty": item.qty, "source_warehouse": ( - self.source_warehouse or item.source_warehouse or item.default_warehouse + self.source_warehouse + or item.source_warehouse + or item.default_warehouse + or get_item_group_defaults(item.item_code, self.company).get( + "default_warehouse" + ) ) if not reset_source_warehouse else self.source_warehouse,