From 91ace29a8aa15492de8857b4a2f9f0bba6de869e Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Tue, 28 Sep 2010 10:37:11 +0530 Subject: [FIX]: project_long_term: Fixed pylint warnings bzr revid: rpa@tinyerp.com-20100928050711-x7czhl7jwku3s8kl --- addons/project_long_term/project_long_term.py | 4 ---- 1 file changed, 4 deletions(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index a535015d067..dba58e1789f 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -277,7 +277,6 @@ class project_phase(osv.osv): context = {} resource_pool = self.pool.get('resource.resource') uom_pool = self.pool.get('product.uom') - phase_resource = False if context is None: context = {} default_uom_id = self._get_default_uom_id(cr, uid) @@ -290,9 +289,6 @@ class project_phase(osv.osv): duration = str(avg_hours) + 'H' # Create a new project for each phase def Project(): - start = start_date - minimum_time_unit = 1 - resource = phase_resource_obj # If project has working calendar then that # else the default one would be considered if calendar_id: -- cgit v1.2.3 From 4356a354e448f160f81ea1890ff93c16b0c56125 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Tue, 28 Sep 2010 19:22:54 +0530 Subject: [FIX] project_long_term: resolve regression on scheduling task bzr revid: hmo@tinyerp.com-20100928135254-2fux2qn5lozzs2nd --- addons/project_long_term/project_long_term.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index dba58e1789f..9f8f5bf8d56 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -291,6 +291,9 @@ class project_phase(osv.osv): def Project(): # If project has working calendar then that # else the default one would be considered + start = start_date + minimum_time_unit = 1 + resource = phase_resource_obj if calendar_id: working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) vacation = tuple(resource_pool.compute_vacation(cr, uid, calendar_id)) -- cgit v1.2.3 From 7f728b9e802834694b15b6c65235d2f6e108b57d Mon Sep 17 00:00:00 2001 From: gpa Date: Wed, 29 Sep 2010 20:37:02 +0530 Subject: added changes for project bzr revid: gpa@tinyerp.com-20100929150702-209fgqoz1am8n4cb --- addons/project_long_term/project_long_term.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index a535015d067..a831750c8f3 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -24,6 +24,7 @@ from tools.translate import _ from osv import fields, osv from resource.faces import task as Task import operator +from mx import DateTime class project_phase(osv.osv): _name = "project.phase" @@ -90,6 +91,19 @@ class project_phase(osv.osv): model_data_obj = self.pool.get('ir.model.data') model_data_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour') return model_data_obj.read(cr, uid, [model_data_id], ['res_id'])[0]['res_id'] + + def _compute(self, cr, uid, ids, context=None): + res = {} + if not ids: + return res + for phase in self.browse(cr, uid, ids, context=context): + tot = 0.0 + for task in phase.task_ids: + tot += task.planned_hours + res[phase.id] = { + 'total_hours' : tot + } + return res _columns = { 'name': fields.char("Name", size=64, required=True), @@ -108,7 +122,8 @@ class project_phase(osv.osv): 'responsible_id': fields.many2one('res.users', 'Responsible', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'state': fields.selection([('draft', 'Draft'), ('open', 'In Progress'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', readonly=True, required=True, help='If the phase is created the state \'Draft\'.\n If the phase is started, the state becomes \'In Progress\'.\n If review is needed the phase is in \'Pending\' state.\ - \n If the phase is over, the states is set to \'Done\'.') + \n If the phase is over, the states is set to \'Done\'.'), + 'total_hours': fields.function(_compute, method=True, string='Total Hours'), } _defaults = { 'responsible_id': lambda obj,cr,uid,context: uid, @@ -130,6 +145,14 @@ class project_phase(osv.osv): project_id = project_obj.browse(cr, uid, project, context=context) result['date_start'] = project_id.date_start return {'value': result} + + def onchange_days(self, cr, uid, ids, project, context=None): + result = {} + for id in ids: + project_id = self.browse(cr, uid, id, context=context) + newdate = DateTime.strptime(project_id.date_start, '%Y-%m-%d') + DateTime.RelativeDateTime(days=project_id.duration or 0.0) + result['date_end'] = newdate.strftime('%Y-%m-%d') + return {'value': result} def _check_date_start(self, cr, uid, phase, date_end, context=None): if context is None: -- cgit v1.2.3 From 0994368ae173e6569ae31b09dda90ab78fa765bb Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Thu, 30 Sep 2010 20:11:19 +0530 Subject: [IMP] project bzr revid: hmo@tinyerp.com-20100930144119-rqcos1j0xumt4h6t --- addons/project_long_term/project_long_term.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index d1df71630f8..2caf36766b0 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -109,8 +109,8 @@ class project_phase(osv.osv): 'name': fields.char("Name", size=64, required=True), 'date_start': fields.date('Start Date', help="Starting Date of the phase", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'date_end': fields.date('End Date', help="Ending Date of the phase", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), - 'constraint_date_start': fields.date('Start Date', help='force the phase to start after this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), - 'constraint_date_end': fields.date('End Date', help='force the phase to finish before this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'constraint_date_start': fields.date('Minimum Start Date', help='force the phase to start after this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'constraint_date_end': fields.date('Deadline', help='force the phase to finish before this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'project_id': fields.many2one('project.project', 'Project', required=True), 'next_phase_ids': fields.many2many('project.phase', 'project_phase_rel', 'prv_phase_id', 'next_phase_id', 'Next Phases', states={'cancelled':[('readonly',True)]}), 'previous_phase_ids': fields.many2many('project.phase', 'project_phase_rel', 'next_phase_id', 'prv_phase_id', 'Previous Phases', states={'cancelled':[('readonly',True)]}), @@ -394,8 +394,10 @@ class project_resource_allocation(osv.osv): _columns = { 'resource_id': fields.many2one('resource.resource', 'Resource', required=True), 'phase_id': fields.many2one('project.phase', 'Project Phase', ondelete='cascade', required=True), - 'phase_id_date_start': fields.related('phase_id', 'date_start', type='date', string='Starting Date of the phase'), - 'phase_id_date_end': fields.related('phase_id', 'date_end', type='date', string='Ending Date of the phase'), + 'project_id': fields.related('phase_id', 'project_id', type='many2one', relation="project.project", string='Project', store=True), + 'user_id': fields.related('resource_id', 'user_id', type='many2one', relation="res.users", string='User'), + 'date_start': fields.date('Start Date', help="Starting Date"), + 'date_end': fields.date('End Date', help="Ending Date"), 'useability': fields.float('Usability', help="Usability of this resource for this project phase in percentage (=50%)"), } _defaults = { -- cgit v1.2.3