From e94bd517646645abc9c5eab157a0ab453a556446 Mon Sep 17 00:00:00 2001 From: Raffael Meyer <14891507+barredterra@users.noreply.github.com> Date: Tue, 2 Jun 2026 20:24:10 +0200 Subject: [PATCH] perf(transaction): exit early before backend query (#55556) --- erpnext/public/js/controllers/transaction.js | 49 ++++++++++---------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index d8ab45648ed..60462148223 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -459,19 +459,22 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe reference_name: frm.doc.name, }, }); + + if (!schedules?.length) { + this.make_payment_request(); + return; + } + const value = await frappe.db.get_single_value( "Accounts Settings", "fetch_payment_schedule_in_payment_request" ); - if (!value || !schedules.length) { + if (!value) { this.make_payment_request(); return; } - if (!schedules || !schedules.length) { - frappe.msgprint(__("No pending payment schedules available.")); - return; - } + schedules.forEach((schedule) => (schedule.__checked = 1)); const dialog = new frappe.ui.Dialog({ @@ -833,26 +836,24 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe }, async () => { // for internal customer instead of pricing rule directly apply valuation rate on item - const fetch_valuation_rate_for_internal_transactions = - await frappe.db.get_single_value( - "Accounts Settings", - "fetch_valuation_rate_for_internal_transaction" - ); - if ( - (me.frm.doc.is_internal_customer || - me.frm.doc.is_internal_supplier) && - fetch_valuation_rate_for_internal_transactions - ) { - me.get_incoming_rate( - item, - me.frm.posting_date, - me.frm.posting_time, - me.frm.doc.doctype, - me.frm.doc.company - ); - } else { - me.frm.script_manager.trigger("price_list_rate", cdt, cdn); + if (me.frm.doc.is_internal_customer || me.frm.doc.is_internal_supplier) { + const fetch_valuation_rate_for_internal_transactions = + await frappe.db.get_single_value( + "Accounts Settings", + "fetch_valuation_rate_for_internal_transaction" + ); + if (fetch_valuation_rate_for_internal_transactions) { + me.get_incoming_rate( + item, + me.frm.posting_date, + me.frm.posting_time, + me.frm.doc.doctype, + me.frm.doc.company + ); + return; + } } + me.frm.script_manager.trigger("price_list_rate", cdt, cdn); }, () => { if (me.frm.doc.is_internal_customer || me.frm.doc.is_internal_supplier) {