diff --git a/erpnext/docs/user/manual/de/accounts/journal-entry.md b/erpnext/docs/user/manual/de/accounts/journal-entry.md
index f823f0e..0885130 100644
--- a/erpnext/docs/user/manual/de/accounts/journal-entry.md
+++ b/erpnext/docs/user/manual/de/accounts/journal-entry.md
@@ -10,6 +10,7 @@
 <img class="screenshot" alt="Buchungssatz" src="{{docs_base_url}}/assets/img/accounts/journal-entry.png">
 
 In einem Buchungssatz müssen Sie folgendes tun:
+
 * Die Belegart über das DropDown-Menü auswählen.
 * Zeilen für die einzelnen Buchungen hinzufügen. In jeder Zeile müssen Sie folgendes Angeben:
     * Das Konto, das betroffen ist.
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 46ab671..41bce00 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -165,6 +165,7 @@
 execute:frappe.db.set_value("Backup Manager", None, "send_backups_to_dropbox", 1 if frappe.db.get_value("Backup Manager", None, "upload_backups_to_dropbox") in ("Daily", "Weekly") else 0)
 execute:frappe.db.sql_list("delete from `tabDocPerm` where parent='Issue' and modified_by='Administrator' and role='Guest'")
 erpnext.patches.v5_0.update_item_and_description_again
+erpnext.patches.v6_0.multi_currency
 erpnext.patches.v5_0.repost_gle_for_jv_with_multiple_party
 erpnext.patches.v5_0.portal_fixes
 erpnext.patches.v5_0.reset_values_in_tools
@@ -207,7 +208,6 @@
 execute:frappe.db.sql("""update `tabProject` set percent_complete=round(percent_complete, 2) where percent_complete is not null""")
 erpnext.patches.v6_0.fix_outstanding_amount
 erpnext.patches.v6_0.fix_planned_qty
-erpnext.patches.v6_0.multi_currency
 erpnext.patches.v6_2.remove_newsletter_duplicates
 erpnext.patches.v6_2.fix_missing_default_taxes_and_lead
 erpnext.patches.v6_3.convert_applicable_territory
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 07ac326..42e8d1b 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -139,8 +139,8 @@
 		return sle_dict
 
 	def on_trash(self):
-		sl_entries = frappe.db.sql("""select serial_no from `tabStock Ledger Entry` 
-			where serial_no like %s and item_code=%s and ifnull(is_cancelled, 'No')='No'""", 
+		sl_entries = frappe.db.sql("""select serial_no from `tabStock Ledger Entry`
+			where serial_no like %s and item_code=%s and ifnull(is_cancelled, 'No')='No'""",
 			("%%%s%%" % self.name, self.item_code), as_dict=True)
 
 		# Find the exact match
@@ -149,7 +149,7 @@
 			if self.name.upper() in get_serial_nos(d.serial_no):
 				sle_exists = True
 				break
-			
+
 		if sle_exists:
 			frappe.throw(_("Cannot delete Serial No {0}, as it is used in stock transactions").format(self.name))
 
@@ -208,9 +208,9 @@
 						if not allow_serial_nos_with_different_item(serial_no, sle):
 							frappe.throw(_("Serial No {0} does not belong to Item {1}").format(serial_no,
 								sle.item_code), SerialNoItemError)
-								
+
 					if sr.warehouse and sle.actual_qty > 0:
-						frappe.throw(_("Serial No {0} has already been received").format(sr.name),
+						frappe.throw(_("Serial No {0} has already been received").format(serial_no),
 							SerialNoDuplicateError)
 
 					if sle.actual_qty < 0:
@@ -229,10 +229,10 @@
 		elif sle.actual_qty < 0 or not item_det.serial_no_series:
 			frappe.throw(_("Serial Nos Required for Serialized Item {0}").format(sle.item_code),
 				SerialNoRequiredError)
-				
+
 def allow_serial_nos_with_different_item(sle_serial_no, sle):
 	"""
-		Allows same serial nos for raw materials and finished goods 
+		Allows same serial nos for raw materials and finished goods
 		in Manufacture / Repack type Stock Entry
 	"""
 	allow_serial_nos = False
@@ -244,9 +244,9 @@
 					serial_nos = get_serial_nos(d.serial_no)
 					if sle_serial_no in serial_nos:
 						allow_serial_nos = True
-	
+
 	return allow_serial_nos
-			
+
 def update_serial_nos(sle, item_det):
 	if sle.is_cancelled == "No" and not sle.serial_no and sle.actual_qty > 0 \
 			and item_det.has_serial_no == 1 and item_det.serial_no_series:
diff --git a/erpnext/stock/report/stock_balance/stock_balance.js b/erpnext/stock/report/stock_balance/stock_balance.js
index db334f8..1af32ed 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.js
+++ b/erpnext/stock/report/stock_balance/stock_balance.js
@@ -22,7 +22,40 @@
 			"label": __("Item"),
 			"fieldtype": "Link",
 			"width": "80",
-			"options": "Item"
+			"options": "Item",
+			"reqd": 1,
+			"on_change": function(me) {
+				frappe.query_reports["Stock Balance"].toggle_mandatory_filters(me);
+			}
+		},
+		{
+			"fieldname": "warehouse",
+			"label": __("Warehouse"),
+			"fieldtype": "Link",
+			"width": "80",
+			"options": "Warehouse",
+			"reqd": 1,
+			"on_change": function(me) {
+				frappe.query_reports["Stock Balance"].toggle_mandatory_filters(me);
+			}
+		},
+	],
+
+	"toggle_mandatory_filters": function(me) {
+		var values = me.get_values(false);
+		var item_filter = me.filters_by_name["item_code"];
+		var warehouse_filter = me.filters_by_name["warehouse"];
+
+		if (values.item_code) {
+			warehouse_filter.df.reqd = 0;
+		} else if (values.warehouse) {
+			item_filter.df.reqd = 0;
+		} else {
+			item_filter.df.reqd = 1;
+			warehouse_filter.df.reqd = 1;
 		}
-	]
+
+		item_filter.set_mandatory(values.item_code);
+		warehouse_filter.set_mandatory(values.warehouse);
+	}
 }
diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py
index 7dd728f..d465050 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.py
+++ b/erpnext/stock/report/stock_balance/stock_balance.py
@@ -9,7 +9,7 @@
 def execute(filters=None):
 	if not filters: filters = {}
 
-	columns = get_columns(filters)
+	columns = get_columns()
 	item_map = get_item_details(filters)
 	iwb_map = get_item_warehouse_map(filters)
 
@@ -30,8 +30,8 @@
 
 	return columns, data
 
-def get_columns(filters):
-	"""return columns based on filters"""
+def get_columns():
+	"""return columns"""
 
 	columns = [
 		_("Item")+":Link/Item:100",
@@ -68,9 +68,11 @@
 	if filters.get("item_code"):
 		conditions += " and item_code = '%s'" % frappe.db.escape(filters.get("item_code"), percent=False)
 
+	if filters.get("warehouse"):
+		conditions += " and warehouse = '%s'" % frappe.db.escape(filters.get("warehouse"), percent=False)
+
 	return conditions
 
-#get all details
 def get_stock_ledger_entries(filters):
 	conditions = get_conditions(filters)
 	return frappe.db.sql("""select item_code, warehouse, posting_date, actual_qty, valuation_rate,
@@ -125,9 +127,13 @@
 	return iwb_map
 
 def get_item_details(filters):
-	item_map = {}
-	for d in frappe.db.sql("select name, item_name, stock_uom, item_group, brand, \
-		description from tabItem", as_dict=1):
-		item_map.setdefault(d.name, d)
+	condition = ''
+	value = ()
+	if filters.get("item_code"):
+		condition = "where item_code=%s"
+		value = (filters["item_code"],)
 
-	return item_map
+	items = frappe.db.sql("""select name, item_name, stock_uom, item_group, brand, description
+		from tabItem {condition}""".format(condition=condition), value, as_dict=1)
+
+	return dict((d.name, d) for d in items)
