[fixes] conmify account details and validate gateway currency
diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
index 5e13626..1ba9221 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -130,54 +130,6 @@
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "payment_gateway_settings", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Payment Gateway Settings", 
-   "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": "message", 
-   "fieldtype": "Text Editor", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Payment Request Message", 
-   "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
   }
  ], 
  "hide_heading": 0, 
@@ -190,7 +142,7 @@
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2015-12-24 17:31:52.014492", 
+ "modified": "2015-12-24 21:42:01.274459", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Accounts Settings", 
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index f82a68f..5d1c3f2 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -508,7 +508,7 @@
 			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):
+def get_default_bank_cash_account(company, voucher_type, 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)
@@ -516,16 +516,18 @@
 			account.update({"balance": get_balance_on(account.get("account"))})
 			return account
 
-	if voucher_type=="Bank Entry":
-		account = frappe.db.get_value("Company", company, "default_bank_account")
-		if not account:
-			account = frappe.db.get_value("Account",
-				{"company": company, "account_type": "Bank", "is_group": 0})
-	elif voucher_type=="Cash Entry":
-		account = frappe.db.get_value("Company", company, "default_cash_account")
-		if not account:
-			account = frappe.db.get_value("Account",
-				{"company": company, "account_type": "Cash", "is_group": 0})
+	if not account:
+		if voucher_type=="Bank Entry":
+			account = frappe.db.get_value("Company", company, "default_bank_account")
+			if not account:
+				account = frappe.db.get_value("Account",
+					{"company": company, "account_type": "Bank", "is_group": 0})
+				
+		elif voucher_type=="Cash Entry":
+			account = frappe.db.get_value("Company", company, "default_cash_account")
+			if not account:
+				account = frappe.db.get_value("Account",
+					{"company": company, "account_type": "Cash", "is_group": 0})
 
 	if account:
 		account_details = frappe.db.get_value("Account", account,
@@ -640,7 +642,8 @@
 
 	bank_row = jv.append("accounts")
 	
-	bank_account = args.get("bank_account", get_default_bank_cash_account(ref_doc.company, "Bank Entry"))
+	#make it bank_details
+	bank_account = get_default_bank_cash_account(ref_doc.company, "Bank Entry", account=args.get("bank_account"))
 	if bank_account:
 		bank_row.update(bank_account)
 		bank_row.exchange_rate = get_exchange_rate(bank_account["account"],
diff --git a/erpnext/accounts/doctype/payment_gateway/payment_gateway.json b/erpnext/accounts/doctype/payment_gateway/payment_gateway.json
index d2d8a78..9b48066 100644
--- a/erpnext/accounts/doctype/payment_gateway/payment_gateway.json
+++ b/erpnext/accounts/doctype/payment_gateway/payment_gateway.json
@@ -43,7 +43,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2015-12-23 22:32:32.690126", 
+ "modified": "2015-12-29 12:04:17.371619", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Gateway", 
@@ -69,6 +69,46 @@
    "share": 1, 
    "submit": 0, 
    "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "email": 0, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 0, 
+   "read": 1, 
+   "report": 0, 
+   "role": "System Manager", 
+   "set_user_permissions": 0, 
+   "share": 0, 
+   "submit": 0, 
+   "write": 0
+  }, 
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "email": 0, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 0, 
+   "read": 1, 
+   "report": 0, 
+   "role": "Accounts Manager", 
+   "set_user_permissions": 0, 
+   "share": 0, 
+   "submit": 0, 
+   "write": 0
   }
  ], 
  "read_only": 0, 
diff --git a/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.json b/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.json
index e52225a..96b3fcc 100644
--- a/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.json
+++ b/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.json
@@ -12,6 +12,30 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "gateway_acount_details", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Gateway Acount Details", 
+   "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": "is_default", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -106,6 +130,102 @@
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "payment_request_message", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Payment Request Message", 
+   "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": "message", 
+   "fieldtype": "Text Editor", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "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": "reminder_settings", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Reminder Settings", 
+   "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, 
+   "description": "In Days", 
+   "fieldname": "reminder_after", 
+   "fieldtype": "Int", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Reminder After", 
+   "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
   }
  ], 
  "hide_heading": 0, 
@@ -117,7 +237,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2015-12-24 17:02:34.520800", 
+ "modified": "2015-12-24 21:41:05.123141", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Gateway Account", 
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.js b/erpnext/accounts/doctype/payment_request/payment_request.js
index c8863ec..5d11fb5 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.js
+++ b/erpnext/accounts/doctype/payment_request/payment_request.js
@@ -1,5 +1,6 @@
 cur_frm.add_fetch("payment_gateway", "payment_account", "payment_account")
 cur_frm.add_fetch("payment_gateway", "gateway", "gateway")
+cur_frm.add_fetch("payment_gateway", "message", "message")
 
 frappe.ui.form.on("Payment Request", "onload", function(frm, dt, dn){
 	frappe.call({
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 97b0081..6fa3afd 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -5,7 +5,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.model.document import Document
-from frappe.utils import flt, today
+from frappe.utils import flt, nowdate, get_url
 from frappe import _
 from erpnext.accounts.doctype.journal_entry.journal_entry import (get_payment_entry_against_invoice, 
 get_payment_entry_against_order)
@@ -15,12 +15,18 @@
 
 class PaymentRequest(Document):		
 	def validate(self):
-		self.validate_payment_request()	
-		
+		self.validate_payment_request()
+		self.validate_currency()
+
 	def validate_payment_request(self):
 		if frappe.db.get_value("Payment Request", {"reference_name": self.reference_name, 
 			"name": ("!=", self.name), "status": ("not in", ["Initiated", "Paid"]), "docstatus": 1}, "name"):
 			frappe.throw(_("Payment Request already exist"))
+	
+	def validate_currency(self):
+		ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
+		if ref_doc.currency != frappe.db.get_value("Account", self.payment_account, "account_currency"):
+			frappe.throw(_("Transaction currency is not simillar to Gateway Currency"))
 		
 	def on_submit(self):
 		if not self.mute_email:
@@ -39,10 +45,7 @@
 		pass
 	
 	def send_payment_request(self):
-		if self.gateway == "PayPal":
-			from paypal_integration.express_checkout import set_express_checkout
-			self.payment_url = set_express_checkout(self.amount, self.currency, {"doctype": self.doctype, 
-				"docname": self.name})
+		self.payment_url = get_url("/api/method/erpnext.accounts.doctype.payment_request.payment_request.gererate_payemnt_request?name={0}".format(self.name))
 		
 		if self.payment_url:
 			frappe.db.set_value(self.doctype, self.name, "status", "Initiated")
@@ -57,17 +60,8 @@
 		"""create entry"""
 		payment_details = {
 			"amount": self.amount,
-			"return_obj": True
-		}
-		
-		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
+			"return_obj": True,
+			"bank_account": self.payment_account
 		}
 				
 		if self.reference_doctype == "Sales Order":
@@ -78,7 +72,7 @@
 			
 		jv.update({
 			"voucher_type": "Journal Entry",
-			"posting_date": today()
+			"posting_date": nowdate()
 		})		
 
 		jv.submit()
@@ -121,7 +115,7 @@
 	"""Make payment request"""
 	args = frappe._dict(args)
 	ref_doc = get_reference_doc_details(args.dt, args.dn)
-	name, gateway, payment_account = get_gateway_details(args)
+	name, gateway, payment_account, message = get_gateway_details(args)
 	
 	pr = frappe.new_doc("Payment Request")
 	pr.update({
@@ -133,7 +127,7 @@
 		"mute_email": args.mute_email or 0,
 		"email_to": args.recipient_id or "",
 		"subject": "Payment Request for %s"%args.dn,
-		"message": frappe.get_doc("Accounts Settings").message,
+		"message": message,
 		"reference_doctype": args.dt,
 		"reference_name": args.dn
 	})
@@ -171,9 +165,11 @@
 def get_gateway_details(args):
 	"""return gateway and payment account of default payment gateway"""
 	if args.payemnt_gateway:
-		return frappe.db.get_value("Payment Gateway Account", args.payemnt_gateway, ["name", "gateway", "payment_account"])
+		return frappe.db.get_value("Payment Gateway Account", args.payemnt_gateway, 
+			["name", "gateway", "payment_account", "message"])
 		
-	return frappe.db.get_value("Payment Gateway Account", {"is_default": 1}, ["name", "gateway", "payment_account"])
+	return frappe.db.get_value("Payment Gateway Account", {"is_default": 1}, 
+		["name", "gateway", "payment_account", "message"])
 
 @frappe.whitelist()
 def get_print_format_list(ref_doctype):
@@ -185,4 +181,14 @@
 	return {
 		"print_format": print_format_list
 	}
-	
\ No newline at end of file
+	
+@frappe.whitelist(allow_guest=True)
+def gererate_payemnt_request(name):
+	doc = frappe.get_doc("Payment Request", name)
+	if doc.gateway == "PayPal":
+		from paypal_integration.express_checkout import set_express_checkout
+		payment_url = set_express_checkout(doc.amount, doc.currency, {"doctype": doc.doctype,
+			"docname": doc.name})
+	
+	frappe.local.response["type"] = "redirect"
+	frappe.local.response["location"] = payment_url
diff --git a/erpnext/config/accounts.py b/erpnext/config/accounts.py
index d80449d..859764d 100644
--- a/erpnext/config/accounts.py
+++ b/erpnext/config/accounts.py
@@ -90,7 +90,7 @@
 				},
 				{
 					"type": "doctype",
-					"name": "Payment Gateway",
+					"name": "Payment Gateway Account",
 					"description": _("Setup Gateway accounts.")
 				},
 				{