diff options
| author | ksa (Open ERP) <ksa@tinyerp.co.in> | 2010-08-02 19:46:33 +0530 |
|---|---|---|
| committer | ksa (Open ERP) <ksa@tinyerp.co.in> | 2010-08-02 19:46:33 +0530 |
| commit | bba7b3f2f014cc0324befa33fb0c2a5fa1938a53 (patch) | |
| tree | a745441331f4cf1b363cc9619610bb329abf90d9 /addons/project_long_term | |
| parent | 36c5f9d1686d4f0944b22afb7a531a905c76dd69 (diff) | |
| parent | 8d2393236456557f5816073f010c0b71952b5d84 (diff) | |
[MERGE]
bzr revid: ksa@tinyerp.co.in-20100802141633-ih8ev5r9emoz8rih
Diffstat (limited to 'addons/project_long_term')
11 files changed, 177 insertions, 284 deletions
diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py index ae391ebbb03..0fb16cdc23d 100644 --- a/addons/project_long_term/__openerp__.py +++ b/addons/project_long_term/__openerp__.py @@ -22,7 +22,7 @@ { "name": "Long Term Project Management", "version": "1.1", - "author": "Tiny", + "author": "OpenERP SA", "website": "http://www.openerp.com", "category": "Generic Modules/Projects & Services", "depends": ["resource", "project"], diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index f76ab413e23..f4ae126ee67 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -93,19 +93,19 @@ class project_phase(osv.osv): _columns = { 'name': fields.char("Name", size=64, required=True), - 'date_start': fields.datetime('Start Date', help="Starting Date of the phase"), - 'date_end': fields.datetime('End Date', help="Ending Date of the phase"), - 'constraint_date_start': fields.datetime('Start Date', help='force the phase to start after this date'), - 'constraint_date_end': fields.datetime('End Date', help='force the phase to finish before this date'), + '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)]}), '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'), - 'previous_phase_ids': fields.many2many('project.phase', 'project_phase_rel', 'next_phase_id', 'prv_phase_id', 'Previous Phases'), + '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)]}), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of phases."), - 'duration': fields.float('Duration', required=True, help="By default in days"), - 'product_uom': fields.many2one('product.uom', 'Duration UoM', required=True, help="UoM (Unit of Measure) is the unit of measurement for Duration"), - 'task_ids': fields.one2many('project.task', 'phase_id', "Project Tasks"), - 'resource_ids': fields.one2many('project.resource.allocation', 'phase_id', "Project Resources"), - 'responsible_id': fields.many2one('res.users', 'Responsible'), + 'duration': fields.float('Duration', required=True, help="By default in days", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'product_uom': fields.many2one('product.uom', 'Duration UoM', required=True, help="UoM (Unit of Measure) is the unit of measurement for Duration", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'task_ids': fields.one2many('project.task', 'phase_id', "Project Tasks", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'resource_ids': fields.one2many('project.resource.allocation', 'phase_id', "Project Resources",states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), + '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\'.') @@ -114,7 +114,7 @@ class project_phase(osv.osv): 'responsible_id': lambda obj,cr,uid,context: uid, 'state': 'draft', 'sequence': 10, - 'product_uom': lambda self,cr,uid,c: self.pool.get('product.uom').search(cr, uid, [('name', '=', 'day')], context=c)[0] + 'product_uom': lambda self,cr,uid,c: self.pool.get('product.uom').search(cr, uid, [('name', '=', _('Day'))], context=c)[0] } _order = "name" _constraints = [ @@ -130,7 +130,7 @@ class project_phase(osv.osv): if project: project_id = project_obj.browse(cr, uid, project, context=context) if project_id.date_start: - result['date_start'] = mx.DateTime.strptime(project_id.date_start, "%Y-%m-%d").strftime('%Y-%m-%d %H:%M:%S') + result['date_start'] = mx.DateTime.strptime(project_id.date_start, "%Y-%m-%d").strftime('%Y-%m-%d') return {'value': result} return {'value': {'date_start': []}} @@ -147,15 +147,15 @@ class project_phase(osv.osv): resource_id = resource_obj.search(cr, uid, [('user_id', '=', phase.responsible_id.id)]) if resource_id: # cal_id = resource_obj.browse(cr, uid, resource_id[0], context=context).calendar_id.id - res = resource_obj.read(cr, uid, resource_id[0], ['calendar_id'], context=context)[0] + res = resource_obj.read(cr, uid, resource_id, ['calendar_id'], context=context)[0] cal_id = res.get('calendar_id', False) and res.get('calendar_id')[0] or False if cal_id: calendar_id = cal_id default_uom_id = self._get_default_uom_id(cr, uid) avg_hours = uom_obj._compute_qty(cr, uid, phase.product_uom.id, phase.duration, default_uom_id) work_times = cal_obj.interval_min_get(cr, uid, calendar_id, date_end, avg_hours or 0.0, resource_id and resource_id[0] or False) - dt_start = work_times[0][0].strftime('%Y-%m-%d %H:%M:%S') - self.write(cr, uid, [phase.id], {'date_start': dt_start, 'date_end': date_end.strftime('%Y-%m-%d %H:%M:%S')}, context=context) + dt_start = work_times[0][0].strftime('%Y-%m-%d') + self.write(cr, uid, [phase.id], {'date_start': dt_start, 'date_end': date_end.strftime('%Y-%m-%d')}, context=context) def _check_date_end(self, cr, uid, phase, date_start, context=None): if context is None: @@ -170,15 +170,15 @@ class project_phase(osv.osv): resource_id = resource_obj.search(cr, uid, [('user_id', '=', phase.responsible_id.id)], context=context) if resource_id: # cal_id = resource_obj.browse(cr, uid, resource_id[0], context=context).calendar_id.id - res = resource_obj.read(cr, uid, resource_id[0], ['calendar_id'], context=context)[0] + res = resource_obj.read(cr, uid, resource_id, ['calendar_id'], context=context)[0] cal_id = res.get('calendar_id', False) and res.get('calendar_id')[0] or False if cal_id: calendar_id = cal_id default_uom_id = self._get_default_uom_id(cr, uid) avg_hours = uom_obj._compute_qty(cr, uid, phase.product_uom.id, phase.duration, default_uom_id) work_times = cal_obj.interval_get(cr, uid, calendar_id, date_start, avg_hours or 0.0, resource_id and resource_id[0] or False) - dt_end = work_times[-1][1].strftime('%Y-%m-%d %H:%M:%S') - self.write(cr, uid, [phase.id], {'date_start': date_start.strftime('%Y-%m-%d %H:%M:%S'), 'date_end': dt_end}, context=context) + dt_end = work_times[-1][1].strftime('%Y-%m-%d') + self.write(cr, uid, [phase.id], {'date_start': date_start.strftime('%Y-%m-%d'), 'date_end': dt_end}, context=context) def write(self, cr, uid, ids, vals, context=None): resource_calendar_obj = self.pool.get('resource.calendar') @@ -190,6 +190,8 @@ class project_phase(osv.osv): return super(project_phase, self).write(cr, uid, ids, vals, context=context) # Consider calendar and efficiency if the phase is performed by a resource # otherwise consider the project's working calendar + if isinstance(ids, (int, long)): + ids = [ids] phase = self.browse(cr, uid, ids[0], context=context) calendar_id = phase.project_id.resource_calendar_id and phase.project_id.resource_calendar_id.id or False resource_id = resource_obj.search(cr, uid, [('user_id', '=', phase.responsible_id.id)],context=context) @@ -203,17 +205,17 @@ class project_phase(osv.osv): # Change the date_start and date_end # for previous and next phases respectively based on valid condition if vals.get('date_start', False) and vals['date_start'] < phase.date_start: - dt_start = mx.DateTime.strptime(vals['date_start'], '%Y-%m-%d %H:%M:%S') + dt_start = mx.DateTime.strptime(vals['date_start'], '%Y-%m-%d') work_times = resource_calendar_obj.interval_get(cr, uid, calendar_id, dt_start, avg_hours or 0.0, resource_id and resource_id[0] or False) if work_times: - vals['date_end'] = work_times[-1][1].strftime('%Y-%m-%d %H:%M:%S') + vals['date_end'] = work_times[-1][1].strftime('%Y-%m-%d') for prv_phase in phase.previous_phase_ids: self._check_date_start(cr, uid, prv_phase, dt_start, context=context) if vals.get('date_end', False) and vals['date_end'] > phase.date_end: - dt_end = mx.DateTime.strptime(vals['date_end'],'%Y-%m-%d %H:%M:%S') + dt_end = mx.DateTime.strptime(vals['date_end'],'%Y-%m-%d') work_times = resource_calendar_obj.interval_min_get(cr, uid, calendar_id, dt_end, avg_hours or 0.0, resource_id and resource_id[0] or False) if work_times: - vals['date_start'] = work_times[0][0].strftime('%Y-%m-%d %H:%M:%S') + vals['date_start'] = work_times[0][0].strftime('%Y-%m-%d') for next_phase in phase.next_phase_ids: self._check_date_end(cr, uid, next_phase, dt_end, context=context) return super(project_phase, self).write(cr, uid, ids, vals, context=context) @@ -246,7 +248,9 @@ class project_resource_allocation(osv.osv): _rec_name = 'resource_id' _columns = { 'resource_id': fields.many2one('resource.resource', 'Resource', required=True), - 'phase_id': fields.many2one('project.phase', 'Project Phase', 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'), 'useability': fields.float('Usability', help="Usability of this resource for this project phase in percentage (=50%)"), } _defaults = { @@ -259,7 +263,7 @@ class project(osv.osv): _inherit = "project.project" _columns = { 'phase_ids': fields.one2many('project.phase', 'project_id', "Project Phases"), - 'resource_calendar_id': fields.many2one('resource.calendar', 'Working Time', help="Timetable working hours to adjust the gantt diagram report"), + 'resource_calendar_id': fields.many2one('resource.calendar', 'Working Time', help="Timetable working hours to adjust the gantt diagram report", states={'close':[('readonly',True)]} ), } project() diff --git a/addons/project_long_term/project_long_term_demo.xml b/addons/project_long_term/project_long_term_demo.xml index fd965e4c792..7718048dc05 100644 --- a/addons/project_long_term/project_long_term_demo.xml +++ b/addons/project_long_term/project_long_term_demo.xml @@ -249,14 +249,14 @@ <field eval="1" name="active"/> <field eval="1" name="warn_manager"/> <field eval="0" name="warn_customer"/> - <field name="date_start">2010-02-25</field> + <field name="date_start" eval="(DateTime.now()-timedelta(70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field eval="1" name="priority"/> <field name="state">open</field> <field name="type">normal</field> <field name="description">Develop an OpenERP Website.</field> <field eval="[(6, 0, [ref('res_users_manager0'), ref('res_users_user0'), ref('res_users_userfinance0'), ref('res_users_userdesign0'), ref('res_users_userdeveloper0'), ref('res_users_usertester0'), ref('res_users_useranalyst0')])]" name="members"/> - <field name="date">2010-04-30</field> + <field name="date" eval="(DateTime.now()+timedelta(60-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="user_id" ref="base.user_root"/> <field name="currency_id" ref="base.EUR"/> <field eval="[(6, 0, [])]" name="type_ids"/> @@ -269,14 +269,14 @@ <field name="name">Information Gathering and Understanding</field> <field name="product_uom" ref="product.uom_day"/> <field eval="10" name="sequence"/> - <field name="constraint_date_end">2010-03-11 15:37:00</field> - <field name="date_start">2010-02-25 15:33:00</field> + <field name="constraint_date_end" eval="(DateTime.now()+timedelta(18-70)).strftime('%Y-%m-%d')"/> + <field name="date_start" eval="(DateTime.now()-timedelta(70)).strftime('%Y-%m-%d')"/> <field name="state">draft</field> <field name="responsible_id" ref="res_users_demouser1"/> - <field eval="10.0" name="duration"/> + <field eval="15.0" name="duration"/> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field name="constraint_date_start">2010-02-24 15:37:00</field> - <field name="date_end">2010-03-10 15:33:00</field> + <field name="constraint_date_start" eval="(DateTime.now()+timedelta(2-70)).strftime('%Y-%m-%d')"/> + <field name="date_end" eval="(DateTime.now()+timedelta(15-70)).strftime('%Y-%m-%d')"/> </record> <record id="project_phase_planning0" model="project.phase"> @@ -284,59 +284,59 @@ <field name="name">Planning</field> <field name="product_uom" ref="product.uom_day"/> <field eval="10" name="sequence"/> - <field name="constraint_date_end">2010-03-25 15:49:00</field> - <field name="date_start">2010-02-18 15:48:00</field> + <field name="constraint_date_end" eval="(DateTime.now()+timedelta(28-70)).strftime('%Y-%m-%d')"/> + <field name="date_start" eval="(DateTime.now()+timedelta(10-70)).strftime('%Y-%m-%d')"/> <field name="state">draft</field> <field name="responsible_id" ref="res_users_manager0"/> - <field eval="7.0" name="duration"/> + <field eval="15.0" name="duration"/> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field name="constraint_date_start">2010-02-12 15:49:00</field> - <field name="date_end">2010-03-11 15:48:00</field> + <field name="constraint_date_start" eval="(DateTime.now()+timedelta(13-70)).strftime('%Y-%m-%d')"/> + <field name="date_end" eval="(DateTime.now()+timedelta(25-70)).strftime('%Y-%m-%d')"/> </record> <record id="project_phase_webdesign0" model="project.phase"> - <field eval="[(6, 0, [ref('project_phase_informationgatheringandunderstanding0'), ref('project_phase_planning0')])]" name="previous_phase_ids"/> + <field eval="[(6, 0, [ref('project_phase_planning0')])]" name="previous_phase_ids"/> <field name="name">Web Design </field> <field name="product_uom" ref="product.uom_day"/> <field eval="10" name="sequence"/> - <field name="constraint_date_end">2010-04-15 16:08:00</field> - <field name="date_start">2010-04-01 16:02:00</field> + <field name="constraint_date_end" eval="(DateTime.now()+timedelta(45-70)).strftime('%Y-%m-%d')"/> + <field name="date_start" eval="(DateTime.now()+timedelta(20-70)).strftime('%Y-%m-%d')"/> <field name="state">draft</field> <field name="responsible_id" ref="res_users_userdesign0"/> - <field eval="10.0" name="duration"/> + <field eval="20.0" name="duration"/> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field name="constraint_date_start">2010-03-09 16:00:00</field> - <field name="date_end">2010-04-10 16:02:00</field> + <field name="constraint_date_start" eval="(DateTime.now()+timedelta(25-70)).strftime('%Y-%m-%d')"/> + <field name="date_end" eval="(DateTime.now()+timedelta(40-70)).strftime('%Y-%m-%d')"/> </record> <record id="project_phase_developmentintegrationandtesting0" model="project.phase"> - <field eval="[(6, 0, [ref('project_phase_informationgatheringandunderstanding0'), ref('project_phase_planning0'), ref('project_phase_webdesign0')])]" name="previous_phase_ids"/> + <field eval="[(6, 0, [ref('project_phase_webdesign0')])]" name="previous_phase_ids"/> <field name="name">Development, Integration and Testing</field> <field name="product_uom" ref="product.uom_day"/> <field eval="10" name="sequence"/> - <field name="constraint_date_end">2010-04-27 17:29:00</field> - <field name="date_start">2010-04-12 16:10:00</field> + <field name="constraint_date_end" eval="(DateTime.now()+timedelta(57-70)).strftime('%Y-%m-%d')"/> + <field name="date_start" eval="(DateTime.now()+timedelta(30-70)).strftime('%Y-%m-%d')"/> <field name="state">draft</field> <field name="responsible_id" ref="res_users_manager0"/> - <field eval="15.0" name="duration"/> + <field eval="22.0" name="duration"/> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field name="constraint_date_start">2010-03-10 16:11:00</field> - <field name="date_end">2010-04-26 16:10:00</field> + <field name="constraint_date_start" eval="(DateTime.now()+timedelta(35-70)).strftime('%Y-%m-%d')"/> + <field name="date_end" eval="(DateTime.now()+timedelta(52-70)).strftime('%Y-%m-%d')"/> </record> <record id="project_phase_websitedeployment0" model="project.phase"> - <field eval="[(6, 0, [ref('project_phase_informationgatheringandunderstanding0'), ref('project_phase_planning0'), ref('project_phase_webdesign0'), ref('project_phase_developmentintegrationandtesting0')])]" name="previous_phase_ids"/> + <field eval="[(6, 0, [ref('project_phase_developmentintegrationandtesting0')])]" name="previous_phase_ids"/> <field name="name">Website Deployment</field> <field name="product_uom" ref="product.uom_day"/> <field eval="10" name="sequence"/> - <field name="constraint_date_end">2010-04-30 16:35:00</field> - <field name="date_start">2010-04-26 16:35:00</field> + <field name="constraint_date_end" eval="(DateTime.now()+timedelta(63-70)).strftime('%Y-%m-%d')"/> + <field name="date_start" eval="(DateTime.now()+timedelta(55-70)).strftime('%Y-%m-%d')"/> <field name="state">draft</field> <field name="responsible_id" ref="res_users_manager0"/> - <field eval="2.0" name="duration"/> + <field eval="5.0" name="duration"/> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field name="constraint_date_start">2010-03-10 16:35:00</field> - <field name="date_end">2010-04-27 16:34:00</field> + <field name="constraint_date_start" eval="(DateTime.now()+timedelta(58-70)).strftime('%Y-%m-%d')"/> + <field name="date_end" eval="(DateTime.now()+timedelta(60-70)).strftime('%Y-%m-%d')"/> </record> <!-- Project Resource Allocation --> @@ -396,11 +396,11 @@ <!-- Tasks --> <record id="project_task_preparerequirementsdocument0" model="project.task"> - <field eval="10" name="sequence"/> - <field name="date_end">2010-03-02 11:00:00</field> - <field eval="24.0" name="planned_hours"/> + <field eval="15" name="sequence"/> + <field eval="100.0" name="planned_hours"/> <field name="user_id" ref="res_users_user0"/> - <field name="date_start">2010-02-24 05:00:00</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()-timedelta(70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -408,17 +408,18 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Prepare Requirements Document</field> - <field name="date_deadline">2010-03-08</field> - <field eval="24.0" name="total_hours"/> - <field eval="24.0" name="remaining_hours"/> + <field name="date_deadline" eval="(DateTime.now()+timedelta(55-70)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field eval="100.0" name="total_hours"/> + <field eval="100.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_informationgatheringandunderstanding0"/> </record> <record id="project_task_definewebsitegoalspurposesandtargetaudience0" model="project.task"> <field eval="10" name="sequence"/> - <field eval="65.0" name="planned_hours"/> + <field eval="80.0" name="planned_hours"/> <field name="user_id" ref="res_users_useranalyst0"/> - <field name="date_start">2010-02-25 15:38:08</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()-timedelta(70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -426,17 +427,18 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Define Website Goals, Purposes and Target Audience</field> - <field name="date_deadline">2010-03-04</field> - <field eval="65.0" name="total_hours"/> - <field eval="65.0" name="remaining_hours"/> + <field name="date_deadline" eval="(DateTime.now()+timedelta(10-70)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field eval="80.0" name="total_hours"/> + <field eval="80.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_informationgatheringandunderstanding0"/> </record> <record id="project_task_usecases0" model="project.task"> - <field eval="10" name="sequence"/> - <field eval="16.0" name="planned_hours"/> + <field eval="17" name="sequence"/> + <field eval="40.0" name="planned_hours"/> <field name="user_id" ref="res_users_userdesign0"/> - <field name="date_start">2010-02-25 15:42:42</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(48-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -444,9 +446,9 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Use Cases</field> - <field name="date_deadline">2010-03-10</field> - <field eval="16.0" name="total_hours"/> - <field eval="16.0" name="remaining_hours"/> + <field name="date_deadline" eval="(DateTime.now()+timedelta(55-70)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field eval="40.0" name="total_hours"/> + <field eval="40.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_informationgatheringandunderstanding0"/> </record> @@ -454,7 +456,8 @@ <field eval="10" name="sequence"/> <field eval="25.0" name="planned_hours"/> <field name="user_id" ref="res_users_userfinance0"/> - <field name="date_start">2010-02-25 15:51:00</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(10-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -462,7 +465,7 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Budget Planning</field> - <field name="date_deadline">2010-03-31</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(18-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="25.0" name="total_hours"/> <field eval="25.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_planning0"/> @@ -472,7 +475,8 @@ <field eval="10" name="sequence"/> <field eval="25.0" name="planned_hours"/> <field name="user_id" ref="res_users_user0"/> - <field name="date_start">2010-02-25 15:54:42</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(10-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -480,7 +484,7 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Quality Planning</field> - <field name="date_deadline">2010-03-31</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(18-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="25.0" name="total_hours"/> <field eval="25.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_planning0"/> @@ -490,7 +494,8 @@ <field eval="10" name="sequence"/> <field eval="20.0" name="planned_hours"/> <field name="user_id" ref="res_users_user1"/> - <field name="date_start">2010-02-25 15:55:11</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(13-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -498,7 +503,7 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Risk Management Planning</field> - <field name="date_deadline">2010-03-31</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(20-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="20.0" name="total_hours"/> <field eval="20.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_planning0"/> @@ -508,7 +513,8 @@ <field eval="10" name="sequence"/> <field eval="30.0" name="planned_hours"/> <field name="user_id" ref="res_users_manager0"/> - <field name="date_start">2010-02-25 15:57:48</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(20-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -516,7 +522,7 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Create Project Schedules</field> - <field name="date_deadline">2010-03-31</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(25-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="30.0" name="total_hours"/> <field eval="30.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_planning0"/> @@ -526,7 +532,8 @@ <field eval="10" name="sequence"/> <field eval="10.0" name="planned_hours"/> <field name="user_id" ref="res_users_manager0"/> - <field name="date_start">2010-02-25 16:04:16</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(20-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -534,7 +541,7 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Dataflow Design</field> - <field name="date_deadline">2010-04-02</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(23-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="10.0" name="total_hours"/> <field eval="10.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_webdesign0"/> @@ -544,7 +551,8 @@ <field eval="10" name="sequence"/> <field eval="50.0" name="planned_hours"/> <field name="user_id" ref="res_users_userdesign0"/> - <field name="date_start">2010-02-25 16:05:43</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(22-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -552,9 +560,9 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">User Interface Design</field> - <field name="date_deadline">2010-04-10</field> - <field eval="50.0" name="total_hours"/> - <field eval="50.0" name="remaining_hours"/> + <field name="date_deadline" eval="(DateTime.now()+timedelta(40-70)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field eval="150.0" name="total_hours"/> + <field eval="150.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_webdesign0"/> </record> @@ -562,7 +570,8 @@ <field eval="10" name="sequence"/> <field eval="40.0" name="planned_hours"/> <field name="user_id" ref="res_users_userdesign0"/> - <field name="date_start">2010-02-25 16:06:52</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(30-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -570,7 +579,7 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Task Level WBS</field> - <field name="date_deadline">2010-04-07</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(40-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="40.0" name="total_hours"/> <field eval="40.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_webdesign0"/> @@ -580,7 +589,8 @@ <field eval="10" name="sequence"/> <field eval="90.0" name="planned_hours"/> <field name="user_id" ref="res_users_userdeveloper0"/> - <field name="date_start">2010-02-25 16:11:40</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(30-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -588,16 +598,18 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Modular Programming</field> - <field name="date_deadline">2010-04-22</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(50-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="90.0" name="total_hours"/> <field eval="90.0" name="remaining_hours"/> + <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> </record> <record id="project_task_integratemodules0" model="project.task"> <field eval="10" name="sequence"/> <field eval="20.0" name="planned_hours"/> <field name="user_id" ref="res_users_userdeveloper1"/> - <field name="date_start">2010-02-25 16:13:10</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(45-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -605,16 +617,18 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Integrate Modules</field> - <field name="date_deadline">2010-04-24</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(53-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="20.0" name="total_hours"/> <field eval="20.0" name="remaining_hours"/> + <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> </record> <record id="project_task_unittesting0" model="project.task"> <field eval="10" name="sequence"/> - <field eval="30.0" name="planned_hours"/> + <field eval="50.0" name="planned_hours"/> <field name="user_id" ref="res_users_usertester0"/> - <field name="date_start">2010-02-25 16:14:32</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(40-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -622,16 +636,18 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Unit Testing</field> - <field name="date_deadline">2010-04-24</field> - <field eval="30.0" name="total_hours"/> - <field eval="30.0" name="remaining_hours"/> + <field name="date_deadline" eval="(DateTime.now()+timedelta(55-70)).strftime('%Y-%m-%d %H:%M:%S')"/> + <field eval="50.0" name="total_hours"/> + <field eval="50.0" name="remaining_hours"/> + <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> </record> <record id="project_task_regressiontest0" model="project.task"> <field eval="10" name="sequence"/> <field eval="30.0" name="planned_hours"/> <field name="user_id" ref="res_users_usertester0"/> - <field name="date_start">2010-02-25 16:15:38</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(40-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -639,16 +655,18 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Regression Test</field> - <field name="date_deadline">2010-04-24</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(55-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="30.0" name="total_hours"/> <field eval="30.0" name="remaining_hours"/> + <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> </record> <record id="project_task_documentation0" model="project.task"> <field eval="10" name="sequence"/> <field eval="15.0" name="planned_hours"/> <field name="user_id" ref="res_users_demouser1"/> - <field name="date_start">2010-02-25 16:17:04</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(40-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -656,16 +674,18 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Documentation</field> - <field name="date_deadline">2010-04-24</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(55-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="15.0" name="total_hours"/> <field eval="15.0" name="remaining_hours"/> + <field name="phase_id" ref="project_phase_websitedeployment0"/> </record> <record id="project_task_performancetuning0" model="project.task"> <field eval="10" name="sequence"/> <field eval="40.0" name="planned_hours"/> <field name="user_id" ref="res_users_usertester1"/> - <field name="date_start">2010-02-25 16:17:42</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(45-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -673,16 +693,18 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Performance Tuning</field> - <field name="date_deadline">2010-04-24</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(55-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="40.0" name="total_hours"/> <field eval="40.0" name="remaining_hours"/> + <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> </record> <record id="project_task_deploywebsite0" model="project.task"> <field eval="10" name="sequence"/> <field eval="5.0" name="planned_hours"/> <field name="user_id" ref="res_users_userdeveloper0"/> - <field name="date_start">2010-02-25 16:21:15</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(55-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> @@ -690,171 +712,29 @@ <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> <field name="name">Deploy Website</field> - <field name="date_deadline">2010-04-26</field> - <field eval="5.0" name="total_hours"/> - <field eval="5.0" name="remaining_hours"/> - </record> - - <record id="project_task_presentation0" model="project.task"> - <field eval="10" name="sequence"/> - <field eval="5.0" name="planned_hours"/> - <field name="user_id" ref="res_users_demouser1"/> - <field name="date_start">2010-02-25 16:22:09</field> - <field name="company_id" ref="base.main_company"/> - <field name="priority">2</field> - <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field eval="[(6, 0, [])]" name="child_ids"/> - <field eval="[(6, 0, [])]" name="parent_ids"/> - <field eval="1" name="active"/> - <field name="name">Presentation</field> - <field name="date_deadline">2010-04-28</field> - <field eval="5.0" name="total_hours"/> - <field eval="5.0" name="remaining_hours"/> - </record> - - <record id="project_task_deployment0" model="project.task"> - <field eval="10" name="sequence"/> - <field eval="5.0" name="planned_hours"/> - <field name="user_id" ref="res_users_userdeveloper0"/> - <field name="date_start">2010-02-25 16:36:02</field> - <field name="company_id" ref="base.main_company"/> - <field name="priority">2</field> - <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field eval="[(6, 0, [])]" name="child_ids"/> - <field eval="[(6, 0, [])]" name="parent_ids"/> - <field eval="1" name="active"/> - <field name="name">Deployment</field> - <field name="date_deadline">2010-04-28</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(60-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="5.0" name="total_hours"/> <field eval="5.0" name="remaining_hours"/> <field name="phase_id" ref="project_phase_websitedeployment0"/> </record> - <record id="project_task_presentation1" model="project.task"> - <field eval="10" name="sequence"/> - <field eval="5.0" name="planned_hours"/> - <field name="user_id" ref="res_users_demouser1"/> - <field name="date_start">2010-02-25 16:36:43</field> - <field name="company_id" ref="base.main_company"/> - <field name="priority">2</field> - <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field eval="[(6, 0, [])]" name="child_ids"/> - <field eval="[(6, 0, [])]" name="parent_ids"/> - <field eval="1" name="active"/> - <field name="name">Presentation</field> - <field name="date_deadline">2010-04-29</field> - <field eval="5.0" name="total_hours"/> - <field eval="5.0" name="remaining_hours"/> - <field name="phase_id" ref="project_phase_websitedeployment0"/> - </record> - - <record id="project_task_modulesintegration0" model="project.task"> - <field eval="10" name="sequence"/> - <field eval="20.0" name="planned_hours"/> - <field name="user_id" ref="res_users_userdeveloper1"/> - <field name="date_start">2010-02-25 17:22:46</field> - <field name="company_id" ref="base.main_company"/> - <field name="priority">2</field> - <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field eval="[(6, 0, [])]" name="child_ids"/> - <field eval="[(6, 0, [])]" name="parent_ids"/> - <field eval="1" name="active"/> - <field name="name">Modules Integration</field> - <field name="date_deadline">2010-04-24</field> - <field eval="20.0" name="total_hours"/> - <field eval="20.0" name="remaining_hours"/> - <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> - </record> - - <record id="project_task_unittesting1" model="project.task"> - <field eval="10" name="sequence"/> - <field eval="30.0" name="planned_hours"/> - <field name="user_id" ref="res_users_usertester0"/> - <field name="date_start">2010-02-25 17:34:32</field> - <field name="company_id" ref="base.main_company"/> - <field name="priority">2</field> - <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field eval="[(6, 0, [])]" name="child_ids"/> - <field eval="[(6, 0, [])]" name="parent_ids"/> - <field eval="1" name="active"/> - <field name="name">Unit Testing</field> - <field name="date_deadline">2010-04-24</field> - <field eval="30.0" name="total_hours"/> - <field eval="30.0" name="remaining_hours"/> - <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> - </record> - - <record id="project_task_modulartesting0" model="project.task"> - <field eval="10" name="sequence"/> - <field eval="20.0" name="planned_hours"/> - <field name="user_id" ref="res_users_userdeveloper1"/> - <field name="date_start">2010-02-25 17:35:46</field> - <field name="company_id" ref="base.main_company"/> - <field name="priority">2</field> - <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field eval="[(6, 0, [])]" name="child_ids"/> - <field eval="[(6, 0, [])]" name="parent_ids"/> - <field eval="1" name="active"/> - <field name="name">Modular Testing</field> - <field name="date_deadline">2010-04-24</field> - <field eval="20.0" name="total_hours"/> - <field eval="20.0" name="remaining_hours"/> - <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> - </record> - - <record id="project_task_documentation1" model="project.task"> + <record id="project_task_presentation0" model="project.task"> <field eval="10" name="sequence"/> <field eval="10.0" name="planned_hours"/> <field name="user_id" ref="res_users_demouser1"/> - <field name="date_start">2010-02-25 17:36:27</field> + <field name="state">open</field> + <field name="date_start" eval="(DateTime.now()+timedelta(58-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field name="company_id" ref="base.main_company"/> <field name="priority">2</field> <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> <field eval="[(6, 0, [])]" name="child_ids"/> <field eval="[(6, 0, [])]" name="parent_ids"/> <field eval="1" name="active"/> - <field name="name">Documentation</field> - <field name="date_deadline">2010-04-28</field> + <field name="name">Presentation</field> + <field name="date_deadline" eval="(DateTime.now()+timedelta(65-70)).strftime('%Y-%m-%d %H:%M:%S')"/> <field eval="10.0" name="total_hours"/> <field eval="10.0" name="remaining_hours"/> - <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> - </record> - - <record id="project_task_performancetuning1" model="project.task"> - <field eval="10" name="sequence"/> - <field eval="30.0" name="planned_hours"/> - <field name="user_id" ref="res_users_usertester1"/> - <field name="date_start">2010-02-25 17:37:03</field> - <field name="company_id" ref="base.main_company"/> - <field name="priority">2</field> - <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field eval="[(6, 0, [])]" name="child_ids"/> - <field eval="[(6, 0, [])]" name="parent_ids"/> - <field eval="1" name="active"/> - <field name="name">Performance Tuning</field> - <field name="date_deadline">2010-04-27</field> - <field eval="30.0" name="total_hours"/> - <field eval="30.0" name="remaining_hours"/> - <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> - </record> - - <record id="project_task_modularprogramming1" model="project.task"> - <field eval="10" name="sequence"/> - <field name="date_end">2010-03-12 18:00:00</field> - <field eval="100.0" name="planned_hours"/> - <field name="user_id" ref="res_users_userdeveloper0"/> - <field name="date_start">2010-03-01 12:00:00</field> - <field name="company_id" ref="base.main_company"/> - <field name="priority">2</field> - <field name="project_id" ref="project_project_openerpwebsitedevelopment0"/> - <field eval="[(6, 0, [])]" name="child_ids"/> - <field eval="[(6, 0, [])]" name="parent_ids"/> - <field eval="1" name="active"/> - <field name="name">Modular Programming</field> - <field name="date_deadline">2010-04-22</field> - <field eval="100.0" name="total_hours"/> - <field eval="100.0" name="remaining_hours"/> - <field name="phase_id" ref="project_phase_developmentintegrationandtesting0"/> + <field name="phase_id" ref="project_phase_websitedeployment0"/> </record> </data> diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml index 4170c0064d0..7d51f79530a 100644 --- a/addons/project_long_term/project_long_term_view.xml +++ b/addons/project_long_term/project_long_term_view.xml @@ -8,6 +8,20 @@ # Project Resource Allocation # ------------------------------------------------------ + <record id="view_project_resource_allocation_gantt" model="ir.ui.view"> + <field name="name">project.resource.allocation.gantt</field> + <field name="model">project.resource.allocation</field> + <field name="type">gantt</field> + <field name="arch" type="xml"> + <gantt color="phase_id" date_start="phase_id_date_start" date_stop="phase_id_date_end" string="R.A."> + <level object="project.resource" link="resource_id" domain="[]"> + <field name="useability"/> + </level> + </gantt> + </field> + </record> + + <record id="view_project_resource_allocation_form" model="ir.ui.view"> <field name="name">project.resource.allocation.form</field> <field name="model">project.resource.allocation</field> @@ -58,8 +72,8 @@ <field name="name">Resource Allocations</field> <field name="res_model">project.resource.allocation</field> <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - <field name="context">{'search_default_resource': 1} </field> + <field name="view_mode">gantt,tree,form</field> + <field name="context">{}</field> <!--<field name="search_view_id" ref="view_project_phase_search"/>--> </record> @@ -243,8 +257,9 @@ <field name="res_model">project.phase</field> <field name="view_type">form</field> <field name="view_mode">gantt,tree,form,calendar</field> - <field name="context">{'search_default_responsible_id':uid}</field> + <field name="context">{'search_default_responsible_id':uid}</field> <field name="search_view_id" ref="view_project_phase_search"/> + <field name="help">You can subdivide your larger projects into several phases. For each phase, you can define your resources allocation (humans or engine), describe de differend task and link your phase with previous and next one, add constraints date and scheduling. A gantt view of your project phase is also available from this menu. Gantt view is a graphically draw of the project plan; it includes any task dependencies by visually adjusting task durations and priorities, and by linking tasks to each other.</field> </record> <record id="act_project_phase_list" model="ir.actions.act_window"> diff --git a/addons/project_long_term/test/schedule_phase_tasks.yml b/addons/project_long_term/test/schedule_phase_tasks.yml index 7af72f05824..92286700e6c 100644 --- a/addons/project_long_term/test/schedule_phase_tasks.yml +++ b/addons/project_long_term/test/schedule_phase_tasks.yml @@ -16,7 +16,7 @@ Create phase 'Develop GUI' in Outlook - !record {model: project.phase, id: project_phase_phase0}: - date_start: '2010-06-02 00:00:00' + date_start: '2010-06-02' duration: 200.0 name: phase123 product_uom: product.uom_day @@ -36,7 +36,6 @@ - !record {model: project.task, id: project_task_t0}: name: t1 - occupation_rate: 1.0 planned_hours: 20.0 remaining_hours: 20.0 state: draft @@ -49,7 +48,6 @@ - !record {model: project.task, id: project_task_t1}: name: t2 - occupation_rate: 1.0 planned_hours: 25.0 remaining_hours: 25.0 state: draft @@ -61,7 +59,6 @@ - !record {model: project.task, id: project_task_t2}: name: t3 - occupation_rate: 1.0 planned_hours: 30.0 remaining_hours: 30.0 state: draft @@ -74,7 +71,6 @@ - !record {model: project.task, id: project_task_3}: name: t4 - occupation_rate: 1.0 planned_hours: 25.0 remaining_hours: 25.0 state: draft diff --git a/addons/project_long_term/test/schedule_project_phases.yml b/addons/project_long_term/test/schedule_project_phases.yml index 470f2dc2e48..7f59b476c65 100644 --- a/addons/project_long_term/test/schedule_project_phases.yml +++ b/addons/project_long_term/test/schedule_project_phases.yml @@ -10,7 +10,7 @@ Create a project phase 'Defining Client's Basic Idea of Project' - !record {model: project.phase, id: project_phase_definingclientsbasicideaofproject0}: - date_start: '2010-06-02 00:00:00' + date_start: '2010-06-02' duration: 15.0 name: "Defining Client's Basic Idea of Project" product_uom: product.uom_day @@ -22,7 +22,7 @@ Create project phase 'Establishing Project Feasibility' - !record {model: project.phase, id: project_phase_establishingprojectfeasibility0}: - date_start: '2010-06-02 00:00:00' + date_start: '2010-06-02' duration: 30.0 name: Establishing Project Feasibility product_uom: product.uom_day @@ -33,7 +33,7 @@ Create project phase 'Preparation of Engineering Designs' - !record {model: project.phase, id: project_phase_preparationofengineeringdesigns0}: - date_start: '2010-06-02 00:00:00' + date_start: '2010-06-02' duration: 100.0 name: Preparation of Engineering Designs product_uom: product.uom_hour @@ -45,7 +45,7 @@ Create project phase 'Procurement of Works and Goods' - !record {model: project.phase, id: project_phase_procurementofworksandgoods0}: - date_start: '2010-06-02 00:00:00' + date_start: '2010-06-02' duration: 24.0 name: Procurement of Works and Goods product_uom: product.uom_hour @@ -57,7 +57,7 @@ Create project phase 'Project Construction' - !record {model: project.phase, id: project_phase_projectconstruction0}: - date_start: '2010-06-02 00:00:00' + date_start: '2010-06-02' duration: 4320.0 name: Project Construction product_uom: product.uom_hour @@ -69,7 +69,7 @@ Create project phase 'Project Completion' - !record {model: project.phase, id: project_phase_projectcompletion0}: - date_start: '2010-06-02 00:00:00' + date_start: '2010-06-02' duration: 240.0 name: Project Completion product_uom: product.uom_hour diff --git a/addons/project_long_term/test/schedule_project_tasks.yml b/addons/project_long_term/test/schedule_project_tasks.yml index 40dbd07b3ff..012898b9860 100644 --- a/addons/project_long_term/test/schedule_project_tasks.yml +++ b/addons/project_long_term/test/schedule_project_tasks.yml @@ -17,7 +17,7 @@ Create phase 'Develop GUI' in Thunderbird - !record {model: project.phase, id: project_phase_phase1}: - date_start: '2010-06-02 00:00:00' + date_start: '2010-06-02' duration: 100.0 name: phase22 product_uom: product.uom_day @@ -37,7 +37,6 @@ - !record {model: project.task, id: project_task_t00}: name: t1 - occupation_rate: 1.0 planned_hours: 20.0 remaining_hours: 20.0 state: draft @@ -50,7 +49,6 @@ - !record {model: project.task, id: project_task_t11}: name: t2 - occupation_rate: 1.0 planned_hours: 25.0 remaining_hours: 25.0 state: draft @@ -62,7 +60,6 @@ - !record {model: project.task, id: project_task_t22}: name: t3 - occupation_rate: 1.0 planned_hours: 30.0 remaining_hours: 30.0 state: draft @@ -75,7 +72,6 @@ - !record {model: project.task, id: project_task_t33}: name: t4 - occupation_rate: 1.0 planned_hours: 25.0 remaining_hours: 25.0 state: draft @@ -105,4 +101,4 @@ prj=self.browse(cr, uid, [ref("project_project_project1")])[0] for task in prj.tasks: if (not task.user_id) or (not task.date_start) or (not task.date_end): - raise AssertionError("Project Tasks not scheduled")
\ No newline at end of file + raise AssertionError("Project Tasks not scheduled") diff --git a/addons/project_long_term/wizard/project_compute_phases.py b/addons/project_long_term/wizard/project_compute_phases.py index bc377a5af7d..e13d307aab2 100644 --- a/addons/project_long_term/wizard/project_compute_phases.py +++ b/addons/project_long_term/wizard/project_compute_phases.py @@ -103,20 +103,20 @@ class project_compute_phases(osv.osv_memory): # Recalculate date_start and date_end # according to constraints on date start and date end on phase if phase.constraint_date_start and str(s_date) < phase.constraint_date_start: - start_date = datetime.datetime.strptime(phase.constraint_date_start, '%Y-%m-%d %H:%M:%S') + start_date = datetime.datetime.strptime(phase.constraint_date_start, '%Y-%m-%d') else: start_date = s_date if phase.constraint_date_end and str(e_date) > phase.constraint_date_end: - end_date= datetime.datetime.strptime(phase.constraint_date_end, '%Y-%m-%d %H:%M:%S') - date_start = phase.constraint_date_end[:-3] + end_date= datetime.datetime.strptime(phase.constraint_date_end, '%Y-%m-%d') + date_start = phase.constraint_date_end else: end_date = e_date date_start = end_date # Write the calculated dates back ctx = context.copy() ctx.update({'scheduler': True}) - phase_obj.write(cr, uid, [phase.id], {'date_start': start_date.strftime('%Y-%m-%d %H:%M:%S'), - 'date_end': end_date.strftime('%Y-%m-%d %H:%M:%S')}, + phase_obj.write(cr, uid, [phase.id], {'date_start': start_date.strftime('%Y-%m-%d'), + 'date_end': end_date.strftime('%Y-%m-%d')}, context=ctx) # Recursive call till all the next phases scheduled for phase in phase.next_phase_ids: diff --git a/addons/project_long_term/wizard/project_compute_phases_view.xml b/addons/project_long_term/wizard/project_compute_phases_view.xml index 8a9ce15e772..3895b0cc4c8 100644 --- a/addons/project_long_term/wizard/project_compute_phases_view.xml +++ b/addons/project_long_term/wizard/project_compute_phases_view.xml @@ -37,6 +37,8 @@ <field name="view_id" ref="view_project_compute_phases_select"/> <field name="context">{'record_id': active_id}</field> <field name="target">new</field> + <field name="help">To schedule phases of all or a specified project. It then open a gantt view. + </field> </record> <menuitem id="menu_compute_phase" name="Compute Phase Scheduling" diff --git a/addons/project_long_term/wizard/project_schedule_tasks.py b/addons/project_long_term/wizard/project_schedule_tasks.py index d3c42a983d0..df9f1aae7d4 100644 --- a/addons/project_long_term/wizard/project_schedule_tasks.py +++ b/addons/project_long_term/wizard/project_schedule_tasks.py @@ -92,7 +92,7 @@ class project_schedule_task(osv.osv_memory): if task_ids: task_ids.sort() tasks = task_obj.browse(cr, uid, task_ids, context=context) - start_date = str(phase.date_start)[:-9] + start_date = str(phase.date_start) if not phase.date_start: if not phase.project_id.date_start: start_date = datetime.datetime.now().strftime("%Y-%m-%d") diff --git a/addons/project_long_term/wizard/working_calendar.py b/addons/project_long_term/wizard/working_calendar.py index d52bd54b437..1de7e717502 100644 --- a/addons/project_long_term/wizard/working_calendar.py +++ b/addons/project_long_term/wizard/working_calendar.py @@ -81,7 +81,7 @@ def compute_working_calendar(cr, uid, calendar_id, context=None): """ pool = pooler.get_pool(cr.dbname) - resource_week_obj = pool.get('resource.calendar.week') + resource_attendance_obj = pool.get('resource.calendar.attendance') time_range = "8:00-8:00" non_working = "" week_days = {"0": "mon", "1": "tue", "2": "wed","3": "thu", "4": "fri", "5": "sat", "6": "sun"} @@ -89,8 +89,8 @@ def compute_working_calendar(cr, uid, calendar_id, context=None): wk_time = {} wktime_list = [] wktime_cal = [] - week_ids = resource_week_obj.search(cr, uid, [('calendar_id', '=', calendar_id)], context=context) - weeks = resource_week_obj.read(cr, uid, week_ids, ['dayofweek', 'hour_from', 'hour_to'], context=context) + week_ids = resource_attendance_obj.search(cr, uid, [('calendar_id', '=', calendar_id)], context=context) + weeks = resource_attendance_obj.read(cr, uid, week_ids, ['dayofweek', 'hour_from', 'hour_to'], context=context) # Convert time formats into appropriate format required # and create a list like [('mon', '8:00-12:00'), ('mon', '13:00-18:00')] for week in weeks: |
