From 00b6b971978745f2a4e31e1ab22c983df9b561ff Mon Sep 17 00:00:00 2001 From: Sanket322 Date: Sun, 13 Apr 2025 13:17:15 +0530 Subject: [PATCH 1/2] fix: check return_against exists before api call --- .../public/js/controllers/taxes_and_totals.js | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js index a65fee43897..c7c727457bf 100644 --- a/erpnext/public/js/controllers/taxes_and_totals.js +++ b/erpnext/public/js/controllers/taxes_and_totals.js @@ -894,23 +894,25 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { it should set the return to that mode of payment only. */ - let return_against_mop = await frappe.call({ - method: 'erpnext.controllers.sales_and_purchase_return.get_payment_data', - args: { - invoice: this.frm.doc.return_against - } - }); - - if (return_against_mop.message.length === 1) { - this.frm.doc.payments.forEach(payment => { - if (payment.mode_of_payment == return_against_mop.message[0].mode_of_payment) { - payment.amount = total_amount_to_pay; - } else { - payment.amount = 0; + if(this.frm.doc.return_against){ + let {message : return_against_mop } = await frappe.call({ + method: 'erpnext.controllers.sales_and_purchase_return.get_payment_data', + args: { + invoice: this.frm.doc.return_against } }); - this.frm.refresh_fields(); - return; + + if (return_against_mop.length === 1) { + this.frm.doc.payments.forEach(payment => { + if (payment.mode_of_payment == return_against_mop[0].mode_of_payment) { + payment.amount = total_amount_to_pay; + } else { + payment.amount = 0; + } + }); + this.frm.refresh_fields(); + return; + } } this.frm.doc.payments.find(payment => { From c48db0b7c0391a6c87d552461756ad69f5866326 Mon Sep 17 00:00:00 2001 From: Sanket322 Date: Sun, 13 Apr 2025 13:24:33 +0530 Subject: [PATCH 2/2] fix: ensure backend response is awaited before saving --- erpnext/public/js/controllers/taxes_and_totals.js | 2 +- erpnext/public/js/controllers/transaction.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js index c7c727457bf..300f46f719c 100644 --- a/erpnext/public/js/controllers/taxes_and_totals.js +++ b/erpnext/public/js/controllers/taxes_and_totals.js @@ -64,7 +64,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { && this.frm.doc.is_pos && this.frm.doc.is_return ) { - this.set_total_amount_to_default_mop(); + await this.set_total_amount_to_default_mop(); this.calculate_paid_amount(); } diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index f7a5babd4e2..152ceb10cad 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -843,8 +843,8 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe frappe.model.set_value(item.doctype, item.name, "stock_qty", valid_serial_nos.length); } - validate() { - this.calculate_taxes_and_totals(false); + async validate() { + await this.calculate_taxes_and_totals(false); } update_stock() {