fix: validation for task end date check

(cherry picked from commit 7c6da80f98)
This commit is contained in:
nishkagosalia
2026-08-14 15:52:30 +05:30
committed by Mergify
parent 1ea1d5d6a5
commit 7b0df4b28b

View File

@@ -122,16 +122,32 @@ class Task(NestedSet):
if not self.project or frappe.in_test: if not self.project or frappe.in_test:
return return
if project_end_date := frappe.db.get_value("Project", self.project, "expected_end_date"): project_start_date, project_end_date = frappe.db.get_value(
project_end_date = getdate(project_end_date) "Project", self.project, ["expected_start_date", "expected_end_date"]
)
for fieldname in ("exp_start_date", "exp_end_date", "act_start_date", "act_end_date"): for fieldname in ("exp_start_date", "exp_end_date", "act_start_date", "act_end_date"):
task_date = self.get(fieldname) task_date = self.get(fieldname)
if task_date and date_diff(project_end_date, getdate(task_date)) < 0: if not task_date:
continue
task_date = getdate(task_date)
if project_end_date and date_diff(getdate(project_end_date), task_date) < 0:
frappe.throw( frappe.throw(
_("{0}'s {1} cannot be after {2}'s Expected End Date.").format( _("{0}'s {1} cannot be after {2}'s Expected End Date.").format(
frappe.bold(frappe.get_desk_link("Task", self.name)), get_link_to_form("Task", self.name),
_(self.meta.get_label(fieldname)), _(self.meta.get_label(fieldname)),
frappe.bold(frappe.get_desk_link("Project", self.project)), get_link_to_form("Project", self.project),
),
frappe.exceptions.InvalidDates,
)
if project_start_date and date_diff(task_date, getdate(project_start_date)) < 0:
frappe.throw(
_("{0}'s {1} cannot be before {2}'s Expected Start Date.").format(
get_link_to_form("Task", self.name),
_(self.meta.get_label(fieldname)),
get_link_to_form("Project", self.project),
), ),
frappe.exceptions.InvalidDates, frappe.exceptions.InvalidDates,
) )