From 6ab6d35f92497fac99a26539f3997e070892651f Mon Sep 17 00:00:00 2001 From: scmmishra Date: Sun, 24 Mar 2019 18:17:13 +0530 Subject: [PATCH] fix: Task Overdue status propagates to project - Used ORM instead of a SQL for set_task_as_overdue - update_status function compares the time and marks the appropriate task as overdue - The on_update hook makes the changes in project as well --- 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 fffa9c1657..ca78e5eace 100755 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -159,6 +159,13 @@ class Task(NestedSet): self.update_nsm_model() + def update_status(self): + if self.status not in ('Cancelled', 'Closed'): + from datetime import datetime + if self.exp_end_date < datetime.now().date(): + self.date = 'Overdue' + self.save() + @frappe.whitelist() def check_if_child_exists(name): child_tasks = frappe.get_all("Task", filters={"parent_task": name}) @@ -186,10 +193,9 @@ def set_multiple_status(names, status): task.save() def set_tasks_as_overdue(): - frappe.db.sql("""update tabTask set `status`='Overdue' - where exp_end_date is not null - and exp_end_date < CURDATE() - and `status` not in ('Closed', 'Cancelled')""") + tasks = frappe.get_all("Task") + for task in tasks: + frappe.get_doc("Task", task.name).update_status() @frappe.whitelist() def get_children(doctype, parent, task=None, project=None, is_root=False):