From e1f6e60cea7bafec42ced215560dbc5ed1ca5d19 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 10 Feb 2016 13:05:11 +0530 Subject: [PATCH] [fix] Payment Request Fixes --- .../payment_gateway_account.py | 7 +- .../payment_request/payment_request.py | 66 ++++++++++--------- 2 files changed, 41 insertions(+), 32 deletions(-) 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 dd971ad5d2f..468f8778c47 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 @@ class PaymentGatewayAccount(Document): 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 @@ class PaymentGatewayAccount(Document): 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 9e296973d14..ba7413d886d 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.py +++ b/erpnext/accounts/doctype/payment_request/payment_request.py @@ -23,7 +23,7 @@ class PaymentRequest(Document): 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 @@ def make_payment_request(**args): 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()