Merge pull request #7869 from KanchanChauhan/dependent-tasks
Dependent task dates gets updated with parent dates
diff --git a/erpnext/projects/doctype/task/task.js b/erpnext/projects/doctype/task/task.js
index 7c4eb80..df38cfe 100644
--- a/erpnext/projects/doctype/task/task.js
+++ b/erpnext/projects/doctype/task/task.js
@@ -6,6 +6,18 @@
cur_frm.add_fetch("project", "company", "company");
frappe.ui.form.on("Task", {
+ onload: function(frm) {
+ frm.set_query("task", "depends_on", function() {
+ var filters = {
+ name: ["!=", frm.doc.name]
+ };
+ if(frm.doc.project) filters["project"] = frm.doc.project;
+ return {
+ filters: filters
+ };
+ })
+ },
+
refresh: function(frm) {
var doc = frm.doc;
if(doc.__islocal) {
@@ -14,7 +26,6 @@
}
}
-
if(!doc.__islocal) {
if(frappe.model.can_read("Timesheet")) {
frm.add_custom_button(__("Timesheet"), function() {
@@ -67,12 +78,5 @@
});
-cur_frm.fields_dict['depends_on'].grid.get_field('task').get_query = function(doc) {
- if(doc.project) {
- return {
- filters: {'project': doc.project}
- }
- }
-}
-
cur_frm.add_fetch('task', 'subject', 'subject');
+cur_frm.add_fetch('task', 'project', 'project');
diff --git a/erpnext/projects/doctype/task/task.json b/erpnext/projects/doctype/task/task.json
index 6c8c14d..f9485e9 100644
--- a/erpnext/projects/doctype/task/task.json
+++ b/erpnext/projects/doctype/task/task.json
@@ -496,7 +496,7 @@
"collapsible": 0,
"columns": 0,
"fieldname": "depends_on_tasks",
- "fieldtype": "Read Only",
+ "fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
@@ -504,14 +504,14 @@
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
- "label": "depends_on_tasks",
+ "label": "Depends on Tasks",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
- "read_only": 0,
+ "read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
@@ -976,7 +976,7 @@
"istable": 0,
"max_attachments": 5,
"menu_index": 0,
- "modified": "2017-02-17 17:24:21.786060",
+ "modified": "2017-02-24 01:47:05.438887",
"modified_by": "Administrator",
"module": "Projects",
"name": "Task",
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 2bdcaf9..44c81a6 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -105,16 +105,18 @@
def reschedule_dependent_tasks(self):
end_date = self.exp_end_date or self.act_end_date
if end_date:
- for task_name in frappe.db.sql("select name from `tabTask` as parent where %s in \
- (select task from `tabTask Depends On` as child where parent.name = child.parent )", self.name, as_dict=1):
+ for task_name in frappe.db.sql("""select name from `tabTask` as parent where parent.project = %(project)s and parent.name in \
+ (select parent from `tabTask Depends On` as child where child.task = %(task)s and child.project = %(project)s)""",
+ {'project': self.project, 'task':self.name }, as_dict=1):
+
task = frappe.get_doc("Task", task_name.name)
- if task.exp_start_date and task.exp_end_date and task.exp_start_date < getdate(end_date) and task.status == "Open" :
+ if task.exp_start_date and task.exp_end_date and task.exp_start_date < getdate(end_date) and task.status == "Open":
task_duration = date_diff(task.exp_end_date, task.exp_start_date)
task.exp_start_date = add_days(end_date, 1)
task.exp_end_date = add_days(task.exp_start_date, task_duration)
task.flags.ignore_recursion_check = True
task.save()
-
+
def has_webform_permission(doc):
project_user = frappe.db.get_value("Project User", {"parent": doc.project, "user":frappe.session.user} , "user")
if project_user:
diff --git a/erpnext/projects/doctype/task/test_task.py b/erpnext/projects/doctype/task/test_task.py
index 45bcd82..2e64b73 100644
--- a/erpnext/projects/doctype/task/test_task.py
+++ b/erpnext/projects/doctype/task/test_task.py
@@ -16,6 +16,7 @@
task1.update({
"status": "Open",
"subject": "_Test Task 1",
+ "project": "_Test Project",
"exp_start_date": "2015-1-1",
"exp_end_date": "2015-1-10"
})
@@ -25,6 +26,7 @@
task2.update({
"status": "Open",
"subject": "_Test Task 2",
+ "project": "_Test Project",
"exp_start_date": "2015-1-11",
"exp_end_date": "2015-1-15",
"depends_on":[
@@ -39,6 +41,7 @@
task3.update({
"status": "Open",
"subject": "_Test Task 2",
+ "project": "_Test Project",
"exp_start_date": "2015-1-11",
"exp_end_date": "2015-1-15",
"depends_on":[
@@ -80,6 +83,7 @@
task1.update({
"status": "Open",
"subject": "_Test Task 1",
+ "project": "_Test Project",
"exp_start_date": "2015-1-1",
"exp_end_date": "2015-1-10"
})
@@ -89,11 +93,13 @@
task2.update({
"status": "Open",
"subject": "_Test Task 2",
+ "project": "_Test Project",
"exp_start_date": "2015-1-11",
"exp_end_date": "2015-1-15",
"depends_on":[
{
- "task": task1.name
+ "task": task1.name,
+ "project": "_Test Project"
}
]
})
@@ -103,11 +109,13 @@
task3.update({
"status": "Open",
"subject": "_Test Task 3",
+ "project": "_Test Project",
"exp_start_date": "2015-1-16",
"exp_end_date": "2015-1-18",
"depends_on":[
{
- "task": task2.name
+ "task": task2.name,
+ "project": "_Test Project"
}
]
})
diff --git a/erpnext/projects/doctype/task_depends_on/task_depends_on.json b/erpnext/projects/doctype/task_depends_on/task_depends_on.json
index ad6869b..25657af 100644
--- a/erpnext/projects/doctype/task_depends_on/task_depends_on.json
+++ b/erpnext/projects/doctype/task_depends_on/task_depends_on.json
@@ -14,13 +14,16 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "task",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 1,
+ "in_standard_filter": 0,
"label": "Task",
"length": 0,
"no_copy": 0,
@@ -30,6 +33,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -40,13 +44,16 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "column_break_2",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
+ "in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
@@ -54,6 +61,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -64,13 +72,16 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "subject",
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 1,
+ "in_standard_filter": 0,
"label": "Subject",
"length": 0,
"no_copy": 0,
@@ -80,6 +91,36 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "project",
+ "fieldtype": "Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Project",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -97,7 +138,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2016-07-11 03:28:09.329158",
+ "modified": "2017-02-24 04:56:04.862502",
"modified_by": "Administrator",
"module": "Projects",
"name": "Task Depends On",
@@ -107,7 +148,9 @@
"quick_entry": 0,
"read_only": 0,
"read_only_onload": 0,
+ "show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
+ "track_changes": 0,
"track_seen": 0
}
\ No newline at end of file