diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index c28e0054c99..d1bfa8edc0d 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -1461,7 +1461,13 @@ def get_item_details(item, project=None, skip_bom_info=False, throw=True): @frappe.whitelist() def make_work_order( - bom_no, item, qty=0, company=None, project=None, variant_items=None, use_multi_level_bom=None + bom_no: str, + item: str, + qty: float = 0, + company: str | None = None, + project: str | None = None, + variant_items: str | list | None = None, + use_multi_level_bom: bool | None = None, ): from erpnext import get_default_company @@ -1470,7 +1476,8 @@ def make_work_order( item_details = get_item_details(item, project) - if frappe.db.get_value("Item", item, "variant_of"): + # selected BOM already belongs to this variant — keep it + if frappe.db.get_value("Item", item, "variant_of") and frappe.db.get_value("BOM", bom_no, "item") != item: if variant_bom := frappe.db.get_value( "BOM", {"item": item, "is_default": 1, "docstatus": 1},