Merge pull request #46959 from barredterra/refactor-due-date

fix: interaction with due date / payment terms / payment schedule
This commit is contained in:
Raffael Meyer
2025-04-08 21:00:41 +02:00
committed by GitHub

View File

@@ -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 // 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 // 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 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){ if (doc.payment_schedule.length == 1){
this.frm.doc.payment_schedule[0].due_date = this.frm.doc.due_date; doc.payment_schedule[0].due_date = doc.due_date;
this.frm.refresh_field("payment_schedule"); this.frm.refresh_field("payment_schedule");
return return
} }
if ( if (
this.frm.doc.due_date && doc.due_date &&
!this.frm.updating_party_details && !this.frm.updating_party_details &&
!this.frm.doc.is_pos && !doc.is_pos &&
( (
this.frm.doc.payment_terms_template || doc.payment_terms_template ||
this.frm.doc.payment_schedule?.length doc.payment_schedule?.length
) )
) { ) {
const to_clear = []; const to_clear = [];
if (this.frm.doc.payment_terms_template) { if (doc.payment_terms_template) {
to_clear.push("Payment Terms Template"); to_clear.push(__(frappe.meta.get_label(cdt, "payment_terms_template")));
} }
if (this.frm.doc.payment_schedule?.length) { if (doc.payment_schedule?.length) {
to_clear.push("Payment Schedule Table"); to_clear.push(__(frappe.meta.get_label(cdt, "payment_schedule")));
} }
frappe.confirm( frappe.confirm(
__( __(
"Do you want to clear the selected {0}?", "For the new {0} to take effect, would you like to clear the current {1}?",
[frappe.utils.comma_and(to_clear.map(dt => __(dt)))] [
__(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", ""); this.frm.set_value("payment_terms_template", "");