Merge pull request #48072 from iamkhanraheel/update-schedule-date

fix: update schedule date in items table in purchase order & disable selecting past date in schedule date
This commit is contained in:
rohitwaghchaure
2025-06-19 18:09:18 +05:30
committed by GitHub
2 changed files with 36 additions and 8 deletions

View File

@@ -59,6 +59,19 @@ frappe.ui.form.on("Purchase Order", {
erpnext.accounts.dimensions.update_dimension(frm, frm.doctype);
},
schedule_date(frm) {
if (frm.doc.schedule_date) {
frm.doc.items.forEach((d) => {
frappe.model.set_value(d.doctype, d.name, "schedule_date", frm.doc.schedule_date);
});
}
},
transaction_date(frm) {
prevent_past_schedule_dates(frm);
frm.set_value("schedule_date", "");
},
refresh: function (frm) {
if (frm.doc.is_old_subcontracting_flow) {
frm.trigger("get_materials_from_supplier");
@@ -75,6 +88,7 @@ frappe.ui.form.on("Purchase Order", {
if (frm.doc.docstatus == 0) {
erpnext.set_unit_price_items_note(frm);
}
prevent_past_schedule_dates(frm);
},
supplier: function (frm) {
@@ -776,10 +790,6 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends (
items_on_form_rendered() {
set_schedule_date(this.frm);
}
schedule_date() {
set_schedule_date(this.frm);
}
};
// for backward compatibility: combine new and previous states
@@ -835,3 +845,11 @@ frappe.ui.form.on("Purchase Order", "is_subcontracted", function (frm) {
erpnext.buying.get_default_bom(frm);
}
});
function prevent_past_schedule_dates(frm) {
if (frm.doc.transaction_date) {
frm.fields_dict["schedule_date"].datepicker.update({
minDate: new Date(frm.doc.transaction_date),
});
}
}

View File

@@ -91,6 +91,12 @@ frappe.ui.form.on("Material Request", {
refresh: function (frm) {
frm.events.make_custom_buttons(frm);
frm.toggle_reqd("customer", frm.doc.material_request_type == "Customer Provided");
prevent_past_schedule_dates(frm);
},
transaction_date(frm) {
prevent_past_schedule_dates(frm);
frm.set_value("schedule_date", "");
},
set_from_warehouse: function (frm) {
@@ -602,10 +608,6 @@ erpnext.buying.MaterialRequestController = class MaterialRequestController exten
set_schedule_date(this.frm);
}
schedule_date() {
set_schedule_date(this.frm);
}
qty(doc, cdt, cdn) {
var row = frappe.get_doc(cdt, cdn);
row.amount = flt(row.qty) * flt(row.rate);
@@ -628,3 +630,11 @@ function set_schedule_date(frm) {
);
}
}
function prevent_past_schedule_dates(frm) {
if (frm.doc.transaction_date) {
frm.fields_dict["schedule_date"].datepicker.update({
minDate: new Date(frm.doc.transaction_date),
});
}
}