From 58406a920c2ebaed57298c590a2c3007affa7a72 Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Fri, 10 Jul 2015 12:57:49 +0530 Subject: [PATCH] Validation added to prevent task being closed with open dependent tasks --- erpnext/projects/doctype/task/task.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index 7229203395..fcd756ba6d 100644 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -28,10 +28,7 @@ class Task(Document): def validate(self): self.validate_dates() - - if self.status!=self.get_db_value("status") and self.status == "Closed": - from frappe.desk.form.assign_to import clear - clear(self.doctype, self.name) + self.validate_status() def validate_dates(self): if self.exp_start_date and self.exp_end_date and getdate(self.exp_start_date) > getdate(self.exp_end_date): @@ -40,6 +37,15 @@ class Task(Document): if self.act_start_date and self.act_end_date and getdate(self.act_start_date) > getdate(self.act_end_date): frappe.throw(_("'Actual Start Date' can not be greater than 'Actual End Date'")) + def validate_status(self): + if self.status!=self.get_db_value("status") and self.status == "Closed": + for d in self.depends_on: + if frappe.db.get_value("Task", d.task, "status") != "Closed": + frappe.throw(_("Cannot close task as its dependant task {0} is not closed.").format(d.task)) + + from frappe.desk.form.assign_to import clear + clear(self.doctype, self.name) + def on_update(self): self.check_recursion() self.reschedule_dependent_tasks()