From e7cf06b3c6a8a3902d2cf5a312312e68cc23a203 Mon Sep 17 00:00:00 2001 From: scmmishra Date: Sun, 24 Mar 2019 18:23:41 +0530 Subject: [PATCH 1/5] fix: task overdue status propagates to project --- 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 845d3a02c4b..f85959aa287 100755 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -165,6 +165,13 @@ class Task(NestedSet): self.update_nsm_model() + def update_status(self): + if self.status not in ('Cancelled', 'Completed'): + 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}) @@ -196,10 +203,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 ('Completed', '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): From 5869ba1470c4dc8785e5c84da2cda6767d96af3a Mon Sep 17 00:00:00 2001 From: scmmishra Date: Sun, 24 Mar 2019 20:27:32 +0530 Subject: [PATCH 2/5] feat: Added filter to query --- erpnext/projects/doctype/task/task.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index f85959aa287..e58bb797400 100755 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -203,7 +203,7 @@ def set_multiple_status(names, status): task.save() def set_tasks_as_overdue(): - tasks = frappe.get_all("Task") + tasks = frappe.get_all("Task", filters={'status':['not in',['Cancelled', 'Completed']]}) for task in tasks: frappe.get_doc("Task", task.name).update_status() From a2e801e840888e451d02cecf6beb34dd766022eb Mon Sep 17 00:00:00 2001 From: scmmishra Date: Sun, 24 Mar 2019 20:38:47 +0530 Subject: [PATCH 3/5] fix: Added check for no end date --- erpnext/projects/doctype/task/task.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index e58bb797400..55896847fa0 100755 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -166,7 +166,7 @@ class Task(NestedSet): self.update_nsm_model() def update_status(self): - if self.status not in ('Cancelled', 'Completed'): + if self.status not in ('Cancelled', 'Completed') and self.exp_end_date: from datetime import datetime if self.exp_end_date < datetime.now().date(): self.date = 'Overdue' From 26e5c753dbd22a81a14c75c3785f26ef7aabe0a8 Mon Sep 17 00:00:00 2001 From: scmmishra Date: Mon, 25 Mar 2019 11:35:28 +0530 Subject: [PATCH 4/5] fix: Typo in update_status --- erpnext/projects/doctype/task/task.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index 55896847fa0..4a5c91699f5 100755 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -169,7 +169,7 @@ class Task(NestedSet): if self.status not in ('Cancelled', 'Completed') and self.exp_end_date: from datetime import datetime if self.exp_end_date < datetime.now().date(): - self.date = 'Overdue' + self.status = 'Overdue' self.save() @frappe.whitelist() From 1b63c87929b8dd66376c849d99e68f28b672e1d9 Mon Sep 17 00:00:00 2001 From: scmmishra Date: Wed, 27 Mar 2019 15:04:55 +0530 Subject: [PATCH 5/5] feat: refactored update status --- erpnext/projects/doctype/task/task.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index 4a5c91699f5..2686e58294f 100755 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -169,8 +169,8 @@ class Task(NestedSet): if self.status not in ('Cancelled', 'Completed') and self.exp_end_date: from datetime import datetime if self.exp_end_date < datetime.now().date(): - self.status = 'Overdue' - self.save() + self.db_set('status', 'Overdue') + self.update_project() @frappe.whitelist() def check_if_child_exists(name):