diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py index 6e503086dadc11e1936de6c737f9f6543a57c0c9..187ad8f90d083cf898feab83234bf7d6b2469e12 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.py +++ b/erpnext/accounts/doctype/payment_request/payment_request.py @@ -1,7 +1,6 @@ # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt - import json import warnings @@ -250,7 +249,7 @@ class PaymentRequest(Document): frappe.throw(_("Payment cannot be processed immediately for this payment request.")) def generate_payment_key(self): - self.payment_key = frappe.generate_hash(self.as_json()) + self.payment_key = frappe.generate_hash(length=70) def set_payment_url(self): self.payment_url = get_url("/payments?link={0}".format(self.payment_key)) @@ -868,6 +867,44 @@ def make_status_as_paid(doc, method): frappe.db.commit() +def update_payment_req_status(doc, method): + # TODO: Link with payment entry + from erpnext.accounts.doctype.payment_entry.payment_entry import get_reference_details + + for ref in doc.references: + payment_request_name = frappe.db.get_value( + "Payment Request", + { + "reference_doctype": ref.reference_doctype, + "reference_name": ref.reference_name, + "docstatus": 1, + }, + ) + + if payment_request_name: + ref_details = get_reference_details( + ref.reference_doctype, + ref.reference_name, + doc.party_account_currency, + doc.party_type, + doc.party, + ) + pay_req_doc = frappe.get_doc("Payment Request", payment_request_name) + status = pay_req_doc.status + + if status != "Paid" and not ref_details.outstanding_amount: + status = "Paid" + elif status != "Partially Paid" and ref_details.outstanding_amount != ref_details.total_amount: + status = "Partially Paid" + elif ref_details.outstanding_amount == ref_details.total_amount: + if pay_req_doc.payment_request_type == "Outward": + status = "Initiated" + elif pay_req_doc.payment_request_type == "Inward": + status = "Requested" + + pay_req_doc.db_set("status", status) + + @frappe.whitelist() def make_status_as_completed(name): frappe.db.set_value("Payment Request", name, "status", "Completed") diff --git a/erpnext/accounts/doctype/subscription/subscription_transaction.py b/erpnext/accounts/doctype/subscription/subscription_transaction.py index daa57a41cc69640c1a7d11ea1635abc09a8f6173..e8d6dc132dc6e8b2c27dddf1203936ae772002fd 100644 --- a/erpnext/accounts/doctype/subscription/subscription_transaction.py +++ b/erpnext/accounts/doctype/subscription/subscription_transaction.py @@ -353,7 +353,7 @@ class SubscriptionPaymentRequestGenerator: "party_type": "Customer", "party": self.subscription.customer, "submit_doc": False, - "mute_email": self.subscription.flags.mute_emails or self.subscription.email_template, + "mute_email": self.subscription.flags.mute_emails or not self.subscription.email_template, "currency": self.subscription.currency, "email_template": self.subscription.email_template, "print_format": self.subscription.print_format,