diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 670661c..1a8b645 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -632,7 +632,8 @@
 	})
 
 	bank_row = jv.append("accounts")
-	bank_account = get_default_bank_cash_account(ref_doc.company, "Bank Entry")
+	
+	bank_account = args.get("bank_account", get_default_bank_cash_account(ref_doc.company, "Bank Entry"))
 	if bank_account:
 		bank_row.update(bank_account)
 		bank_row.exchange_rate = get_exchange_rate(bank_account["account"],
@@ -653,7 +654,7 @@
 	jv.set_amounts_in_company_currency()
 	jv.set_total_debit_credit()
 
-	return jv.as_dict()
+	return jv if args.get("return_obj") else jv.as_dict()
 
 @frappe.whitelist()
 def get_opening_accounts(company):
diff --git a/erpnext/accounts/doctype/payment_gateway/payment_gateway.json b/erpnext/accounts/doctype/payment_gateway/payment_gateway.json
index 69befe3..ccee2bb 100644
--- a/erpnext/accounts/doctype/payment_gateway/payment_gateway.json
+++ b/erpnext/accounts/doctype/payment_gateway/payment_gateway.json
@@ -2,7 +2,7 @@
  "allow_copy": 0, 
  "allow_import": 0, 
  "allow_rename": 0, 
- "autoname": "field:gateway_title", 
+ "autoname": "field:gateway", 
  "creation": "2015-12-15 22:26:45.221162", 
  "custom": 0, 
  "docstatus": 0, 
@@ -13,13 +13,37 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "gatewaty_title", 
+   "fieldname": "is_default", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Is Default", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "gateway", 
    "fieldtype": "Data", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Gatewaty Title", 
+   "label": "Gateway", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -38,7 +62,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "fieldname": "payment_account", 
-   "fieldtype": "Data", 
+   "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
@@ -46,6 +70,7 @@
    "label": "Payment Account", 
    "length": 0, 
    "no_copy": 0, 
+   "options": "Account", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -67,7 +92,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2015-12-15 22:26:57.027571", 
+ "modified": "2015-12-16 13:20:49.584949", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Gateway", 
diff --git a/erpnext/accounts/doctype/payment_gateway/payment_gateway.py b/erpnext/accounts/doctype/payment_gateway/payment_gateway.py
index 79101cc..a0b8944 100644
--- a/erpnext/accounts/doctype/payment_gateway/payment_gateway.py
+++ b/erpnext/accounts/doctype/payment_gateway/payment_gateway.py
@@ -7,4 +7,11 @@
 from frappe.model.document import Document
 
 class PaymentGateway(Document):
-	pass
+	def validate(self):
+		self.update_default_payment_gateway()
+	
+	def update_default_payment_gateway(self):
+		frappe.db.sql("""update `tabPayment Gateway` set is_default = 0
+			where is_default = 1 """)
+		
+		
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.json b/erpnext/accounts/doctype/payment_request/payment_request.json
index 473b463..add555e 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.json
+++ b/erpnext/accounts/doctype/payment_request/payment_request.json
@@ -209,6 +209,31 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "print_format", 
+   "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Print Format", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Standard\nPOS Invoice", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 1, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "email_to", 
    "fieldtype": "Data", 
    "hidden": 0, 
@@ -230,7 +255,7 @@
    "unique": 0
   }, 
   {
-   "allow_on_submit": 0, 
+   "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
    "fieldname": "subject", 
@@ -254,7 +279,7 @@
    "unique": 0
   }, 
   {
-   "allow_on_submit": 0, 
+   "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
    "fieldname": "message", 
@@ -313,14 +338,14 @@
    "in_list_view": 0, 
    "label": "Reference Doctype", 
    "length": 0, 
-   "no_copy": 0, 
+   "no_copy": 1, 
    "options": "DocType", 
    "permlevel": 0, 
    "precision": "", 
-   "print_hide": 0, 
+   "print_hide": 1, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
+   "read_only": 1, 
+   "report_hide": 1, 
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
@@ -338,14 +363,14 @@
    "in_list_view": 0, 
    "label": "Reference Name", 
    "length": 0, 
-   "no_copy": 0, 
+   "no_copy": 1, 
    "options": "reference_doctype", 
    "permlevel": 0, 
    "precision": "", 
-   "print_hide": 0, 
+   "print_hide": 1, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
+   "read_only": 1, 
+   "report_hide": 1, 
    "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
@@ -385,7 +410,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2015-12-16 09:02:03.786403", 
+ "modified": "2015-12-16 17:31:37.319394", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Request", 
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 05b318e..e8c824a 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -5,31 +5,130 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.model.document import Document
-from frappe.utils import flt
+from frappe.utils import flt, today
+from frappe import _
+from erpnext.accounts.doctype.journal_entry.journal_entry import (get_payment_entry_against_order, 
+get_payment_entry_against_invoice, get_payment_entry)
+from erpnext.accounts.party import get_party_account
+from erpnext.accounts.utils import get_account_currency, get_balance_on
 
-class PaymentRequest(Document):
+class PaymentRequest(Document):		
+	def validate(self):
+		self.validate_payment_request()	
+		
+	def validate_payment_request(self):
+		if frappe.db.get_value("Payment Request", {"reference_name": self.reference_name, 
+			"name": ("!=", self.name), "status": "Paid", "docstatus": 1}, "name"):
+			frappe.throw(_("Payment Request already exist"))
+		
 	def on_submit(self):
+		if self.status == "Paid":
+			self.set_paid()
+			
+		self.send_email()
 		self.send_payment_request()
+		self.make_communication_entry()
+	
+	def on_cancel(self):
+		pass
+	
+	def on_update_after_submit(self):
+		pass
+	
+	def set_status(self):
+		pass
 	
 	def send_payment_request(self):
 		pass
-		
-	def set_paid(self):
+	
+	def make_communication_log_entry(self):
 		pass
 	
+	def set_paid(self):
+		self.create_journal_voucher_entry()
+	
+	def create_journal_voucher_entry(self):
+		"""create voucher entry"""
+		payment_details = {
+			"party_type": "Customer",
+			"amount_field_party": "credit_in_account_currency",
+			"amount_field_bank": "debit_in_account_currency",
+			"amount": self.amount,
+			"return_obj": True
+		}
+		ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name) 
+		
+		if self.reference_doctype == "Sales Order":
+			party_account = get_party_account("Customer", ref_doc.get('customer'), ref_doc.company)
+			payment_details.update({
+				"party_account": party_account,
+				"party_account_currency": get_account_currency(party_account),
+				"remarks": 'Advance Payment received against {0} {1}'.format(self.reference_doctype, self.reference_name),
+				"is_advance": "Yes"
+			})
+		if self.reference_doctype == "Sales Invoice":
+			payment_details.update({
+				"party_account": ref_doc.debit_to,
+				"party_account_currency": ref_doc.party_account_currency,
+				"remarks": 'Payment received against {0} {1}. {2}'.format(self.reference_doctype, self.reference_name, ref_doc.remarks),
+				"is_advance": "No"
+			})
+		
+		account_details = frappe.db.get_value("Account", self.payment_account,
+					["account_currency", "account_type"], as_dict=1)
+					
+		payment_details["bank_account"] = {
+			"account": self.payment_account,
+			"balance": get_balance_on(self.payment_account),
+			"account_currency": account_details.account_currency,
+			"account_type": account_details.account_type
+		}
+		
+		jv =  get_payment_entry(ref_doc, payment_details)
+		jv.update({
+			"voucher_type": "Journal Entry",
+			"posting_date": today()
+		})
+		jv.submit()
+	
+	def send_email(self):
+		"""send email with payment link"""
+		frappe.sendmail(recipients=self.email_to, sender=None, subject=self.subject,
+			message=self.get_message(), attachments=[frappe.attach_print(self.reference_doctype, 
+			self.reference_name, file_name=self.reference_name, print_format=self.print_format)])
+						
+	def get_message(self):
+		"""return message with payment gateway link"""
+		return self.message + "<br> Payment Link <a href='https://www.google.com'> link for payment gateway </a>"
+		
 	def set_failed(self):
 		pass
 	
 	def set_cancelled(self):
 		pass
+	
+	def make_communication_entry(self):
+		"""Make communication entry"""
+		comm = frappe.get_doc({
+			"doctype":"Communication",
+			"subject": self.subject,
+			"content": self.get_message(),
+			"sent_or_received": "Sent",
+			"reference_doctype": self.reference_doctype,
+			"reference_name": self.reference_name
+		})
+		comm.insert(ignore_permissions=True)
 
 @frappe.whitelist()
-def make_payment_request(dt, dn, recipient_id):
+def make_payment_request(dt, dn, recipient_id=None):
 	"""Make payment request"""
 	ref_doc = get_reference_doc_details(dt, dn)
+	payment_gateway, payment_account = get_gateway_details()
 	
 	pr = frappe.get_doc({
 		"doctype": "Payment Request",
+		"payment_gateway": payment_gateway,
+		"payment_account": payment_account,
 		"currency": ref_doc.currency,
 		"amount": get_amount(ref_doc, dt),
 		"email_to": recipient_id,
@@ -37,12 +136,23 @@
 		"reference_name": dn
 	}).insert()
 
-	pr.submit()
-
 def get_reference_doc_details(dt, dn):
 	""" return reference doc Sales Order/Sales Invoice"""
 	return frappe.get_doc(dt, dn)
 
 def get_amount(ref_doc, dt):
+	"""get amount based on doctype"""
 	if dt == "Sales Order":
-		return flt(ref_doc.grand_total) - flt(ref_doc.advance_paid)
\ No newline at end of file
+		amount = flt(ref_doc.grand_total) - flt(ref_doc.advance_paid)
+	
+	if dt == "Sales Invoice":
+		amount = abs(ref_doc.outstanding_amount)
+	
+	if amount > 0:
+		return amount
+	else:
+		frappe.throw(_("Payment Entry is already created"))
+		
+def get_gateway_details():
+	"""return gateway and payment account of default payment gateway"""
+	return frappe.db.get_value("Payment Gateway", {"is_default": 1}, ["gateway", "payment_account"])
\ No newline at end of file
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 3745267..0446382 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -291,42 +291,12 @@
 	},
 	
 	make_payment_request: function() {
-		if (!cur_frm.doc.contact_email){
-			cur_frm.cscript.get_customer_email();
-		}
-		else {
-			cur_frm.cscript.create_payment_request(cur_frm.doc.contact_email)
-		}
-	},
-	
-	get_customer_email: function() {
-		var dialog = new frappe.ui.Dialog({
-			title: __("Recipient Details"),
-			fields: [
-				{"fieldtype": "Data", "label": __("Recipient Email Id"), "fieldname": "recipient_id",
-					"reqd": 1},
-				{"fieldtype": "Button", "label": __("Make Payment Request"), 
-					"fieldname": "make_pr", "cssClass": "btn-primary"}
-			]
-		});
-
-		dialog.fields_dict.make_pr.$input.click(function() {
-			args = dialog.get_values();
-			if(!args) return;
-			dialog.hide();
-			cur_frm.cscript.create_payment_request(args.recipient_id)
-			
-		});
-		dialog.show();
-	},
-	
-	create_payment_request: function(recipient_id){
 		frappe.call({
 			method:"erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
 			args: {
 				"dt": cur_frm.doc.doctype,
 				"dn": cur_frm.doc.name,
-				"recipient_id": recipient_id
+				"recipient_id": cur_frm.doc.contact_email
 			},
 			callback: function(r) {
 				
