[fix] Payment Request Fixes
diff --git a/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.py b/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.py
index dd971ad..468f877 100644
--- a/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.py
+++ b/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.py
@@ -11,6 +11,8 @@
 		self.name = self.gateway + " - " + self.currency
 		
 	def validate(self):
+		self.currency = frappe.db.get_value("Account", self.payment_account, "account_currency")
+		
 		self.update_default_payment_gateway()
 		self.set_as_default_if_not_set()
 	
@@ -20,5 +22,6 @@
 				where is_default = 1 """)
 		
 	def set_as_default_if_not_set(self):
-		if not frappe.db.get_value("Payment Gateway Account", {"is_default": 1, "name": ("!=", self.name)}, "name"):
-			self.is_default = 1
+		if not frappe.db.get_value("Payment Gateway Account", 
+			{"is_default": 1, "name": ("!=", self.name)}, "name"):
+				self.is_default = 1
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 9e29697..ba7413d 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -23,7 +23,7 @@
 	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 exists {0}".fomart(self.reference_name)))
+			frappe.throw(_("Payment Request already exists {0}".format(self.reference_name)))
 	
 	def validate_currency(self):
 		ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
@@ -150,37 +150,43 @@
 	ref_doc = frappe.get_doc(args.dt, args.dn)
 	gateway_account = get_gateway_details(args)
 	
-	pr = frappe.new_doc("Payment Request")
-	pr.update({
-		"payment_gateway": gateway_account.name,
-		"gateway": gateway_account.gateway,
-		"payment_account": gateway_account.payment_account,
-		"currency": ref_doc.currency,
-		"make_sales_invoice": args.cart or 0,
-		"amount": get_amount(ref_doc, args.dt),
-		"mute_email": args.mute_email or 0,
-		"email_to": args.recipient_id or "",
-		"subject": "Payment Request for %s"%args.dn,
-		"message": gateway_account.message,
-		"payment_url_message": gateway_account.payment_url_message,
-		"payment_success_url": gateway_account.payment_success_url,
-		"reference_doctype": args.dt,
-		"reference_name": args.dn
-	})
+	existing_payment_request = frappe.db.get_value("Payment Request", 
+		{"reference_doctype": args.dt, "reference_name": args.dn})
+	if existing_payment_request:
+		pr = frappe.get_doc("Payment Request", existing_payment_request)
+	else:
+		pr = frappe.new_doc("Payment Request")
+
+		pr.update({
+			"payment_gateway": gateway_account.name,
+			"gateway": gateway_account.gateway,
+			"payment_account": gateway_account.payment_account,
+			"currency": ref_doc.currency,
+			"make_sales_invoice": args.cart or 0,
+			"amount": get_amount(ref_doc, args.dt),
+			"mute_email": args.mute_email or 0,
+			"email_to": args.recipient_id or "",
+			"subject": "Payment Request for %s"%args.dn,
+			"message": gateway_account.message,
+			"payment_url_message": gateway_account.payment_url_message,
+			"payment_success_url": gateway_account.payment_success_url,
+			"reference_doctype": args.dt,
+			"reference_name": args.dn
+		})
 	
-	if args.return_doc:
-		return pr
-		
-	if args.submit_doc:
-		pr.insert(ignore_permissions=True)
-		pr.submit()
-		
-		if args.cart:
-			generate_payment_request(pr.name)
-			frappe.db.commit()
-		
-		if not args.cart:	
+		if args.return_doc:
 			return pr
+		
+		if args.submit_doc:
+			pr.insert(ignore_permissions=True)
+			pr.submit()
+	
+	if args.cart:
+		generate_payment_request(pr.name)
+		frappe.db.commit()
+	
+	if not args.cart:	
+		return pr
 			
 	return pr.as_dict()