Validate currency of default receivable/payable accounts
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index d4a5fa1..2e34980 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -76,7 +76,7 @@
 	def get_advances(self):
 		if not self.is_return:
 			super(PurchaseInvoice, self).get_advances(self.credit_to, "Supplier", self.supplier,
-				"Purchase Invoice Advance", "advances", "debit", "purchase_order")
+				"Purchase Invoice Advance", "advances", "debit_in_account_currency", "purchase_order")
 
 	def check_active_purchase_items(self):
 		for d in self.get('items'):
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 940f754..a349e2f 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -256,7 +256,7 @@
 	def get_advances(self):
 		if not self.is_return:
 			super(SalesInvoice, self).get_advances(self.debit_to, "Customer", self.customer,
-				"Sales Invoice Advance", "advances", "credit", "sales_order")
+				"Sales Invoice Advance", "advances", "credit_in_account_currency", "sales_order")
 
 	def get_company_abbr(self):
 		return frappe.db.sql("select abbr from tabCompany where name=%s", self.company)[0][0]
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index fa65335..516608f 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -225,10 +225,8 @@
 		party_account_currency = frappe.db.get_value("Account", account.account, "account_currency")
 		existing_gle_currency = get_party_gle_currency(doc.doctype, doc.name, account.company)
 		
-		if party_account_currency != existing_gle_currency:
-			frappe.throw(_("Accounting Entry against company: {0} can only be made in currency: {1}, please check default {2} account")
-				.format(account.company, existing_gle_currency, 
-					"receivable" if doc.doctype=="Customer" else "payable"))
+		if existing_gle_currency and party_account_currency != existing_gle_currency:
+			frappe.throw(_("Accounting entries have already been made in currency {0} for company {1}. Please select a receivable or payable account with currency {0}.").format(existing_gle_currency, account.company))
 
 @frappe.whitelist()
 def get_due_date(posting_date, party_type, party, company):
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index ffb8a4c..88b1ed4 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -211,7 +211,8 @@
 
 	if d['allocated_amt'] < d['unadjusted_amt']:
 		jvd = frappe.db.sql("""
-			select cost_center, balance, against_account, is_advance, account_type, exchange_rate
+			select cost_center, balance, against_account, is_advance, 
+				account_type, exchange_rate, account_currency
 			from `tabJournal Entry Account` where name = %s
 		""", d['voucher_detail_no'], as_dict=True)
 
@@ -222,6 +223,7 @@
 		ch = jv_obj.append("accounts")
 		ch.account = d['account']
 		ch.account_type = jvd[0]['account_type']
+		ch.account_currency = jvd[0]['account_currency']
 		ch.exchange_rate = jvd[0]['exchange_rate']
 		ch.party_type = d["party_type"]
 		ch.party = d["party"]
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 7f2cee7..08d4f32 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -495,7 +495,8 @@
 		}
 
 		if(this.frm.fields_dict["advances"]) {
-			setup_field_label_map(["advance_amount", "allocated_amount"], company_currency, "advances");
+			setup_field_label_map(["advance_amount", "allocated_amount"], 
+				this.frm.doc.party_account_currency, "advances");
 		}
 
 		// toggle columns