diff --git a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
index 95c78e6..049a822 100644
--- a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
+++ b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.js
@@ -12,6 +12,10 @@
 			"fieldtype": "Link",
 			"options": "Warehouse",
 			"reqd": 1
+		}, {
+			"fieldname": "show_exploded_view",
+			"label": __("Show exploded view"),
+			"fieldtype": "Check"
 		}
 	]
 }
diff --git a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.py b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.py
index ab9f83d..3236839 100644
--- a/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.py
+++ b/erpnext/manufacturing/report/bom_stock_report/bom_stock_report.py
@@ -6,52 +6,61 @@
 from frappe import _
 
 def execute(filters=None):
-    if not filters: filters = {}
-    columns = get_columns()
-    data = get_bom_stock(filters)
-    return columns, data
+	if not filters: filters = {}
+	columns = get_columns()
+
+	data = get_bom_stock(filters)
+
+	return columns, data
 
 def get_columns():
-    """return columns"""
-    columns = [
-        _("Item") + ":Link/Item:150",
-        _("Description") + "::500",
-        _("Required Qty") + ":Float:100",
-        _("In Stock Qty") + ":Float:100",
-        _("Enough Parts to Build") + ":Float:200",
-    ]
+	"""return columns"""
+	columns = [
+		_("Item") + ":Link/Item:150",
+		_("Description") + "::500",
+		_("Required Qty") + ":Float:100",
+		_("In Stock Qty") + ":Float:100",
+		_("Enough Parts to Build") + ":Float:200",
+	]
 
-    return columns
+	return columns
 
 def get_bom_stock(filters):
-    conditions = ""
-    bom = filters.get("bom")
+	conditions = ""
+	bom = filters.get("bom")
 
-    if filters.get("warehouse"):
-        warehouse_details = frappe.db.get_value("Warehouse", filters.get("warehouse"), ["lft", "rgt"], as_dict=1)
-        if warehouse_details:
-            conditions += " and exists (select name from `tabWarehouse` wh \
-        	    where wh.lft >= %s and wh.rgt <= %s and ledger.warehouse = wh.name)" % (warehouse_details.lft,
-                warehouse_details.rgt)
-        else:
-            conditions += " and ledger.warehouse = '%s'" % frappe.db.escape(filters.get("warehouse"))
+	table = "`tabBOM Item`"
+	qty_field = "qty"
 
-    else:
-        conditions += ""
+	if filters.get("show_exploded_view"):
+		table = "`tabBOM Explosion Item`"
+		qty_field = "stock_qty"
 
-    return frappe.db.sql("""
-    		SELECT
-    	        bom_item.item_code ,
-    	        bom_item.description ,
-    	        bom_item.qty,
-    	        sum(ledger.actual_qty) as actual_qty,
-    	        sum(FLOOR(ledger.actual_qty /bom_item.qty))as to_build
-            FROM
-    	        `tabBOM Item` AS bom_item
-    	        LEFT JOIN `tabBin` AS ledger
-    		    ON bom_item.item_code = ledger.item_code
-    		    %s
-            WHERE
-    	        bom_item.parent = '%s' and bom_item.parenttype='BOM'
+	if filters.get("warehouse"):
+		warehouse_details = frappe.db.get_value("Warehouse", filters.get("warehouse"), ["lft", "rgt"], as_dict=1)
+		if warehouse_details:
+			conditions += " and exists (select name from `tabWarehouse` wh \
+				where wh.lft >= %s and wh.rgt <= %s and ledger.warehouse = wh.name)" % (warehouse_details.lft,
+				warehouse_details.rgt)
+		else:
+			conditions += " and ledger.warehouse = '%s'" % frappe.db.escape(filters.get("warehouse"))
 
-            GROUP BY bom_item.item_code""" % (conditions, bom))
+	else:
+		conditions += ""
+
+	return frappe.db.sql("""
+			SELECT
+				bom_item.item_code ,
+				bom_item.description ,
+				bom_item.{qty_field},
+				sum(ledger.actual_qty) as actual_qty,
+				sum(FLOOR(ledger.actual_qty / bom_item.{qty_field}))as to_build
+			FROM
+				{table} AS bom_item
+				LEFT JOIN `tabBin` AS ledger
+				ON bom_item.item_code = ledger.item_code
+				{conditions}
+			WHERE
+				bom_item.parent = '{bom}' and bom_item.parenttype='BOM'
+
+			GROUP BY bom_item.item_code""".format(qty_field=qty_field, table=table, conditions=conditions, bom=bom))
