From 10825af5312ff903d2bf90001846c3899cd86be1 Mon Sep 17 00:00:00 2001 From: iamkhanraheel Date: Mon, 16 Jun 2025 14:59:49 +0530 Subject: [PATCH 1/4] fix: update schedule date in items child table, prevent selecting past dates in schedule date --- .../doctype/purchase_order/purchase_order.js | 26 ++++++++++++++++--- .../material_request/material_request.js | 18 ++++++++++--- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js index 49558c8af37..01418f3c9fa 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.js +++ b/erpnext/buying/doctype/purchase_order/purchase_order.js @@ -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) + }); + } +} \ No newline at end of file diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index e33cc63e20c..e49bae47d82 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -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) + }); + } +} \ No newline at end of file From 58565a9fb1ab2fbd9e927e546a3e0c6e2022c72c Mon Sep 17 00:00:00 2001 From: iamkhanraheel Date: Mon, 16 Jun 2025 15:28:11 +0530 Subject: [PATCH 2/4] fix: add new line to pass pre commit --- erpnext/buying/doctype/purchase_order/purchase_order.js | 2 +- erpnext/stock/doctype/material_request/material_request.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js index 01418f3c9fa..e54a3d32239 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.js +++ b/erpnext/buying/doctype/purchase_order/purchase_order.js @@ -852,4 +852,4 @@ function prevent_past_schedule_dates(frm) { minDate: new Date(frm.doc.transaction_date) }); } -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index e49bae47d82..e947b04e813 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -637,4 +637,4 @@ function prevent_past_schedule_dates(frm) { minDate: new Date(frm.doc.transaction_date) }); } -} \ No newline at end of file +} From f71a0fa9e107dbd991c562fdfb2923697729165e Mon Sep 17 00:00:00 2001 From: iamkhanraheel Date: Mon, 16 Jun 2025 15:49:50 +0530 Subject: [PATCH 3/4] fix: code format --- .../buying/doctype/purchase_order/purchase_order.js | 10 +++++----- .../stock/doctype/material_request/material_request.js | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js index e54a3d32239..b7d6c8d5ae0 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.js +++ b/erpnext/buying/doctype/purchase_order/purchase_order.js @@ -67,9 +67,9 @@ frappe.ui.form.on("Purchase Order", { } }, - transaction_date(frm){ + transaction_date(frm) { prevent_past_schedule_dates(frm); - frm.set_value('schedule_date', '') + frm.set_value("schedule_date", ""); }, refresh: function (frm) { @@ -847,9 +847,9 @@ frappe.ui.form.on("Purchase Order", "is_subcontracted", function (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) + if (frm.doc.transaction_date) { + frm.fields_dict["schedule_date"].datepicker.update({ + minDate: new Date(frm.doc.transaction_date), }); } } diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index e947b04e813..327e37a574b 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -96,7 +96,7 @@ frappe.ui.form.on("Material Request", { transaction_date(frm) { prevent_past_schedule_dates(frm); - frm.set_value('schedule_date', '') + frm.set_value('schedule_date', ""); }, set_from_warehouse: function (frm) { @@ -632,9 +632,9 @@ 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) + if (frm.doc.transaction_date) { + frm.fields_dict["schedule_date"].datepicker.update({ + minDate: new Date(frm.doc.transaction_date), }); } } From 94b45d174af72ba3e015267813f1f841c5a9535f Mon Sep 17 00:00:00 2001 From: iamkhanraheel Date: Mon, 16 Jun 2025 16:07:52 +0530 Subject: [PATCH 4/4] fix: code format --- erpnext/stock/doctype/material_request/material_request.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index 327e37a574b..5c1a7935dff 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -96,7 +96,7 @@ frappe.ui.form.on("Material Request", { transaction_date(frm) { prevent_past_schedule_dates(frm); - frm.set_value('schedule_date', ""); + frm.set_value("schedule_date", ""); }, set_from_warehouse: function (frm) {