Files
odoo_source/addons/project_long_term/test/schedule_project_phases.yml
T
Fabien Pinckaers 0d2ae40a70 [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
2011-10-26 01:31:41 +02:00

181 lines
5.5 KiB
YAML

-
Create a project 'World Bank's Project'
-
!record {model: project.project, id: project_project_worldbanksproject0}:
name: "World Bank's Project"
priority: 4
members:
- project.res_users_analyst
- project.res_users_project_manager
- project.res_users_technical_leader
- project.res_users_developer
- project.res_users_designer
- project.res_users_tester
-
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')
duration: 15.0
name: "Defining Client's Basic Idea of Project"
product_uom: product.uom_day
project_id: project_project_worldbanksproject0
-
Create project phase 'Establishing Project Feasibility'
-
!record {model: project.phase, id: project_phase_establishingprojectfeasibility0}:
date_start: !eval time.strftime('%Y-%m-%d')
duration: 30.0
name: Establishing Project Feasibility
product_uom: product.uom_day
project_id: project_project_worldbanksproject0
-
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
state: draft
phase_id: project_phase_definingclientsbasicideaofproject0
project_id: project_project_worldbanksproject0
-
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_definingclientsbasicideaofproject0
project_id: project_project_worldbanksproject0
-
Create project phase 'Preparation of Engineering Designs'
-
!record {model: project.phase, id: project_phase_preparationofengineeringdesigns0}:
date_start: !eval time.strftime('%Y-%m-%d')
duration: 100.0
name: Preparation of Engineering Designs
product_uom: product.uom_hour
project_id: project_project_worldbanksproject0
-
Create the phase task 'Develop GUI for Client Configuration'
-
!record {model: project.task, id: project_task_t2}:
name: Develop GUI for Server Configuration
planned_hours: 20.0
remaining_hours: 20.0
state: draft
phase_id: project_phase_preparationofengineeringdesigns0
project_id: project_project_worldbanksproject0
-
Create the phase task 'Develop GUI for Client Module Configuration'
-
!record {model: project.task, id: project_task_t3}:
name: Develop GUI for Modules Configuration
planned_hours: 25.0
remaining_hours: 25.0
state: draft
phase_id: project_phase_preparationofengineeringdesigns0
project_id: project_project_worldbanksproject0
-
Create project phase 'Procurement of Works and Goods'
-
!record {model: project.phase, id: project_phase_procurementofworksandgoods0}:
date_start: !eval time.strftime('%Y-%m-%d')
duration: 24.0
name: Procurement of Works and Goods
product_uom: product.uom_hour
project_id: project_project_worldbanksproject0
-
Create project phase 'Project Construction'
-
!record {model: project.phase, id: project_phase_projectconstruction0}:
date_start: !eval time.strftime('%Y-%m-%d')
duration: 4320.0
name: Project Construction
product_uom: product.uom_hour
project_id: project_project_worldbanksproject0
-
Create project phase 'Project Completion'
-
!record {model: project.phase, id: project_phase_projectcompletion0}:
date_start: !eval time.strftime('%Y-%m-%d')
duration: 240.0
name: Project Completion
product_uom: product.uom_hour
project_id: project_project_worldbanksproject0
-
Set previous phase for phase 'Establishing Project Feasibility'
-
!record {model: project.phase, id: project_phase_establishingprojectfeasibility0}:
previous_phase_ids:
- project_phase_definingclientsbasicideaofproject0
-
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'
-
!record {model: project.phase, id: project_phase_procurementofworksandgoods0}:
previous_phase_ids:
- project_phase_preparationofengineeringdesigns0
-
Set previous phase for phase 'Project Construction'
-
!record {model: project.phase, id: project_phase_projectconstruction0}:
previous_phase_ids:
- project_phase_procurementofworksandgoods0
-
Set previous phase for phase 'Project Completion'
-
!record {model: project.phase, id: project_phase_projectcompletion0}:
previous_phase_ids:
- project_phase_projectconstruction0
-
Get the project to schedule phases
-
!record {model: project.compute.phases, id: project_compute_phases_0}:
project_id: project_project_worldbanksproject0
target_project: one
-
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
-
!python {model: project.project}: |
prj=self.browse(cr, uid, [ref("project_project_worldbanksproject0")])[0]
for phase in prj.phase_ids:
if (not phase.date_start) or (not phase.date_end):
raise AssertionError("Tasks not scheduled")