[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()