[fix] [exchange-rate] let user defined exchange rate take preceedence
diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py
index 5480613..8b84cc2 100644
--- a/erpnext/setup/utils.py
+++ b/erpnext/setup/utils.py
@@ -63,21 +63,27 @@
 
 @frappe.whitelist()
 def get_exchange_rate(from_currency, to_currency):
-	try:
-		cache = frappe.cache()
-		key = "currency_exchange_rate:{0}:{1}".format(from_currency, to_currency)
-		value = cache.get(key)
-		if not value:
-			import requests
-			response = requests.get("http://api.fixer.io/latest", params={
-				"base": from_currency,
-				"symbols": to_currency
-			})
-			# expire in 24 hours
-			response.raise_for_status()
-			value = response.json()["rates"][to_currency]
-			cache.setex(key, value, 24 * 60 * 60)
-		return flt(value)
-	except:
-		exchange = "%s-%s" % (from_currency, to_currency)
-		return flt(frappe.db.get_value("Currency Exchange", exchange, "exchange_rate"))
+	exchange = "%s-%s" % (from_currency, to_currency)
+	value = flt(frappe.db.get_value("Currency Exchange", exchange, "exchange_rate"))
+
+	if not value:
+		try:
+			cache = frappe.cache()
+			key = "currency_exchange_rate:{0}:{1}".format(from_currency, to_currency)
+			value = cache.get(key)
+			if not value:
+				import requests
+				response = requests.get("http://api.fixer.io/latest", params={
+					"base": from_currency,
+					"symbols": to_currency
+				})
+				# expire in 24 hours
+				response.raise_for_status()
+				value = response.json()["rates"][to_currency]
+				cache.setex(key, value, 24 * 60 * 60)
+			return flt(value)
+		except:
+			frappe.msgprint(_("Unable to find exchange rate"))
+			return 0.0
+	else:
+		return 0.0