diff --git a/addons/project/project.py b/addons/project/project.py index 17bafe9aa30..a57f782ef10 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -120,6 +120,7 @@ class project(osv.osv): _columns = { 'complete_name': fields.function(_complete_name, method=True, string="Project Name", type='char', size=250), 'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the project without removing it."), + 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of Projects."), 'category_id': fields.many2one('account.analytic.account','Analytic Account', help="Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc."), 'priority': fields.integer('Sequence'), 'warn_manager': fields.boolean('Warn Manager', help="If you check this field, the project manager will receive a request each time a task is completed by his team."), @@ -138,10 +139,11 @@ class project(osv.osv): # \n If it is to be reviewed then the state is \'Pending\'.\n When the project is completed the state is set to \'Done\'.'), 'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages'), } - + _order = "sequence" _defaults = { 'active': lambda *a: True, 'priority': lambda *a: 1, + 'sequence': lambda *a: 10, } def _check_dates(self, cr, uid, ids): leave = self.read(cr, uid, ids[0],['date_start','date']) diff --git a/addons/project/wizard/compute_tasks_date.py b/addons/project/wizard/compute_tasks_date.py index 6d9f87a9ac4..4e9f81af43a 100644 --- a/addons/project/wizard/compute_tasks_date.py +++ b/addons/project/wizard/compute_tasks_date.py @@ -155,7 +155,7 @@ class wizard_compute_tasks(wizard.interface): for no in range(len(resource)): leaves = [] resource_id = resource_pool.search(cr,uid,[('user_id','=',resource[no].id)]) - if resource_id: + if resource_id and wktime_cal: # Getting list of leaves for specific resource leaves = leaves_resource(cr,uid,resource_id) resource_objs.append(classobj(str(resource[no].name),(Resource,),{'__doc__':resource[no].name,'__name__':resource[no].name,'vacation':tuple(leaves)})) @@ -185,12 +185,11 @@ class wizard_compute_tasks(wizard.interface): # Creating the project with all the tasks and resources def Project(): - resource = reduce(operator.or_,resource_objs) title = project.name start = date_start - + resource = reduce(operator.or_,resource_objs) # If project has calendar - if wktime_cal or leaves: + if wktime_cal: working_days = wktime_cal vacation = tuple(leaves) diff --git a/addons/project_long_term/wizard/compute_phases_date.py b/addons/project_long_term/wizard/compute_phases_date.py index f713942708b..2d4cf9fd70e 100644 --- a/addons/project_long_term/wizard/compute_phases_date.py +++ b/addons/project_long_term/wizard/compute_phases_date.py @@ -79,13 +79,15 @@ def resource_list(cr,uid,obj): resource_pool = pool.get('resource.resource') resources = obj.resource_ids resource_objs = [] + leaves = [] + calendar_id = obj.project_id.resource_calendar_id for no in range(len(resources)): resource_id = resource_pool.search(cr,uid,[('id','=',resources[no].resource_id.id)]) - if resource_id: + if resource_id and calendar_id: # Getting list of leaves for specific resource leaves = leaves_resource(cr,uid,resource_id) # Creating the faces.Resource object with resource specific efficiency and vacation - resource_objs.append(classobj(str(resources[no].resource_id.name),(Resource,),{'__doc__':resources[no].resource_id.name,'__name__':resources[no].resource_id.name,'efficiency':resources[no].useability/100,'vacation':tuple(leaves)})) + resource_objs.append(classobj(str(resources[no].resource_id.name),(Resource,),{'__doc__':resources[no].resource_id.name,'__name__':resources[no].resource_id.name,'efficiency':resources[no].useability/100,'vacation':tuple(leaves)})) return resource_objs class wizard_compute_phases(wizard.interface): @@ -185,7 +187,7 @@ class wizard_compute_phases(wizard.interface): start = start_date # If project has working calendar else the default one would be considered - if wktime_cal or leaves: + if wktime_cal: working_days = wktime_cal vacation = tuple(leaves)