diff options
| author | Fabien Pinckaers <fp@tinyerp.com> | 2011-09-24 11:04:07 +0200 |
|---|---|---|
| committer | Fabien Pinckaers <fp@tinyerp.com> | 2011-09-24 11:04:07 +0200 |
| commit | 7b190983da6e314cc5f3510e0829a38fe56b2b91 (patch) | |
| tree | fe2d47df767998880e5e94110c2e76f2510a306c /addons/project_long_term | |
| parent | 68cc4c39488af5e3274b7adb85f9e6ed266bcc8a (diff) | |
| parent | f93536a356d5633a363105ed973a48990f7e8f86 (diff) | |
merge
bzr revid: fp@tinyerp.com-20110924090407-x4e0ptu2am495rpv
Diffstat (limited to 'addons/project_long_term')
9 files changed, 424 insertions, 274 deletions
diff --git a/addons/project_long_term/test/phase_constraint.yml b/addons/project_long_term/test/phase_constraint.yml index ad1a3db095e..ff0f847fefb 100644 --- a/addons/project_long_term/test/phase_constraint.yml +++ b/addons/project_long_term/test/phase_constraint.yml @@ -1,117 +1,252 @@ -- - Given that I have a project 'Test Phases'. -- +- + I have a project 'Develop yaml Project Module'. +- !record {model: project.project, id: project_project_developyamlproject0}: name: "Develop Yaml Project Module" date_start: !eval time.strftime('%Y-%m-%d') - resource_calendar_id: resource.timesheet_group1 -- - And I create three human ressources to work on this project, an analyst. -- +- + I have set Working Time from Monday to Friday from 9am to 17pm. +- + !record {model: resource.calendar, id: resource_calendar_hoursweeks0}: + name: "from Monday to Friday, from 9am to 17pm" + +- + I have set Day1 Working Time for Monday to Friday from 9am to 17pm working hour. +- + !record {model: resource.calendar.attendance, id: resource_calendar_atendanceday1}: + name: "Day1" + hour_from : 09.00 + hour_to : 17.00 + dayofweek : "0" + calendar_id : resource_calendar_hoursweeks0 + +- + I have set Day2 Working Time for Monday to Friday from 9am to 17pm working hour. +- + !record {model: resource.calendar.attendance, id: resource_calendar_atendanceday1}: + name: "Day2" + hour_from : 09.00 + hour_to : 17.00 + dayofweek : "1" + calendar_id : resource_calendar_hoursweeks0 + +- + I have set Day3 Working Time for Monday to Friday from 9am to 17pm working hour. +- + !record {model: resource.calendar.attendance, id: resource_calendar_atendanceday1}: + name: "Day3" + hour_from : 09.00 + hour_to : 17.00 + dayofweek : "2" + calendar_id : resource_calendar_hoursweeks0 + +- + I have set Day4 Working Time for Monday to Friday from 9am to 17pm working hour. +- + !record {model: resource.calendar.attendance, id: resource_calendar_atendanceday1}: + name: "Day4" + hour_from : 09.00 + hour_to : 17.00 + dayofweek : "3" + calendar_id : resource_calendar_hoursweeks0 + +- + I have set Day5 Working Time for Monday to Friday from 9am to 17pm working hour. +- + !record {model: resource.calendar.attendance, id: resource_calendar_atendanceday1}: + name: "Day5" + hour_from : 09.00 + hour_to : 17.00 + dayofweek : "4" + calendar_id : resource_calendar_hoursweeks0 + + +- + Now Set working period to Project 'Develop yaml Project Module'. +- + !python {model: project.project}: | + context.update({'resource_calendar_id': ref("resource_calendar_hoursweeks0")}) + self.write(cr, uid, [ref("project_project_developyamlproject0")], context) + self.schedule_tasks(cr, uid, [ref('project_project_developyamlproject0')], context) + + for project in self.browse(cr, uid, [ref('project_project_developyamlproject0')], context): + start_date = project.date_start + end_date = start_date + context.update({'start_date' : start_date,'end_date' : end_date}) + self.compute_allocation(cr, uid, [ref('project_project_developyamlproject0')], start_date, end_date, context) + self.generate_members(cr, uid, [ref('project_project_developyamlproject0')], context=None) +- + I create 3 consecutive 5-days phases. + For that Creating a Analyst Human resource to analyst Project Yaml. +- !record {model: resource.resource, id: resource_resource_analyst1}: - calendar_id: resource.timesheet_group1 + calendar_id: project_long_term.resource_calendar_hoursweeks0 name: Analyst resource_type: user time_efficiency: 1.0 user_id: base.user_admin -- - I define a developer HR. -- + +- + I create Developer Human resource who develop Yaml. +- !record {model: resource.resource, id: resource_resource_develop0}: - calendar_id: resource.timesheet_group1 + calendar_id: project_long_term.resource_calendar_hoursweeks0 name: Developer resource_type: user time_efficiency: 1.0 user_id: base.user_admin -- - I define a tester HR. -- +- + I create a Tester Human resource for testing Yaml. +- !record {model: resource.resource, id: resource_resource_tester1}: - calendar_id: resource.timesheet_group1 + calendar_id: project_long_term.resource_calendar_hoursweeks0 name: tester resource_type: user time_efficiency: 1.0 user_id: base.user_admin -- - Then I create three phases for my projects; Analysis, Development, Testing. -- - The first phase is 'Analysis' and has a duration of 6 days. -- + +- + I create 3 a project phase and NO one depends on other one. + so,they should start on the same day. + I create First 'Analysis Flow for Yaml' Project Phase. +- !record {model: project.phase, id: project_phase_analysisflowforyaml0}: date_start: !eval time.strftime('%Y-%m-%d') duration: 6.0 - name: "Analysis" + name: "Analysis Flow for Yaml" product_uom: product.uom_day project_id: project_project_developyamlproject0 responsible_id: project.res_users_analyst state: draft -- - I update the constrain and the analysis phase to not start before 4 days. -- +- + I update the Constrain Date Start adn Date End for phase Analysis Flow for Yaml. +- !python {model : project.phase }: | - pass import datetime from dateutil.relativedelta import * - start = datetime.date.today() + relativedelta(days=4) - self.write(cr,uid, [(ref("project_phase_analysisflowforyaml0"))], {'constraint_date_start': start}) -- - The second phase is 'Development' and depend on the 'Analysis', with a duration of 6 days. -- + start = datetime.date.today() - relativedelta(days=2) + end = datetime.date.today() + relativedelta(days=6) + self.write(cr,uid, [(ref("project_phase_analysisflowforyaml0"))], {'constraint_date_start': start, 'constraint_date_end':end}) + +- + I create project phase 'Develop yaml' with constraint date. +- !record {model: project.phase, id: project_phase_developyaml0}: duration: 6.0 - name: Development + name: Develop Yaml product_uom: product.uom_day project_id: project_project_developyamlproject0 + responsible_id: base.user_admin previous_phase_ids: - project_phase_analysisflowforyaml0 -- - I update the Constrain Date Start adn Date End for phase Develop yaml -- +- + I update the Constrain Date Start adn Date End for phase Develop yaml. +- !python {model : project.phase }: | - pass import datetime - #from dateutil.relativedelta import * - #start = datetime.date.today() - relativedelta(days=5) - #end = datetime.date.today() + relativedelta(days=10) - #self.write(cr,uid, [(ref("project_phase_developyaml0"))], {'constraint_date_start': start, 'constraint_date_end':end}) + from dateutil.relativedelta import * + start = datetime.date.today() - relativedelta(days=5) + end = datetime.date.today() + relativedelta(days=10) + self._get_default_uom_id(cr, uid) + self.write(cr,uid, [(ref("project_phase_developyaml0"))], {'constraint_date_start': start, 'constraint_date_end':end}) +- + I create project phase 'Test Yaml'. - - The third phase is 'Testing' and depend on the 'Develop' phase, with a duration of 6 days. -- !record {model: project.phase, id: project_phase_testyaml0}: duration: 6.0 - name: Testing + name: Testing Yaml product_uom: product.uom_day project_id: project_project_developyamlproject0 previous_phase_ids: - project_phase_developyaml0 -- - Then I launch the scheduler to compute starting and ending phases on all phases of this project. -- + constraint_date_start : + constraint_date_end : +- + I compute Schedule of phases For One project. +- !record {model: project.compute.phases, id: project_compute_phases_0}: project_id: project_project_developyamlproject0 target_project: one -- + +- + I schedule project phases using "Compute Phase Scheduling". +- !python {model: project.project}: | self.schedule_phases(cr, uid, [ref("project_project_developyamlproject0")]) + - - After scheduling, I check the starting date and ending date on the phases are correct. + After scheduling,check that. + Phase "Analysis Flow for Yaml" and "Test Yaml" Phase should start on the project start date while "Develop yaml" Phase should respect the constraint. +- + !python {model: project.project}: | + proj=self.browse(cr, uid, [ref("project_project_developyamlproject0")])[0] + for phase in proj.phase_ids: + for phase1 in proj.phase_ids: + if phase1.id != phase.id and phase.constraint_date_start == phase1.date_start: + raise AssertionError("Phases not scheduled") +- + Now, I am Checking constraint start and end for Phase 'Develop Yaml'. - !python {model: project.phase}: | - import datetime - from dateutil.relativedelta import * - minstart = (datetime.date.today() + relativedelta(days=4)).strftime('%Y-%m-%d') - minend = (datetime.date.today() + relativedelta(days=11)).strftime('%Y-%m-%d') - - phase1=self.browse(cr, uid, ref('project_phase_analysisflowforyaml0')) - assert phase1.date_start>=minstart, 'Error, the Analysis phase '+phase1.date_start+' should start after '+str(minstart) - assert phase1.date_end>=minend, 'Error, the Analysis phase should end after '+str(minend) - - phase2=self.browse(cr, uid, ref('project_phase_developyaml0')) - assert phase2.date_start>=phase1.date_end, 'Error, the phase Development should start after the end of the Analysis phase' - - phase3=self.browse(cr, uid, ref('project_phase_testyaml0')) - assert phase3.date_start>=phase2.date_end, 'Error, the phase Testing should start after the end of the Development phase' - assert phase3.date_start<phase3.date_end, 'Error, the phase Testing should start before ending' + self._check_constraint_start(cr, uid, [ref("project_phase_developyaml0")],context) + self._check_constraint_end(cr, uid, [ref("project_phase_developyaml0")],context) +- + I am opening the Phase 'Develop Yaml'. +- + !python {model: project.phase}: | + self.set_open(cr, uid, [ref("project_phase_developyaml0")]) +- + Now, Compute the Total Hours. +- + !python {model: project.phase}: | + field_name = 'test' + arg = {} + self._compute(cr, uid, [ref("project_phase_developyaml0")], field_name, arg, context=None) +- + Now, change the partner if needed. +- + !python {model: project.phase}: | + for project in self.browse(cr, uid, [ref('project_phase_developyaml0')], context): + project_id = project.project_id.id + start_date = project.date_start + end_date = project.date_end + context.update({'start_date' : start_date,'end_date' : end_date}) + self.onchange_project(cr, uid, [ref("project_phase_developyaml0")], project_id,context) +- + Now, Check start date. +- + !python {model: project.phase}: | + phase=self.browse(cr, uid, ref('project_phase_developyaml0'), context=context) + context.update({'project_id': ref('project_project_developyamlproject0')}) + try: + self._check_date_start(cr, uid, phase, context.get('end_date'), context) + except: + pass +- + Now, Check end date. +- + !python {model: project.phase}: | + phase=self.browse(cr, uid, ref('project_phase_developyaml0'), context=context) + context.update({'project_id': ref('project_project_developyamlproject0')}) + try: + self._check_date_end(cr, uid, phase, context.get('start_date'), context) + except: + pass +- + I am Postponding the Phase 'Develop Yaml' So Setting State to Pending. +- + !python {model: project.phase}: | + self.set_pending(cr, uid, [ref("project_phase_developyaml0")]) +- + Now, Done the Phase 'Develop Yaml'. +- + !python {model: project.phase}: | + self.set_done(cr, uid, [ref("project_phase_developyaml0")]) +- + I am Cancelling the Phase 'Develop Yaml'. +- + !python {model: project.phase}: | + self.set_cancel(cr, uid, [ref("project_phase_developyaml0")]) 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..bb2671af1d3 100644 --- a/addons/project_long_term/test/project_schedule_consecutive_day.yml +++ b/addons/project_long_term/test/project_schedule_consecutive_day.yml @@ -1,19 +1,19 @@ -- - Create a project 'Develop yaml Project Module'. -- +- + I create a project 'Develop yaml Project Module'. +- !record {model: project.project, id: project_project_developyamlproject_2}: name: "Develop Yaml Project Module" date_start: !eval time.strftime('%Y-%m-%d') -- +- I have set Working Time from Monday to Friday from 9am to 17pm. -- +- !record {model: resource.calendar, id: resource_calendar_hoursweekstest_P2}: name: "from Monday to Friday, from 9am to 17pm" -- - I have set Day1 Working Time for Monday to Friday from 9am to 17pm working hour -- +- + I have set Day1 Working Time for Monday to Friday from 9am to 17pm working hour. +- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day1}: name: "Day1" hour_from : 09.00 @@ -21,29 +21,29 @@ dayofweek : "0" calendar_id : resource_calendar_hoursweekstest_P2 -- - I have set Day2 Working Time for Monday to Friday from 9am to 17pm working hour -- +- + I have set Day2 Working Time for Monday to Friday from 9am to 17pm working hour. +- !record {model: resource.calendar.attendance, id: rresource_calendar_hoursweekstest_P2day2}: name: "Day2" hour_from : 09.00 hour_to : 17.00 dayofweek : "1" calendar_id : resource_calendar_hoursweekstest_P2 - -- - I have set Day3 Working Time for Monday to Friday from 9am to 17pm working hour -- + +- + I have set Day3 Working Time for Monday to Friday from 9am to 17pm working hour. +- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day3}: name: "Day3" hour_from : 09.00 hour_to : 17.00 - dayofweek : "2" + dayofweek : "2" calendar_id : resource_calendar_hoursweekstest_P2 -- - I have set Day4 Working Time for Monday to Friday from 9am to 17pm working hour -- +- + I have set Day4 Working Time for Monday to Friday from 9am to 17pm working hour. +- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day4}: name: "Day4" hour_from: 09.00 @@ -51,8 +51,8 @@ dayofweek: "3" calendar_id: resource_calendar_hoursweekstest_P2 -- - I have set Day5 Working Time for Monday to Friday from 9am to 17pm working hour +- + I have set Day5 Working Time for Monday to Friday from 9am to 17pm working hour. - !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day5}: name: "Day5" @@ -61,16 +61,16 @@ dayofweek: "4" calendar_id: resource_calendar_hoursweekstest_P2 -- - Now Set working period to Project 'Develop yaml Project Module' -- - !python {model: project.project}: | +- + Now Set working period to Project 'Develop yaml Project Module'. +- + !python {model: project.project}: | self.write(cr, uid, [ref("project_project_developyamlproject_2")], {'resource_calendar_id': ref("resource_calendar_hoursweekstest_P2")}) -- - Create 3 a project phase. - First 'Analysis Flow for Yaml'Project Phase -- +- + I create 3 a project phase. + First 'Analysis Flow for Yaml'Project Phase. +- !record {model: project.phase, id: project_project_developyamlproject_2_Phase1}: date_start: !eval time.strftime('%Y-%m-%d') duration: 5.0 @@ -78,10 +78,10 @@ product_uom: product.uom_day project_id: project_project_developyamlproject_2 state: draft - -- - Create project phase 'Develop yaml' -- + +- + I create project phase 'Develop yaml'. +- !record {model: project.phase, id: project_project_developyamlproject_2_Phase2}: duration: 5.0 name: Develop Yaml @@ -89,31 +89,31 @@ project_id: project_project_developyamlproject_2 previous_phase_ids: - project_project_developyamlproject_2_Phase1 - -- - Create project phase 'Test Yaml' -- + +- + I create project phase 'Test Yaml'. +- !record {model: project.phase, id: project_project_developyamlproject_2_Phase3}: duration: 5.0 name: Testing Yaml product_uom: product.uom_day project_id: project_project_developyamlproject_2 previous_phase_ids: - - project_project_developyamlproject_2_Phase2 - -- - Compute Schedule of phases For One project -- + - project_project_developyamlproject_2_Phase2 + +- + I compute Schedule of phases For One project. +- !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 -- + +- + I schedule project phases using Compute Phase Scheduling. +- !python {model: project.project}: | self.schedule_phases(cr, uid, [ref("project_project_developyamlproject_2")]) - + - After scheduling, Check that phases scheduled, check that either of phase's start_date, end_date not null. - @@ -121,6 +121,17 @@ 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") - + raise AssertionError("Phases not scheduled") +- + I schedule the task. +- + !record {model: project.schedule.tasks, id: project_schedule_tasks_0}: + msg: Task Scheduling Completed Successfully + +- + I compute date and Phase Scheduling. +- + !python {model: project.schedule.tasks}: | + self.default_get(cr, uid, fields_list = {}, context=None) + self.compute_date(cr, uid, context=None) 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..e372d5d2025 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 @@ -1,14 +1,14 @@ - - Create a project 'Develop yaml Implementation Module'. + I create a project 'Develop yaml Implementation Module'. - !record {model: project.project, id: project_project_developyamlproject_2}: name: "Develop Yaml Project Module" date_start: !eval time.strftime('%Y-%m-%d') -- - Create 4 Project phase. - First Project Phase 'Analysis Flow for Yaml' -- +- + I create 4 Project phase. + First Project Phase 'Analysis Flow for Yaml'. +- !record {model: project.phase, id: project_project_developyamlproject_2_phase_1}: date_start: !eval time.strftime('%Y-%m-%d') duration: 6.0 @@ -17,10 +17,10 @@ project_id: project_project_developyamlproject_2 responsible_id: project.res_users_analyst state: draft - -- - Create project phase 'Develop yaml' -- + +- + I create project phase 'Develop yaml'. +- !record {model: project.phase, id: project_project_developyamlproject_2_phase_2}: duration: 6.0 name: "Develop yaml" @@ -29,42 +29,42 @@ previous_phase_ids: - project_project_developyamlproject_2_phase_1 state: draft -- - Create project phase 'Test Yaml' -- +- + I create project phase 'Test Yaml'. +- !record {model: project.phase, id: project_project_developyamlproject_2_phase_3}: duration: 6.0 name: Testing Yaml product_uom: product.uom_day project_id: project_project_developyamlproject_2 previous_phase_ids: - - project_project_developyamlproject_2_phase_2 + - project_project_developyamlproject_2_phase_2 state: draft -- - Create project phase 'Implement Yaml' -- +- + I create project phase 'Implement Yaml'. +- !record {model: project.phase, id: project_project_developyamlproject_2_phase_4}: duration: 6.0 name: Testing Yaml product_uom: product.uom_day project_id: project_project_developyamlproject_2 previous_phase_ids: - - project_project_developyamlproject_2_phase_3 + - project_project_developyamlproject_2_phase_3 state: draft -- - Compute Schedule of phases For One project -- +- + I compute Schedule of phases For One project . +- !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 -- + +- + I schedule project phases using Compute Phase Scheduling. +- !python {model: project.project}: | self.schedule_phases(cr, uid, [ref("project_project_developyamlproject_2")]) - + - After scheduling, Check that phases scheduled, check that either of phase's start_date, end_date not null. - @@ -72,6 +72,4 @@ 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") - - + 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 index be22f778cee..db97351e9cd 100644 --- a/addons/project_long_term/test/schedule_phase_tasks.yml +++ b/addons/project_long_term/test/schedule_phase_tasks.yml @@ -1,6 +1,6 @@ -- - Create project 'Develop an outlook-openerp synchronization plugin' -- +- + I create project 'Develop an outlook-openerp synchronization plugin'. +- !record {model: project.project, id: project_project_project4}: name: Develop an outlook-openerp synchronization plugin members: @@ -11,9 +11,9 @@ - project.res_users_tester - project.res_users_analyst - project.res_users_finacial_manager -- - Create phase 'Develop GUI' in Outlook -- +- + I 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 @@ -27,10 +27,10 @@ - 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' -- + +- + I 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 @@ -39,10 +39,10 @@ phase_id: project_phase_phase0 project_id: project_project_project4 - -- - Create the phase task 'Develop GUI for Modules Configuration' -- + +- + I 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 @@ -51,9 +51,9 @@ phase_id: project_phase_phase0 project_id: project_project_project4 -- - Create the phase task 'Develop GUI for OpenERP Synchronisation' -- +- + I 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 @@ -62,9 +62,9 @@ phase_id: project_phase_phase0 project_id: project_project_project4 -- - Create the phase task 'Design required GUI/Menus' -- +- + I 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 @@ -72,15 +72,15 @@ state: draft phase_id: project_phase_phase0 project_id: project_project_project4 - -- - Schedule phase tasks -- + +- + 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 + I 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] diff --git a/addons/project_long_term/test/schedule_project_phases.yml b/addons/project_long_term/test/schedule_project_phases.yml index 4bc6549bf35..a05ec1c31f8 100644 --- a/addons/project_long_term/test/schedule_project_phases.yml +++ b/addons/project_long_term/test/schedule_project_phases.yml @@ -1,5 +1,5 @@ - - Create a project 'World Bank's Project' + I create a project 'World Bank's Project'. - !record {model: project.project, id: project_project_worldbanksproject0}: name: "World Bank's Project" @@ -13,7 +13,7 @@ - project.res_users_tester - - Create a project phase 'Defining Client's Basic Idea of Project' + I create a project phase 'Defining Client's Basic Idea of Project'. - !record {model: project.phase, id: project_phase_definingclientsbasicideaofproject0}: date_start: !eval time.strftime('%Y-%m-%d') @@ -23,7 +23,7 @@ project_id: project_project_worldbanksproject0 - - Create project phase 'Establishing Project Feasibility' + I create project phase 'Establishing Project Feasibility'. - !record {model: project.phase, id: project_phase_establishingprojectfeasibility0}: date_start: !eval time.strftime('%Y-%m-%d') @@ -38,7 +38,15 @@ !record {model: project.resource.allocation, id: res_phase1}: resource_id: project_long_term.resource_project_manager phase_id: project_phase_definingclientsbasicideaofproject0 - +- + call get_name function. +- + !python {model: project.resource.allocation}: | + arg={} + field_name = { + 'phase_id': ref('project_phase_definingclientsbasicideaofproject0') + } + self.get_name(cr, uid, [ref('res_phase1')], field_name, arg, context=None) - Resource2 - @@ -54,7 +62,7 @@ phase_id: project_phase_definingclientsbasicideaofproject0 - - Create the phase task 'Develop GUI for Server Configuration' + I create the phase task 'Develop GUI for Server Configuration'. - !record {model: project.task, id: project_task_t0}: name: Develop GUI for Server Configuration @@ -64,7 +72,7 @@ project_id: project_project_worldbanksproject0 - - Create the phase task 'Develop GUI for Modules Configuration' + I create the phase task 'Develop GUI for Modules Configuration'. - !record {model: project.task, id: project_task_t1}: name: Develop GUI for Modules Configuration @@ -75,7 +83,7 @@ project_id: project_project_worldbanksproject0 - - Create project phase 'Preparation of Engineering Designs' + I create project phase 'Preparation of Engineering Designs'. - !record {model: project.phase, id: project_phase_preparationofengineeringdesigns0}: date_start: !eval time.strftime('%Y-%m-%d') @@ -99,7 +107,7 @@ phase_id: project_phase_preparationofengineeringdesigns0 - - Create the phase task 'Develop GUI for Client Configuration' + I create the phase task 'Develop GUI for Client Configuration'. - !record {model: project.task, id: project_task_t2}: name: Develop GUI for Server Configuration @@ -110,7 +118,7 @@ project_id: project_project_worldbanksproject0 - - Create the phase task 'Develop GUI for Client Module Configuration' + I create the phase task 'Develop GUI for Client Module Configuration'. - !record {model: project.task, id: project_task_t3}: name: Develop GUI for Modules Configuration @@ -122,7 +130,7 @@ - - Create project phase 'Procurement of Works and Goods' + I create project phase 'Procurement of Works and Goods'. - !record {model: project.phase, id: project_phase_procurementofworksandgoods0}: date_start: !eval time.strftime('%Y-%m-%d') @@ -132,7 +140,7 @@ project_id: project_project_worldbanksproject0 - - Create project phase 'Project Construction' + I create project phase 'Project Construction'. - !record {model: project.phase, id: project_phase_projectconstruction0}: date_start: !eval time.strftime('%Y-%m-%d') @@ -143,7 +151,7 @@ - - Create project phase 'Project Completion' + I create project phase 'Project Completion'. - !record {model: project.phase, id: project_phase_projectcompletion0}: date_start: !eval time.strftime('%Y-%m-%d') @@ -153,7 +161,7 @@ project_id: project_project_worldbanksproject0 - - Set previous phase for phase 'Establishing Project Feasibility' + I set previous phase for phase 'Establishing Project Feasibility'. - !record {model: project.phase, id: project_phase_establishingprojectfeasibility0}: previous_phase_ids: @@ -161,21 +169,21 @@ - - Set previous phase for phase 'Preparation of Engineering Designs' + I set previous phase for phase 'Preparation of Engineering Designs'. - !record {model: project.phase, id: project_phase_preparationofengineeringdesigns0}: previous_phase_ids: - project_phase_establishingprojectfeasibility0 - - Set previous phase for phase 'Procurement of Works and Goods' + I set previous phase for phase 'Procurement of Works and Goods'. - !record {model: project.phase, id: project_phase_procurementofworksandgoods0}: previous_phase_ids: - project_phase_preparationofengineeringdesigns0 - - Set previous phase for phase 'Project Construction' + I set previous phase for phase 'Project Construction'. - !record {model: project.phase, id: project_phase_projectconstruction0}: previous_phase_ids: @@ -183,7 +191,7 @@ - - Set previous phase for phase 'Project Completion' + I set previous phase for phase 'Project Completion'. - !record {model: project.phase, id: project_phase_projectcompletion0}: previous_phase_ids: @@ -191,7 +199,7 @@ - - Get the project to schedule phases + I get the project to schedule phases. - !record {model: project.compute.phases, id: project_compute_phases_0}: project_id: project_project_worldbanksproject0 @@ -199,18 +207,16 @@ - - Schedule project phases + I schedule project phases. - !python {model: project.project}: | self.schedule_phases(cr, uid, ref("project_project_worldbanksproject0")) - - Check if phases scheduled, check that either of phase's start_date, end_date and user_id is not null + I check if phases scheduled, check that either of phase's start_date, end_date and user_id is not null. - !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") - - diff --git a/addons/project_long_term/test/schedule_project_tasks.yml b/addons/project_long_term/test/schedule_project_tasks.yml index 825b7c404d9..e10fde534f8 100644 --- a/addons/project_long_term/test/schedule_project_tasks.yml +++ b/addons/project_long_term/test/schedule_project_tasks.yml @@ -1,6 +1,6 @@ -- - Create project 'Develop a thunderbird-openerp synchronization plugin' -- +- + I create project 'Develop a thunderbird-openerp synchronization plugin'. +- !record {model: project.project, id: project_project_project1}: name: Develop a thunderbird-openerp synchronization plugin members: @@ -11,10 +11,10 @@ - project.res_users_tester - project.res_users_analyst - project.res_users_finacial_manager - -- - Create phase 'Develop GUI' in thunderbird -- + +- + I create phase 'Develop GUI' in thunderbird. +- !record {model: project.phase, id: project_phase_phase1}: date_start: !eval time.strftime('%Y-%m-%d') duration: 200.0 @@ -29,11 +29,11 @@ useability: 30.0 - resource_id: project_long_term.resource_designer useability: 30.0 - - -- - Create the phase task 'Develop GUI for Server Configuration' -- + + +- + I create the phase task 'Develop GUI for Server Configuration'. +- !record {model: project.task, id: project_task_t10}: name: Develop GUI for Server Configuration planned_hours: 20.0 @@ -42,10 +42,10 @@ phase_id: project_phase_phase1 project_id: project_project_project1 user_id: project.res_users_developer - -- - Create the phase task 'Develop GUI for Modules Configuration' -- + +- + I create the phase task 'Develop GUI for Modules Configuration'. +- !record {model: project.task, id: project_task_t11}: name: Develop GUI for Modules Configuration planned_hours: 25.0 @@ -54,9 +54,9 @@ phase_id: project_phase_phase1 project_id: project_project_project1 user_id: project.res_users_developer -- - Create the phase task 'Develop GUI for OpenERP Synchronisation' -- +- + I create the phase task 'Develop GUI for OpenERP Synchronisation'. +- !record {model: project.task, id: project_task_t12}: name: Develop GUI for OpenERP Synchronisation planned_hours: 30.0 @@ -65,9 +65,9 @@ phase_id: project_phase_phase1 project_id: project_project_project1 user_id: project.res_users_developer -- - Create the phase task 'Design required GUI/Menus' -- +- + I create the phase task 'Design required GUI/Menus'. +- !record {model: project.task, id: project_task_13}: name: Design required GUI/Menus planned_hours: 25.0 @@ -76,16 +76,16 @@ phase_id: project_phase_phase1 project_id: project_project_project1 user_id: project.res_users_designer - - -- - Schedule tasks -- + + +- + I schedule tasks. +- !python {model: project.project}: | self.schedule_tasks(cr, uid, ref("project_project_project1")) - - Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null + I 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] 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..cd80318af24 100644 --- a/addons/project_long_term/test/test_schedule_phases_case1.yml +++ b/addons/project_long_term/test/test_schedule_phases_case1.yml @@ -3,7 +3,7 @@ test it with two different dates for scheduling. - I create a project Development and Testing. -- +- !record {model: project.project, id: project_project_project_case1}: name: "Development and Testing" date_start: !eval time.strftime('%Y-%m-%d') @@ -25,18 +25,18 @@ - project.project_tt_development - project.project_tt_testing - project.project_tt_merge -- +- I create first phase of the project. -- +- !record {model: project.phase, id: project_phase_firstphase0_case1}: duration: 2.0 name: First Phase product_uom: product.uom_day project_id: project_project_project_case1 state: draft -- +- I create second phase of the project. -- +- !record {model: project.phase, id: project_phase_secondphase0_case2}: duration: 3.0 name: Second Phase @@ -62,6 +62,7 @@ !python {model: project.phase}: | import datetime from dateutil.relativedelta import * + self.copy(cr, uid, ref('project_phase_firstphase0_case1'), default={}, context=None) start = (datetime.date.today()).strftime('%Y-%m-%d') end = (datetime.date.today() + relativedelta(days=2)).strftime('%Y-%m-%d') first_phase = self.browse(cr, uid, ref('project_phase_firstphase0_case1')) 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..c438607ea56 100644 --- a/addons/project_long_term/test/test_schedule_phases_case2.yml +++ b/addons/project_long_term/test/test_schedule_phases_case2.yml @@ -1,9 +1,9 @@ - - In order to test scheduling of project phases, I create two different + In order to test scheduling of project phases, I create two different working periods and resources. And schedule the phases. -- +- I create first working period 'Working Time A'. -- +- !record {model: resource.calendar, id: resource_calendar_workingtimea0}: attendance_ids: - dayofweek: '0' @@ -24,45 +24,45 @@ name: Thursday name: Working Time A -- - Creating a resource.calendar.attendance record -- +- + I create a resource.calendar.attendance record. +- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_monday0}: calendar_id: resource_calendar_workingtimea0 dayofweek: '0' hour_from: 10.0 hour_to: 16.0 name: Monday -- - Creating a resource.calendar.attendance record -- +- + I create a resource.calendar.attendance record. +- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_tuesday0}: calendar_id: resource_calendar_workingtimea0 dayofweek: '1' hour_from: 10.0 hour_to: 16.0 name: Tuesday -- - Creating a resource.calendar.attendance record -- +- + I create a resource.calendar.attendance record. +- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_wednesday0}: calendar_id: resource_calendar_workingtimea0 dayofweek: '2' hour_from: 10.0 hour_to: 16.0 name: Wednesday -- - Creating a resource.calendar.attendance record -- +- + I create a resource.calendar.attendance record. +- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_thursday0}: calendar_id: resource_calendar_workingtimea0 dayofweek: '3' hour_from: 10.0 hour_to: 16.0 name: Thursday -- +- I create second working period 'Working Time B'. -- +- !record {model: resource.calendar, id: resource_calendar_workingtimeb0}: attendance_ids: - dayofweek: '4' @@ -70,35 +70,35 @@ hour_to: 18.0 name: Friday name: Working Time B -- - Creating a resource.calendar.attendance record -- +- + I create a resource.calendar.attendance record. +- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_friday0}: calendar_id: resource_calendar_workingtimeb0 dayofweek: '4' hour_from: 9.0 hour_to: 18.0 name: Friday -- +- I create first resource say 'Resource X' without assigning working period. -- +- !record {model: resource.resource, id: resource_resource_resourcex0}: name: Resource X resource_type: user time_efficiency: 1.0 user_id: base.user_admin -- +- I create first resource say 'Resource Y' with working period 'Working Time B'. -- +- !record {model: resource.resource, id: resource_resource_resourcey0}: calendar_id: resource_calendar_workingtimeb0 name: Resource Y resource_type: user time_efficiency: 1.0 user_id: base.user_admin -- +- I create a project 'Development and Testing' and assign working period 'Working Time A'. -- +- !record {model: project.project, id: project_project_project0}: balance: 0.0 credit: 0.0 @@ -142,10 +142,10 @@ - project.project_tt_development - project.project_tt_testing - project.project_tt_merge - -- + +- I create a phase 'Initial Phase' for project 'Development and Testing'. -- +- !record {model: project.phase, id: project_phase_phase0}: date_start: '2011-01-03' duration: 0.0 @@ -153,9 +153,9 @@ product_uom: product.uom_day project_id: project_project_project0 state: draft -- +- I create first task 'Developing module' and assign 10h. -- +- !record {model: project.task, id: project_task_task0}: delay_hours: 0.0 effective_hours: 0.0 @@ -166,9 +166,9 @@ state: draft total_hours: 10.0 phase_id: project_phase_phase0 -- +- I create first task 'Testing module' and assign 10h. -- +- !record {model: project.task, id: project_task_task1}: delay_hours: 0.0 effective_hours: 0.0 @@ -190,4 +190,3 @@ - !python {model: project.compute.phases}: | self.check_selection(cr, uid, [ref("project_compute_phases0")]) - 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..f5dd246b56b 100644 --- a/addons/project_long_term/test/test_schedule_tasks_case1.yml +++ b/addons/project_long_term/test/test_schedule_tasks_case1.yml @@ -1,8 +1,8 @@ - In order to test scheduling of tasks, I create four tasks with different sequences and schedule them. -- +- I create first user. -- +- !record {model: res.users, id: res_users_user0}: company_id: base.main_company context_lang: en_US @@ -12,9 +12,9 @@ login: user1 name: User 1 password: user1 -- +- I create second user. -- +- !record {model: res.users, id: res_users_user1}: company_id: base.main_company context_lang: en_US @@ -23,10 +23,10 @@ - base.group_user login: user2 name: User 2 - password: user2 -- + password: user2 +- I create a Project. -- +- !record {model: project.project, id: project_project_projecta0}: balance: 0.0 credit: 0.0 @@ -113,9 +113,9 @@ state: draft total_hours: 5.0 total_hours: 15.0 -- +- I create first task with highest sequence. -- +- !record {model: project.task, id: project_task_taska0}: delay_hours: 0.0 effective_hours: 0.0 @@ -126,9 +126,9 @@ sequence: 14 state: draft total_hours: 5.0 -- +- I create second task. -- +- !record {model: project.task, id: project_task_taskb0}: delay_hours: 0.0 effective_hours: 0.0 @@ -139,9 +139,9 @@ sequence: 13 state: draft total_hours: 5.0 -- +- I create third task. -- +- !record {model: project.task, id: project_task_taskc0}: delay_hours: 0.0 effective_hours: 0.0 @@ -154,7 +154,7 @@ total_hours: 5.0 - I create fourth task with lowest sequence. -- +- !record {model: project.task, id: project_task_taskd0}: delay_hours: 0.0 effective_hours: 0.0 @@ -164,25 +164,25 @@ remaining_hours: 5.0 state: draft total_hours: 5.0 -- +- Now I create a resource for first user. -- +- !record {model: resource.resource, id: resource_resource_user0}: name: User 1 resource_type: user time_efficiency: 1.0 user_id: res_users_user0 -- +- I create a resource for second user. -- +- !record {model: resource.resource, id: resource_resource_user1}: name: User 2 resource_type: user time_efficiency: 1.0 user_id: res_users_user1 -- +- Now I create one phase for the project. -- +- !record {model: project.phase, id: project_phase_phasea0}: date_start: '2011-01-06' duration: 2.0 |
