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
// 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", "");