diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index becc6c18725..f7a5babd4e2 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -1042,39 +1042,48 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } } - due_date() { + due_date(doc, cdt) { // due_date is to be changed, payment terms template and/or payment schedule must // be removed as due_date is automatically changed based on payment terms + if (doc.doctype !== cdt) { + // triggered by change to the due_date field in payment schedule child table + // do nothing to avoid infinite clearing loop + return; + } // if there is only one row in payment schedule child table, set its due date as the due date - if (this.frm.doc.payment_schedule.length == 1){ - this.frm.doc.payment_schedule[0].due_date = this.frm.doc.due_date; + if (doc.payment_schedule.length == 1){ + doc.payment_schedule[0].due_date = doc.due_date; this.frm.refresh_field("payment_schedule"); return } if ( - this.frm.doc.due_date && + doc.due_date && !this.frm.updating_party_details && - !this.frm.doc.is_pos && + !doc.is_pos && ( - this.frm.doc.payment_terms_template || - this.frm.doc.payment_schedule?.length + doc.payment_terms_template || + doc.payment_schedule?.length ) ) { const to_clear = []; - if (this.frm.doc.payment_terms_template) { - to_clear.push("Payment Terms Template"); + if (doc.payment_terms_template) { + to_clear.push(__(frappe.meta.get_label(cdt, "payment_terms_template"))); } - if (this.frm.doc.payment_schedule?.length) { - to_clear.push("Payment Schedule Table"); + if (doc.payment_schedule?.length) { + to_clear.push(__(frappe.meta.get_label(cdt, "payment_schedule"))); } frappe.confirm( __( - "Do you want to clear the selected {0}?", - [frappe.utils.comma_and(to_clear.map(dt => __(dt)))] + "For the new {0} to take effect, would you like to clear the current {1}?", + [ + __(frappe.meta.get_label(cdt, "due_date")), + frappe.utils.comma_and(to_clear) + ], + "Clear payment terms template and/or payment schedule when due date is changed" ), () => { this.frm.set_value("payment_terms_template", "");