From 435db260ee4a3e3dfcfa24bea784d57b9355f8f9 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Wed, 22 Apr 2026 21:36:51 +0530 Subject: [PATCH] fix: delivery schedule in the sales order --- .../doctype/sales_order/sales_order.js | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index 5fe7fe6543b..c557ea33d6f 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -716,29 +716,32 @@ frappe.ui.form.on("Sales Order", { if (!frequency) { frappe.throw(__("Please select a frequency for delivery schedule")); } - if (!first_delivery_date) { frappe.throw(__("Please enter the first delivery date")); } - if (no_of_deliveries <= 0) { frappe.throw(__("Please enter a valid number of deliveries")); } + const month_mapper = { + Monthly: 1, + Quarterly: 3, + "Half Yearly": 6, + Yearly: 12, + }; + frm.schedule_dialog.fields_dict.delivery_schedule.df.data = []; let qty_to_deliver = row.qty; let qty_per_delivery = qty_to_deliver / no_of_deliveries; - for (let i = 0; i < no_of_deliveries; i++) { - let qty = qty_per_delivery; - if (must_be_whole_number) { - qty = cint(qty); - } - if (i === no_of_deliveries - 1) { - // Last delivery, adjust the quantity to deliver the remaining amount + for (let i = 0; i < no_of_deliveries; i++) { + let qty; + const is_last = i === no_of_deliveries - 1; + + if (is_last) { qty = qty_to_deliver; - qty_to_deliver = 0; } else { + qty = must_be_whole_number ? cint(qty_per_delivery) : qty_per_delivery; qty_to_deliver -= qty; } @@ -747,20 +750,15 @@ frappe.ui.form.on("Sales Order", { qty: qty, }); - if (frequency === "Weekly") { - first_delivery_date = frappe.datetime.add_days(first_delivery_date, i + 1 * 7); - } else { - let month_mapper = { - Monthly: 1, - Quarterly: 3, - Half_Yearly: 6, - Yearly: 12, - }; - - first_delivery_date = frappe.datetime.add_months( - first_delivery_date, - month_mapper[frequency] * i + 1 - ); + if (!is_last) { + if (frequency === "Weekly") { + first_delivery_date = frappe.datetime.add_days(first_delivery_date, 7); + } else { + first_delivery_date = frappe.datetime.add_months( + first_delivery_date, + month_mapper[frequency] + ); + } } }