diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 18e16c2..b82f142 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -413,6 +413,7 @@
 	transaction_date: function() {
 		if (this.frm.doc.transaction_date) {
 			this.frm.transaction_date = this.frm.doc.transaction_date;
+			frappe.ui.form.trigger(me.frm.doc.doctype, "currency");
 		}
 	},
 
@@ -434,9 +435,12 @@
 					callback: function(r, rt) {
 						if(r.message) {
 							me.frm.set_value("due_date", r.message);
+							frappe.ui.form.trigger(me.frm.doc.doctype, "currency");
 						}
 					}
 				})
+			} else {
+				frappe.ui.form.trigger(me.frm.doc.doctype, "currency");
 			}
 		}
 	},
diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py
index 0733b7c..3adca56 100644
--- a/erpnext/setup/utils.py
+++ b/erpnext/setup/utils.py
@@ -6,95 +6,101 @@
 from frappe import _, throw
 from frappe.utils import flt
 from frappe.utils import get_datetime, get_datetime_str
-
+	
 def get_company_currency(company):
-    currency = frappe.db.get_value("Company", company, "default_currency", cache=True)
-    if not currency:
-        currency = frappe.db.get_default("currency")
-    if not currency:
-        throw(_('Please specify Default Currency in Company Master and Global Defaults'))
+	currency = frappe.db.get_value("Company", company, "default_currency", cache=True)
+	if not currency:
+		currency = frappe.db.get_default("currency")
+	if not currency:
+		throw(_('Please specify Default Currency in Company Master and Global Defaults'))
 
-    return currency
+	return currency
 
 def get_root_of(doctype):
-    """Get root element of a DocType with a tree structure"""
-    result = frappe.db.sql_list("""select name from `tab%s`
-        where lft=1 and rgt=(select max(rgt) from `tab%s` where docstatus < 2)""" %
-        (doctype, doctype))
-    return result[0] if result else None
+	"""Get root element of a DocType with a tree structure"""
+	result = frappe.db.sql_list("""select name from `tab%s`
+		where lft=1 and rgt=(select max(rgt) from `tab%s` where docstatus < 2)""" %
+		(doctype, doctype))
+	return result[0] if result else None
 
 def get_ancestors_of(doctype, name):
-    """Get ancestor elements of a DocType with a tree structure"""
-    lft, rgt = frappe.db.get_value(doctype, name, ["lft", "rgt"])
-    result = frappe.db.sql_list("""select name from `tab%s`
-        where lft<%s and rgt>%s order by lft desc""" % (doctype, "%s", "%s"), (lft, rgt))
-    return result or []
+	"""Get ancestor elements of a DocType with a tree structure"""
+	lft, rgt = frappe.db.get_value(doctype, name, ["lft", "rgt"])
+	result = frappe.db.sql_list("""select name from `tab%s`
+		where lft<%s and rgt>%s order by lft desc""" % (doctype, "%s", "%s"), (lft, rgt))
+	return result or []
 
 def before_tests():
-    frappe.clear_cache()
-    # complete setup if missing
-    from frappe.desk.page.setup_wizard.setup_wizard import setup_complete
-    if not frappe.get_list("Company"):
-        setup_complete({
-            "currency"            :"USD",
-            "first_name"        :"Test",
-            "last_name"            :"User",
-            "company_name"        :"Wind Power LLC",
-            "timezone"            :"America/New_York",
-            "company_abbr"        :"WP",
-            "industry"            :"Manufacturing",
-            "country"            :"United States",
-            "fy_start_date"        :"2011-01-01",
-            "fy_end_date"        :"2011-12-31",
-            "language"            :"english",
-            "company_tagline"    :"Testing",
-            "email"                :"test@erpnext.com",
-            "password"            :"test",
-            "chart_of_accounts" : "Standard",
-            "domain"            : "Manufacturing",
-            
-        })
+	frappe.clear_cache()
+	# complete setup if missing
+	from frappe.desk.page.setup_wizard.setup_wizard import setup_complete
+	if not frappe.get_list("Company"):
+		setup_complete({
+			"currency"			:"USD",
+			"first_name"		:"Test",
+			"last_name"			:"User",
+			"company_name"		:"Wind Power LLC",
+			"timezone"			:"America/New_York",
+			"company_abbr"		:"WP",
+			"industry"			:"Manufacturing",
+			"country"			:"United States",
+			"fy_start_date"		:"2011-01-01",
+			"fy_end_date"		:"2011-12-31",
+			"language"			:"english",
+			"company_tagline"	:"Testing",
+			"email"				:"test@erpnext.com",
+			"password"			:"test",
+			"chart_of_accounts" : "Standard",
+			"domain"			: "Manufacturing",
+			
+		})
 
-    frappe.db.sql("delete from `tabLeave Allocation`")
-    frappe.db.sql("delete from `tabLeave Application`")
-    frappe.db.sql("delete from `tabSalary Slip`")
-    frappe.db.sql("delete from `tabItem Price`")
+	frappe.db.sql("delete from `tabLeave Allocation`")
+	frappe.db.sql("delete from `tabLeave Application`")
+	frappe.db.sql("delete from `tabSalary Slip`")
+	frappe.db.sql("delete from `tabItem Price`")
 
-    frappe.db.set_value("Stock Settings", None, "auto_insert_price_list_rate_if_missing", 0)
+	frappe.db.set_value("Stock Settings", None, "auto_insert_price_list_rate_if_missing", 0)
 
-    frappe.db.commit()
+	frappe.db.commit()
 
 @frappe.whitelist()
 def get_exchange_rate(translation_date, from_currency, to_currency):
-    if not (translation_date and from_currency and to_currency):
-        # manqala 19/09/2016: Should this be an empty return or should it throw and exception?
-        return
-    
-    if from_currency == to_currency:
-        return 1
-    
-    # cksgb 19/09/2016: get all entries in Currency Exchange with from_currency and to_currency. Order by date desc. Top one is the required exchange rate
-    entries = frappe.get_all("Currency Exchange", fields = ["*"], filters=[["date", "<=", get_datetime_str(translation_date)], ["from_currency", "=", from_currency], ["to_currency", "=", to_currency]], order_by="date desc")
-    if entries:
-        return flt(entries[0].exchange_rate)
+	if not (translation_date and from_currency and to_currency):
+		# manqala 19/09/2016: Should this be an empty return or should it throw and exception?
+		return
+	
+	if from_currency == to_currency:
+		return 1
+	
+	# cksgb 19/09/2016: get all entries in Currency Exchange with from_currency and to_currency. Order by date desc. Top one is the required exchange rate
+	entries = frappe.get_all("Currency Exchange", fields = ["exchange_rate"], 
+		filters=[
+			["date", "<=", get_datetime_str(translation_date)], 
+			["from_currency", "=", from_currency], 
+			["to_currency", "=", to_currency]
+		], order_by="date desc", limit=1)
+		
+	if entries:
+		return flt(entries[0].exchange_rate)
 
-    try:
-        cache = frappe.cache()
-        key = "currency_exchange_rate:{0}:{1}".format(from_currency, to_currency)
-        value = cache.get(key)
+	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 6 hours
-            response.raise_for_status()
-            value = response.json()["rates"][to_currency]
-            cache.setex(key, value, 6 * 60 * 60)
+		if not value:
+			import requests
+			response = requests.get("http://api.fixer.io/latest", params={
+				"base": from_currency,
+				"symbols": to_currency
+			})
+			# expire in 6 hours
+			response.raise_for_status()
+			value = response.json()["rates"][to_currency]
+			cache.setex(key, value, 6 * 60 * 60)
 
-        return flt(value)
-    except:
-        frappe.msgprint(_("Unable to find exchange rate for {0} to {1} for key date {2}").format(from_currency, to_currency, translation_date))
-        return 0.0
\ No newline at end of file
+		return flt(value)
+	except:
+		frappe.msgprint(_("Unable to find exchange rate for {0} to {1} for key date {2}").format(from_currency, to_currency, translation_date))
+		return 0.0
\ No newline at end of file
