From acda04a4bd25eb794d72bc74133173accf89216c Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Wed, 17 Jun 2026 18:38:02 +0530 Subject: [PATCH] refactor(postgres): port Payment Request doctype queries to the query builder 3-way merged onto develop (preserving the get_party_bank_account import move). get_subscription_details passes order_by="" so get_all does not inject the doctype default sort the raw query never had. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../doctype/payment_request/payment_request.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py index 69dada00561..93faa06a1a2 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.py +++ b/erpnext/accounts/doctype/payment_request/payment_request.py @@ -629,11 +629,9 @@ class PaymentRequest(Document): def check_if_payment_entry_exists(self): if self.status == "Paid": - if frappe.get_all( + if frappe.db.exists( "Payment Entry Reference", - filters={"reference_name": self.reference_name, "docstatus": ["<", 2]}, - fields=["parent"], - limit=1, + {"reference_name": self.reference_name, "docstatus": ["<", 2]}, ): frappe.throw(_("Payment Entry already exists"), title=_("Error")) @@ -1212,10 +1210,11 @@ def get_dummy_message(doc): @frappe.whitelist() def get_subscription_details(reference_doctype: str, reference_name: str): if reference_doctype == "Sales Invoice": - subscriptions = frappe.db.sql( - """SELECT parent as sub_name FROM `tabSubscription Invoice` WHERE invoice=%s""", - reference_name, - as_dict=1, + subscriptions = frappe.get_all( + "Subscription Invoice", + filters={"invoice": reference_name}, + fields=["parent as sub_name"], + order_by="", # match the original query (no ORDER BY); avoid get_all's default sort ) subscription_plans = [] for subscription in subscriptions: