From 8fec9dab1183705ba7ccd2fa69446c7898f1577d Mon Sep 17 00:00:00 2001 From: Jigar Amin Date: Thu, 30 Jun 2011 17:17:31 +0530 Subject: [PATCH] [FIX] project_long_term - scheduling task based on child task paretn shoud be at last bzr revid: jam@tinyerp.com-20110630114731-usnnqe2y834chwb0 --- addons/project_long_term/project_long_term.py | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index 9925c59bee4..a6437819248 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -23,6 +23,7 @@ from datetime import datetime from tools.translate import _ from osv import fields, osv from resource.faces import task as Task +from operator import itemgetter class project_phase(osv.osv): _name = "project.phase" @@ -725,22 +726,11 @@ class project_task(osv.osv): 'user_id' : False } - def _get_child_duration(self, cr, uid, tasks, duration, context=None): - #DFS : visit all child - for task in tasks: - if task.child_ids: - duration = self._get_child_duration(cr, uid, task.child_ids, duration, context) - duration += task.planned_hours - return duration - def generate_task(self, cr, uid, task_id, parent=False, flag=False, context=None): if context is None: context = {} task = self.browse(cr, uid, task_id, context=context) - duration = task.planned_hours - if task.child_ids: - duration = self._get_child_duration(cr, uid, task.child_ids, duration, context) - duration = str(duration)+ 'H' + duration = str(task.planned_hours)+ 'H' str_resource = False parent = task.parent_ids if task.phase_id.resource_ids: @@ -754,10 +744,12 @@ class project_task(osv.osv): effort = \'%s\' resource = %s '''%(task.id, task.name, duration, str_resource) - if parent: + if task.child_ids: + seq = [[child.planned_hours, child.id] for child in task.child_ids] + seq.sort(key=itemgetter(0)) s +=''' - start = up.Task_%s.start -'''%(parent[0].id) + start = up.Task_%s.end + '''%(seq[-1][1]) else: s = ''' def Task_%s(): @@ -765,10 +757,12 @@ class project_task(osv.osv): effort = \'%s\' resource = %s '''%(task.id, task.name, duration, str_resource) - if parent: + if task.child_ids: + seq = [[child.planned_hours, child.id] for child in task.child_ids] + seq.sort(key=itemgetter(0)) s +=''' - start = up.Task_%s.start -'''%(parent[0].id) + start = up.Task_%s.end +'''%(seq[-1][1]) s += '\n' return s project_task()