diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 9ff64eb..81fe436 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -525,13 +525,10 @@
 			d.party_balance = party_balance[(d.party_type, d.party)]
 
 @frappe.whitelist()
-def get_default_bank_cash_account(company, voucher_type, mode_of_payment=None, account=None):
+def get_default_bank_cash_account(company, voucher_type=None, mode_of_payment=None, account=None):
 	from erpnext.accounts.doctype.sales_invoice.sales_invoice import get_bank_cash_account
 	if mode_of_payment:
-		account = get_bank_cash_account(mode_of_payment, company)
-		if account.get("account"):
-			account.update({"balance": get_balance_on(account.get("account"))})
-			return account
+		account = get_bank_cash_account(mode_of_payment, company).get("account")
 
 	if not account:
 		if voucher_type=="Bank Entry":
@@ -549,12 +546,13 @@
 	if account:
 		account_details = frappe.db.get_value("Account", account,
 			["account_currency", "account_type"], as_dict=1)
-		return {
+			
+		return frappe._dict({
 			"account": account,
 			"balance": get_balance_on(account),
 			"account_currency": account_details.account_currency,
 			"account_type": account_details.account_type
-		}
+		})
 
 @frappe.whitelist()
 def get_payment_entry_against_order(dt, dn, amount=None, debit_in_account_currency=None, journal_entry=False, bank_account=None):
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index da4f10d..52834d4 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -4,8 +4,8 @@
 frappe.ui.form.on('Payment Entry', {
 	onload: function(frm) {
 		if(frm.doc.__islocal) {
-			frm.set_value("paid_from_account_currency", null);
-			frm.set_value("paid_to_account_currency", null);
+			if (!frm.doc.paid_from) frm.set_value("paid_from_account_currency", null);
+			if (!frm.doc.paid_to) frm.set_value("paid_to_account_currency", null);
 		}
 	},
 	
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 0e5d8e7..dae7bda 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -5,10 +5,11 @@
 from __future__ import unicode_literals
 import frappe, json
 from frappe import _, scrub
-from frappe.utils import flt, comma_or
+from frappe.utils import flt, comma_or, nowdate
 from erpnext.accounts.utils import get_outstanding_invoices, get_account_currency, get_balance_on
 from erpnext.accounts.party import get_party_account
-from erpnext.accounts.doctype.journal_entry.journal_entry import get_average_exchange_rate
+from erpnext.accounts.doctype.journal_entry.journal_entry \
+	import get_average_exchange_rate, get_default_bank_cash_account
 from erpnext.setup.utils import get_exchange_rate
 from erpnext.accounts.general_ledger import make_gl_entries
 
@@ -16,9 +17,7 @@
 
 
 class PaymentEntry(AccountsController):
-	def __init__(self, arg1, arg2=None):
-		super(PaymentEntry, self).__init__(arg1, arg2)
-		
+	def setup_party_account_field(self):		
 		self.party_account_field = None
 		self.party_account = None
 		self.party_account_currency = None
@@ -32,8 +31,11 @@
 			self.party_account_field = "paid_to"
 			self.party_account = self.paid_to
 			self.party_account_currency = self.paid_to_account_currency
+			
+		print self.payment_type, self.party_account_field
 				
 	def validate(self):
+		self.setup_party_account_field()
 		self.set_missing_values()
 		self.validate_party_details()
 		self.validate_bank_accounts()
@@ -69,11 +71,10 @@
 				self.party_balance = get_balance_on(party_type=self.party_type,
 					party=self.party, date=self.posting_date)
 			
-			if not self.get(self.party_account_field):
+			if not self.party_account:
 				party_account = get_party_account(self.party_type, self.party, self.company)
 				self.set(self.party_account_field, party_account)
-				
-			self.party_account = self.get(self.party_account_field)
+				self.party_account = party_account
 				
 		if self.paid_from and not (self.paid_from_account_currency or self.paid_from_account_balance):
 			acc = get_account_currency_and_balance(self.paid_from, self.posting_date)
@@ -187,7 +188,6 @@
 		self.total_allocated_amount, self.base_total_allocated_amount = 0, 0
 		for d in self.get("references"):
 			if d.allocated_amount:
-				print d.reference_name, d.outstanding_amount, d.allocated_amount
 				if d.allocated_amount > d.outstanding_amount:
 					frappe.throw(_("Row #{0}: Allocated amount cannot be greater than outstanding amount")
 						.format(d.idx))
@@ -439,4 +439,59 @@
 			frappe.throw(_("Please set default {0} in Company {1}")
 				.format(frappe.get_meta("Company").get_label(fieldname), company))
 	
-	return ret
\ No newline at end of file
+	return ret
+	
+@frappe.whitelist()
+def get_payment_entry_against_invoice(dt, dn):
+	invoice = frappe.get_doc(dt, dn)
+	
+	if dt == "Sales Invoice":
+		party_type = "Customer"
+		party_account = invoice.debit_to
+	else:
+		party_type = "Supplier"
+		party_account = invoice.credit_to
+
+
+	if (dt=="Sales Invoice" and invoice.outstanding_amount > 0) \
+		or (dt=="Purchase Invoice" and invoice.outstanding_amount < 0):
+			payment_type = "Receive"
+	else:
+		payment_type = "Pay"
+	
+	bank = frappe._dict()
+	if invoice.mode_of_payment:
+		bank = get_default_bank_cash_account(invoice.company, mode_of_payment=invoice.mode_of_payment)
+	
+	paid_amount = received_amount = 0
+	if invoice.party_account_currency == bank.account_currency:
+		paid_amount = received_amount = invoice.outstanding_amount
+	elif payment_type == "Receive":
+		paid_amount = invoice.outstanding_amount
+	else:
+		received_amount = invoice.outstanding_amount
+			
+	pe = frappe.new_doc("Payment Entry")
+	pe.payment_type = payment_type
+	pe.company = invoice.company
+	pe.posting_date = nowdate()
+	pe.mode_of_payment = invoice.mode_of_payment
+	pe.party_type = party_type
+	pe.party = invoice.get(scrub(party_type))
+	pe.paid_from = party_account if payment_type=="Receive" else bank.account
+	pe.paid_to = party_account if payment_type=="Pay" else bank.account
+	pe.paid_amount = paid_amount
+	pe.received_amount = received_amount
+	
+	pe.append("references", {
+		"reference_doctype": dt,
+		"reference_name": dn,
+		"allocated_amount": invoice.outstanding_amount
+	})
+	
+	pe.setup_party_account_field()
+	pe.set_missing_values()
+	pe.set_exchange_rate()
+	pe.set_amounts()
+	
+	return pe
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index 7a83c7b..e919c4b 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -35,7 +35,7 @@
 
 		if(!doc.is_return && doc.docstatus==1) {
 			if(doc.outstanding_amount > 0) {
-				this.frm.add_custom_button(__('Payment'), this.make_bank_entry, __("Make"));
+				this.frm.add_custom_button(__('Payment'), this.make_payment_entry, __("Make"));
 				cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
 			}
 
@@ -218,21 +218,6 @@
 	}
 }
 
-cur_frm.cscript.make_bank_entry = function() {
-	return frappe.call({
-		method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_invoice",
-		args: {
-			"dt": "Purchase Invoice",
-			"dn": cur_frm.doc.name
-		},
-		callback: function(r) {
-			var doclist = frappe.model.sync(r.message);
-			frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
-		}
-	});
-}
-
-
 cur_frm.fields_dict['supplier_address'].get_query = function(doc, cdt, cdn) {
 	return{
 		filters:{'supplier':  doc.supplier}
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 09ff5b2..95ad98a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -67,7 +67,7 @@
 
 			if(doc.outstanding_amount>0 && !cint(doc.is_return)) {
 				cur_frm.add_custom_button(__('Payment Request'), this.make_payment_request, __("Make"));
-				cur_frm.add_custom_button(__('Payment'), cur_frm.cscript.make_bank_entry, __("Make"));
+				cur_frm.add_custom_button(__('Payment'), this.make_payment_entry, __("Make"));
 			}
 
 		}
@@ -280,20 +280,6 @@
 	})
 }
 
-cur_frm.cscript.make_bank_entry = function() {
-	return frappe.call({
-		method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_invoice",
-		args: {
-			"dt": "Sales Invoice",
-			"dn": cur_frm.doc.name
-		},
-		callback: function(r) {
-			var doclist = frappe.model.sync(r.message);
-			frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
-		}
-	});
-}
-
 cur_frm.fields_dict.cash_bank_account.get_query = function(doc) {
 	return {
 		filters: [
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index a6fbff7..82cb365 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -704,7 +704,8 @@
 	account = frappe.db.get_value("Mode of Payment Account",
 		{"parent": mode_of_payment, "company": company}, "default_account")
 	if not account:
-		frappe.throw(_("Please set default Cash or Bank account in Mode of Payment {0}").format(mode_of_payment))
+		frappe.throw(_("Please set default Cash or Bank account in Mode of Payment {0}")
+			.format(mode_of_payment))
 	return {
 		"account": account
 	}
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 048a534..b1f55df 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -316,6 +316,7 @@
 		new_row.update(reference_details)
 		
 	payment_entry.flags.ignore_validate_update_after_submit = True
+	payment_entry.setup_party_account_field()
 	payment_entry.set_missing_values()
 	payment_entry.set_amounts()
 	payment_entry.save(ignore_permissions=True)
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 5185614..1c7d032 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -312,7 +312,7 @@
 			
 		order_list = list(set([d.get(order_field) 
 			for d in self.get("items") if d.get(order_field)]))
-
+		
 		journal_entries = get_advance_journal_entries(party_type, party, party_account, 
 			amount_field, order_doctype, order_list, include_unallocated)
 			
@@ -324,6 +324,12 @@
 		return res
 
 	def validate_advance_entries(self):
+		order_field = "sales_order" if self.doctype == "Sales Invoice" else "purchase_order"
+		order_list = list(set([d.get(order_field) 
+			for d in self.get("items") if d.get(order_field)]))
+		
+		if not order_list: return
+		
 		advance_entries = self.get_advance_entries(include_unallocated=False)
 		
 		if advance_entries:
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index ad6901c..a7f7e2a 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -1000,5 +1000,19 @@
 				}
 			})
 		}
+	},
+	
+	make_payment_entry: function() {
+		return frappe.call({
+			method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry_against_invoice",
+			args: {
+				"dt": cur_frm.doc.doctype,
+				"dn": cur_frm.doc.name
+			},
+			callback: function(r) {
+				var doclist = frappe.model.sync(r.message);
+				frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
+			}
+		});
 	}
 });
\ No newline at end of file
