diff options
| author | Fabien Pinckaers <fp@tinyerp.com> | 2011-10-26 01:31:41 +0200 |
|---|---|---|
| committer | Fabien Pinckaers <fp@tinyerp.com> | 2011-10-26 01:31:41 +0200 |
| commit | 0d2ae40a70ba3be3ccf8e439b4ed92a1ec4719d6 (patch) | |
| tree | 9edce01a77687bc4f2c07b218c2bbffea35853cf /addons/project_long_term/test | |
| parent | 68adb9de7e729dd5bb62ca9bc60c584d02ec3563 (diff) | |
[FIX] Complete refactoring of project_long_term, with following changes:
do not use resources but users on phases:
- to be consistent with project members and task responsible
- if the user is linked to a resource, it uses the calendar of the resource (holidays for example)
better YML tests
Complete rewrite of the scheduling mechanism:
- Schedule phases:
- write project.user.allocation based on scheduling
- schedule resources based on members on the project
- new constraint: force some users on a phase
- Schedule tasks:
- set user if no user on task
- set start and end date
some useability improvements
We still have to work on better Gantt view but I think the scheduling is
working correctly now.
bzr revid: fp@tinyerp.com-20111025233141-cgctwe8spxhko2gn
Diffstat (limited to 'addons/project_long_term/test')
9 files changed, 27 insertions, 163 deletions
diff --git a/addons/project_long_term/test/phase_constraint.yml b/addons/project_long_term/test/phase_constraint.yml index ad1a3db095e..f4fa09e6e38 100644 --- a/addons/project_long_term/test/phase_constraint.yml +++ b/addons/project_long_term/test/phase_constraint.yml @@ -5,6 +5,8 @@ name: "Develop Yaml Project Module" date_start: !eval time.strftime('%Y-%m-%d') resource_calendar_id: resource.timesheet_group1 + members: + - base.user_admin - And I create three human ressources to work on this project, an analyst. - @@ -43,7 +45,6 @@ name: "Analysis" product_uom: product.uom_day project_id: project_project_developyamlproject0 - responsible_id: project.res_users_analyst state: draft - diff --git a/addons/project_long_term/test/project_schedule_consecutive_day.yml b/addons/project_long_term/test/project_schedule_consecutive_day.yml index 10cfc7b6b9c..cffe06a9ff9 100644 --- a/addons/project_long_term/test/project_schedule_consecutive_day.yml +++ b/addons/project_long_term/test/project_schedule_consecutive_day.yml @@ -4,6 +4,8 @@ !record {model: project.project, id: project_project_developyamlproject_2}: name: "Develop Yaml Project Module" date_start: !eval time.strftime('%Y-%m-%d') + members: + - base.user_admin - I have set Working Time from Monday to Friday from 9am to 17pm. @@ -107,7 +109,6 @@ !record {model: project.compute.phases, id: project_compute_phases_0}: project_id: project_project_developyamlproject_2 target_project: one - - Schedule project phases using Compute Phase Scheduling - @@ -120,7 +121,7 @@ !python {model: project.project}: | proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0] for phase in proj.phase_ids: - if (not phase.responsible_id) or (not phase.date_start) or (not phase.date_end): - raise AssertionError("Phases not scheduled") - + if (not phase.date_start) or (not phase.date_end): + raise AssertionError("Phases not scheduled") + diff --git a/addons/project_long_term/test/project_schedule_without_wroking_hour.yml b/addons/project_long_term/test/project_schedule_without_wroking_hour.yml index 61a8539585a..4fe7687425b 100644 --- a/addons/project_long_term/test/project_schedule_without_wroking_hour.yml +++ b/addons/project_long_term/test/project_schedule_without_wroking_hour.yml @@ -15,7 +15,6 @@ product_uom: product.uom_day name: "Analysis Flow for Yaml" project_id: project_project_developyamlproject_2 - responsible_id: project.res_users_analyst state: draft - @@ -71,7 +70,7 @@ !python {model: project.project}: | proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0] for phase in proj.phase_ids: - if (not phase.responsible_id) or (not phase.date_start) or (not phase.date_end): + if (not phase.date_start) or (not phase.date_end): raise AssertionError("Phases not scheduled") diff --git a/addons/project_long_term/test/schedule_phase_tasks.yml b/addons/project_long_term/test/schedule_phase_tasks.yml deleted file mode 100644 index be22f778cee..00000000000 --- a/addons/project_long_term/test/schedule_phase_tasks.yml +++ /dev/null @@ -1,90 +0,0 @@ -- - Create project 'Develop an outlook-openerp synchronization plugin' -- - !record {model: project.project, id: project_project_project4}: - name: Develop an outlook-openerp synchronization plugin - members: - - project.res_users_project_manager - - project.res_users_technical_leader - - project.res_users_developer - - project.res_users_designer - - project.res_users_tester - - project.res_users_analyst - - project.res_users_finacial_manager -- - Create phase 'Develop GUI' in Outlook -- - !record {model: project.phase, id: project_phase_phase0}: - date_start: !eval time.strftime("%Y-%m-%d") - duration: 200.0 - name: Develop GUI in Outlook - product_uom: product.uom_day - project_id: project_project_project4 - state: draft - resource_ids: - - resource_id: project_long_term.resource_analyst - - resource_id: project_long_term.resource_developer - - resource_id: project_long_term.resource_designer - - resource_id: project_long_term.resource_tester - - resource_id: project_long_term.resource_project_manager - -- - Create the phase task 'Develop GUI for Server Configuration' -- - !record {model: project.task, id: project_task_t0}: - name: Develop GUI for Server Configuration - planned_hours: 20.0 - remaining_hours: 20.0 - state: draft - phase_id: project_phase_phase0 - project_id: project_project_project4 - - -- - Create the phase task 'Develop GUI for Modules Configuration' -- - !record {model: project.task, id: project_task_t1}: - name: Develop GUI for Modules Configuration - planned_hours: 25.0 - remaining_hours: 25.0 - state: draft - phase_id: project_phase_phase0 - project_id: project_project_project4 - -- - Create the phase task 'Develop GUI for OpenERP Synchronisation' -- - !record {model: project.task, id: project_task_t2}: - name: Develop GUI for OpenERP Synchronisation - planned_hours: 30.0 - remaining_hours: 30.0 - state: draft - phase_id: project_phase_phase0 - project_id: project_project_project4 - -- - Create the phase task 'Design required GUI/Menus' -- - !record {model: project.task, id: project_task_3}: - name: Design required GUI/Menus - planned_hours: 25.0 - remaining_hours: 25.0 - state: draft - phase_id: project_phase_phase0 - project_id: project_project_project4 - -- - Schedule phase tasks -- - !python {model: project.phase}: | - res = self.schedule_tasks(cr, uid, [ref("project_phase_phase0")]) - -- - Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null -- - !python {model: project.phase}: | - phase = self.browse(cr, uid, [ref("project_phase_phase0")])[0] - for task in phase.task_ids: - if (not task.date_start) or (not task.date_end): - raise AssertionError("Phase Tasks not scheduled: %d uid=%r start=%r end=%r" % \ - (task.id, task.user_id, task.date_start, task.date_end)) diff --git a/addons/project_long_term/test/schedule_project_phases.yml b/addons/project_long_term/test/schedule_project_phases.yml index 4bc6549bf35..550787fe867 100644 --- a/addons/project_long_term/test/schedule_project_phases.yml +++ b/addons/project_long_term/test/schedule_project_phases.yml @@ -31,28 +31,6 @@ name: Establishing Project Feasibility product_uom: product.uom_day project_id: project_project_worldbanksproject0 - -- - Resource1 -- - !record {model: project.resource.allocation, id: res_phase1}: - resource_id: project_long_term.resource_project_manager - phase_id: project_phase_definingclientsbasicideaofproject0 - -- - Resource2 -- - !record {model: project.resource.allocation, id: res_phase2}: - resource_id: project_long_term.resource_analyst - phase_id: project_phase_definingclientsbasicideaofproject0 - -- - Resource3 -- - !record {model: project.resource.allocation, id: res_phase3}: - resource_id: project_long_term.resource_technical_leader - phase_id: project_phase_definingclientsbasicideaofproject0 - - Create the phase task 'Develop GUI for Server Configuration' - @@ -85,20 +63,6 @@ project_id: project_project_worldbanksproject0 - - Resource4 -- - !record {model: project.resource.allocation, id: res_phase4}: - resource_id: project_long_term.resource_developer - phase_id: project_phase_preparationofengineeringdesigns0 - -- - Resource5 -- - !record {model: project.resource.allocation, id: res_phase5}: - resource_id: project_long_term.resource_designer - phase_id: project_phase_preparationofengineeringdesigns0 - -- Create the phase task 'Develop GUI for Client Configuration' - !record {model: project.task, id: project_task_t2}: @@ -210,7 +174,7 @@ !python {model: project.project}: | prj=self.browse(cr, uid, [ref("project_project_worldbanksproject0")])[0] for phase in prj.phase_ids: - if (not phase.responsible_id) or (not phase.date_start) or (not phase.date_end): - raise AssertionError("Tasks not scheduled") + if (not phase.date_start) or (not phase.date_end): + raise AssertionError("Tasks not scheduled") diff --git a/addons/project_long_term/test/schedule_project_tasks.yml b/addons/project_long_term/test/schedule_project_tasks.yml index 825b7c404d9..17db7ef8038 100644 --- a/addons/project_long_term/test/schedule_project_tasks.yml +++ b/addons/project_long_term/test/schedule_project_tasks.yml @@ -11,26 +11,17 @@ - project.res_users_tester - project.res_users_analyst - project.res_users_finacial_manager - + - Create phase 'Develop GUI' in thunderbird - !record {model: project.phase, id: project_phase_phase1}: - date_start: !eval time.strftime('%Y-%m-%d') + date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S') duration: 200.0 name: Develop GUI in thunderbird product_uom: product.uom_day project_id: project_project_project1 state: draft - resource_ids: - - resource_id: project_long_term.resource_analyst - useability: 80.0 - - resource_id: project_long_term.resource_developer - useability: 30.0 - - resource_id: project_long_term.resource_designer - useability: 30.0 - - - Create the phase task 'Develop GUI for Server Configuration' - @@ -76,8 +67,7 @@ phase_id: project_phase_phase1 project_id: project_project_project1 user_id: project.res_users_designer - - + - Schedule tasks - @@ -88,7 +78,9 @@ Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null - !python {model: project.project}: | - 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") + prj = self.browse(cr, uid, [ref("project_project_project1")])[0] + for task in prj.tasks: + if task.state in ('done','cancelled'): + continue + if (not task.user_id) or (not task.date_start) or (not task.date_end): + raise AssertionError("Project tasks not scheduled!") diff --git a/addons/project_long_term/test/test_schedule_phases_case1.yml b/addons/project_long_term/test/test_schedule_phases_case1.yml index ba091a29916..ef8d0410439 100644 --- a/addons/project_long_term/test/test_schedule_phases_case1.yml +++ b/addons/project_long_term/test/test_schedule_phases_case1.yml @@ -63,10 +63,12 @@ import datetime from dateutil.relativedelta import * start = (datetime.date.today()).strftime('%Y-%m-%d') - end = (datetime.date.today() + relativedelta(days=2)).strftime('%Y-%m-%d') + end = (datetime.date.today() + relativedelta(days=1)).strftime('%Y-%m-%d 17:00:00') first_phase = self.browse(cr, uid, ref('project_phase_firstphase0_case1')) - assert (first_phase.date_start == start and first_phase.date_end == end),'Dates are wrong!' + assert (first_phase.date_start[:10] == start),'Start dates are wrong: %s != %s !' % (first_phase.date_start, start) + assert (first_phase.date_end >= end),'End dates are wrong: %s <%s!' % (first_phase.date_end, end) + second_phase = self.browse(cr, uid, ref('project_phase_secondphase0_case2')) start = first_phase.date_end end = (datetime.date.today() + relativedelta(days=5)).strftime('%Y-%m-%d') - assert (second_phase.date_start == start and second_phase.date_end == end),'Dates are wrong!' + assert (second_phase.date_start >= start and second_phase.date_end >= end),'Dates are wrong on second phase!' diff --git a/addons/project_long_term/test/test_schedule_phases_case2.yml b/addons/project_long_term/test/test_schedule_phases_case2.yml index 67a7332cf5b..35173a897a3 100644 --- a/addons/project_long_term/test/test_schedule_phases_case2.yml +++ b/addons/project_long_term/test/test_schedule_phases_case2.yml @@ -147,7 +147,7 @@ I create a phase 'Initial Phase' for project 'Development and Testing'. - !record {model: project.phase, id: project_phase_phase0}: - date_start: '2011-01-03' + date_start: '2011-01-03 08:00:00' duration: 0.0 name: Initial Phase product_uom: product.uom_day diff --git a/addons/project_long_term/test/test_schedule_tasks_case1.yml b/addons/project_long_term/test/test_schedule_tasks_case1.yml index d40b61d6b3a..3bb0ea87c43 100644 --- a/addons/project_long_term/test/test_schedule_tasks_case1.yml +++ b/addons/project_long_term/test/test_schedule_tasks_case1.yml @@ -38,7 +38,7 @@ - res_users_user0 - res_users_user1 phase_ids: - - date_start: '2011-01-06' + - date_start: '2011-01-06 08:00:00' duration: 2.0 name: Phase A product_uom: product.uom_day @@ -184,16 +184,11 @@ Now I create one phase for the project. - !record {model: project.phase, id: project_phase_phasea0}: - date_start: '2011-01-06' + date_start: '2011-01-06 08:00:00' duration: 2.0 name: Phase A product_uom: product.uom_day project_id: project_project_projecta0 - resource_ids: - - project_id: project_project_projecta0 - resource_id: resource_resource_user0 - - project_id: project_project_projecta0 - resource_id: resource_resource_user1 state: draft task_ids: - delay_hours: 0.0 |
