summaryrefslogtreecommitdiff
path: root/addons/project_long_term
diff options
context:
space:
mode:
authorHarry (OpenERP) <hmo@tinyerp.com>2011-12-14 17:59:24 +0530
committerHarry (OpenERP) <hmo@tinyerp.com>2011-12-14 17:59:24 +0530
commit092f97b32b35af6a40b9d2ae70c3159da2fb235f (patch)
tree2974d3719af9338cd0b1814da900d7e9ca8d4779 /addons/project_long_term
parent593f5f571bbc49673975afc405e9345ef3457b92 (diff)
parente36dc8c5e3ca3da1474747bae5ec87fea19b23b8 (diff)
[MERGE] merged with trunk-development-branch
bzr revid: hmo@tinyerp.com-20111214122924-izzibrz1yz67rt7g
Diffstat (limited to 'addons/project_long_term')
-rw-r--r--addons/project_long_term/__openerp__.py12
-rw-r--r--addons/project_long_term/i18n/hr.po625
-rw-r--r--addons/project_long_term/project_long_term.py3
-rw-r--r--addons/project_long_term/project_long_term_demo.xml11
-rw-r--r--addons/project_long_term/security/ir.model.access.csv18
-rw-r--r--addons/project_long_term/test/phase_constraint.yml118
-rw-r--r--addons/project_long_term/test/phase_process.yml79
-rw-r--r--addons/project_long_term/test/project_schedule_consecutive_day.yml127
-rw-r--r--addons/project_long_term/test/project_schedule_without_wroking_hour.yml76
-rw-r--r--addons/project_long_term/test/schedule_project_phases.yml180
-rw-r--r--addons/project_long_term/test/schedule_project_tasks.yml86
-rw-r--r--addons/project_long_term/test/task_process.yml19
-rw-r--r--addons/project_long_term/test/test_schedule_phases_case1.yml76
-rw-r--r--addons/project_long_term/test/test_schedule_phases_case2.yml193
-rw-r--r--addons/project_long_term/test/test_schedule_tasks_case1.yml246
15 files changed, 745 insertions, 1124 deletions
diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py
index f4b8ce34ad0..7d33a431f2a 100644
--- a/addons/project_long_term/__openerp__.py
+++ b/addons/project_long_term/__openerp__.py
@@ -20,7 +20,7 @@
##############################################################################
{
- "name": "Long Term Planning",
+ "name": "Long Term Projects",
"version": "1.1",
"author": "OpenERP SA",
"website": "http://www.openerp.com",
@@ -43,14 +43,8 @@ Features
"init_xml": [],
"demo_xml": ["project_long_term_demo.xml"],
"test": [
- 'test/test_schedule_phases_case1.yml',
- 'test/schedule_project_phases.yml',
- 'test/schedule_project_tasks.yml',
- 'test/test_schedule_phases_case2.yml',
- 'test/project_schedule_consecutive_day.yml',
- 'test/project_schedule_without_wroking_hour.yml',
- 'test/phase_constraint.yml',
- 'test/test_schedule_tasks_case1.yml',
+ 'test/phase_process.yml',
+ 'test/task_process.yml',
],
"update_xml": [
"security/ir.model.access.csv",
diff --git a/addons/project_long_term/i18n/hr.po b/addons/project_long_term/i18n/hr.po
new file mode 100644
index 00000000000..434470646c2
--- /dev/null
+++ b/addons/project_long_term/i18n/hr.po
@@ -0,0 +1,625 @@
+# Croatian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-12-12 09:44+0000\n"
+"Last-Translator: Tomislav Bosnjakovic <Unknown>\n"
+"Language-Team: Croatian <hr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-12-13 05:02+0000\n"
+"X-Generator: Launchpad (build 14458)\n"
+
+#. module: project_long_term
+#: model:ir.module.module,shortdesc:project_long_term.module_meta_information
+msgid "Long Term Project Management"
+msgstr "Upravljanje dugotrajnim projektima"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+msgid "Compute Scheduling of Phases"
+msgstr "Izračunaj planiranje faza"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,next_phase_ids:0
+msgid "Next Phases"
+msgstr "Sljedeće faze"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Project's Tasks"
+msgstr "Zadaci projekta"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_project_phases
+msgid "Phases"
+msgstr "Faze"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: view:project.resource.allocation:0
+msgid "Group By..."
+msgstr "Grupiraj po..."
+
+#. module: project_long_term
+#: constraint:project.project:0
+msgid "Error! project start-date must be lower then project end-date."
+msgstr ""
+"Greška! Početni datum projekta mora biti manji od završnog datuma projekta."
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_resouce_allocation
+#: view:project.resource.allocation:0
+msgid "Resources Allocation"
+msgstr "Alokacija resursa"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Displaying settings"
+msgstr "Postavke prikaza"
+
+#. module: project_long_term
+#: field:project.compute.phases,target_project:0
+msgid "Schedule"
+msgstr "Zakaži"
+
+#. module: project_long_term
+#: model:ir.module.module,description:project_long_term.module_meta_information
+msgid ""
+"\n"
+"\n"
+" Long Term Project management module that tracks planning, "
+"scheduling, resources allocation.\n"
+" Mainly used with Big project management.\n"
+" - Project Phases will be maintained by Manager of the project\n"
+" - Compute Phase Scheduling: Compute start date and end date of "
+"the phases which are in draft,open and pending state of the project given.\n"
+" If no project given then all the "
+"draft,open and pending state phases will be taken\n"
+" - Compute Task Scheduling: This works same as the scheduler "
+"button on project.phase. It takes the project as argument and computes all "
+"the open,draft and pending tasks\n"
+" - Schedule Tasks: All the tasks which are in draft,pending and "
+"open state are scheduled with taking the phase's start date\n"
+"\n"
+" "
+msgstr ""
+"\n"
+"\n"
+" Modul upravljanja dugotrajnim projektima prati planiranje, "
+"zakazivanje i alokaciju resursa.\n"
+" Uglavnom se koristi s Upravljanjem velikim projektima.\n"
+" - Faze projekta će održavati voditelj projekta\n"
+" - Izračunaj zakaizivanje faza: Uzračunaj početni datum i završni "
+"datum faza koje su u statusu nacrt,otvoreno i na čekanju za odabrani "
+"projekt.\n"
+" Ako nijeda projekt nije odabran tada "
+"će se uzeti sve faze u statusu nacrt, otvoreno i na čekanju \n"
+" - Izračunaj zakazivanje zadatka: RAdi na isti način kao i gumb "
+"za zakazivanje na fazama projekta. Uzima projekt kao argument i računa sve "
+"zadatke u statusu nacrt, otvoreno i na čekanju.\n"
+" - Zakaži zadatke: Svi azdaci u statusu nacrt, otvoreno i na "
+"čekanju se zakazuju uzimajući početni datum faze.\n"
+"\n"
+" "
+
+#. module: project_long_term
+#: constraint:project.task:0
+msgid "Error ! You cannot create recursive tasks."
+msgstr "Greška! Ne možete kreirati rekurzivne zadatke."
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_resouce_allocation
+msgid "Resource Allocations"
+msgstr "Alokacije resursa"
+
+#. module: project_long_term
+#: constraint:project.project:0
+msgid "Error! You cannot assign escalation to the same project!"
+msgstr "Greška! Ne možete dodjeliti eskalaciju istom projektu!"
+
+#. module: project_long_term
+#: code:addons/project_long_term/project_long_term.py:128
+#, python-format
+msgid "Day"
+msgstr "Dan"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_task
+msgid "Task"
+msgstr "Zadatak"
+
+#. module: project_long_term
+#: selection:project.compute.phases,target_project:0
+msgid "Compute a Single Project"
+msgstr "Izračunaj pojedinačni projekt"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,previous_phase_ids:0
+msgid "Previous Phases"
+msgstr "Prijašnje faze"
+
+#. module: project_long_term
+#: help:project.phase,product_uom:0
+msgid "UoM (Unit of Measure) is the unit of measurement for Duration"
+msgstr "JM (Jedinica mjere) je mjerna jedinica za trajanje"
+
+#. module: project_long_term
+#: help:project.phase,date_end:0
+msgid ""
+" It's computed by the scheduler according to the start date and the duration."
+msgstr " Planer računa prema datumu početka i trajanju."
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_project
+#: field:project.compute.phases,project_id:0
+#: field:project.compute.tasks,project_id:0
+#: view:project.phase:0
+#: field:project.phase,project_id:0
+#: view:project.resource.allocation:0
+#: field:project.resource.allocation,project_id:0
+#: view:project.task:0
+msgid "Project"
+msgstr "Projekt"
+
+#. module: project_long_term
+#: code:addons/project_long_term/wizard/project_compute_phases.py:50
+#, python-format
+msgid "Error!"
+msgstr "Greška!"
+
+#. module: project_long_term
+#: selection:project.phase,state:0
+msgid "Cancelled"
+msgstr "Poništeno"
+
+#. module: project_long_term
+#: help:project.resource.allocation,date_end:0
+msgid "Ending Date"
+msgstr "Završni datum"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Planning"
+msgstr "Planiranje"
+
+#. module: project_long_term
+#: field:project.phase,constraint_date_end:0
+msgid "Deadline"
+msgstr "Krajnji rok"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+#: view:project.compute.tasks:0
+msgid "_Cancel"
+msgstr "_Otkaži"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.action_project_compute_phases
+#: model:ir.ui.menu,name:project_long_term.menu_compute_phase
+msgid "Compute Phase Scheduling"
+msgstr "Izračunaj zakazivanje faze"
+
+#. module: project_long_term
+#: code:addons/project_long_term/project_long_term.py:190
+#, python-format
+msgid " (copy)"
+msgstr " (kopija)"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: view:project.resource.allocation:0
+#: field:project.resource.allocation,useability:0
+msgid "Availability"
+msgstr "Raspoloživost"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,state:0
+msgid "State"
+msgstr "Status"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+#: view:project.compute.tasks:0
+msgid "C_ompute"
+msgstr "I_zračunaj"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+msgid "Compute Scheduling of phases for all or specified project"
+msgstr "Izračunaj zakazivanje faza za sve ili pojedini projekt"
+
+#. module: project_long_term
+#: field:project.phase,product_uom:0
+msgid "Duration UoM"
+msgstr "JM trajanja"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.action_project_compute_tasks
+#: model:ir.ui.menu,name:project_long_term.menu_compute_tasks
+msgid "Compute Task Scheduling"
+msgstr "Izračunaj zakazivanje zadataka"
+
+#. module: project_long_term
+#: field:project.phase,constraint_date_start:0
+msgid "Minimum Start Date"
+msgstr "Minimalni početni datum"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_resource_allocation
+#: view:project.phase:0
+#: view:project.resource.allocation:0
+msgid "Project Resource Allocation"
+msgstr "Alokacija resursa projekta"
+
+#. module: project_long_term
+#: view:project.compute.tasks:0
+msgid "Compute Scheduling of Task"
+msgstr "Izračunaj zakazivanje zadatka"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_project_resource
+#: model:ir.ui.menu,name:project_long_term.menu_pm_resources_project1
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource
+#: view:project.resource.allocation:0
+msgid "Resources"
+msgstr "Resursi"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,help:project_long_term.action_project_compute_phases
+msgid ""
+"To schedule phases of all or a specified project. It then open a gantt "
+"view.\n"
+"\t "
+msgstr ""
+"Za zakazivanje faza svih ili pojedinog projekta. Nakon toga otvara Gantt "
+"pogled.\n"
+"\t "
+
+#. module: project_long_term
+#: help:project.resource.allocation,date_start:0
+msgid "Starting Date"
+msgstr "Početni datum"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.project_phase_task_list
+msgid "Related Tasks"
+msgstr "Vezani zadaci"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Dates"
+msgstr "Datumi"
+
+#. module: project_long_term
+#: help:project.resource.allocation,useability:0
+msgid ""
+"Availability of this resource for this project phase in percentage (=50%)"
+msgstr "Raspoloživost tog resursa za tu fazu projekta u postotku (=50%)"
+
+#. module: project_long_term
+#: help:project.phase,constraint_date_start:0
+msgid "force the phase to start after this date"
+msgstr "prisili početak faze nakon ovog datuma"
+
+#. module: project_long_term
+#: field:project.phase,task_ids:0
+msgid "Project Tasks"
+msgstr "Zadaci projekta"
+
+#. module: project_long_term
+#: field:project.phase,resource_ids:0
+msgid "Project Resources"
+msgstr "Resursi projekta"
+
+#. module: project_long_term
+#: view:project.schedule.tasks:0
+msgid "_Ok"
+msgstr "_U redu"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Schedule and Display info"
+msgstr "Zakaži i prikaži info"
+
+#. module: project_long_term
+#: help:project.phase,date_start:0
+msgid ""
+"It's computed by the scheduler according the project date or the end date of "
+"the previous phase."
+msgstr ""
+"Računa planer prema datumu projekta ili završnom datumu prethodne faze"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Month"
+msgstr "Mjesec"
+
+#. module: project_long_term
+#: constraint:project.phase:0
+msgid "Phase start-date must be lower than phase end-date."
+msgstr "Početni datum faze mora biti manje od završnog datuma faze."
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_schedule_tasks
+msgid "project.schedule.tasks"
+msgstr "project.schedule.tasks"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,help:project_long_term.act_project_phase
+msgid ""
+"A project can be split into the different phases. For each phase, you can "
+"define your resources allocation, describe different tasks and link your "
+"phase to previous and next phases, add date constraints for the automated "
+"scheduling. Use the long term planning in order to planify your available "
+"human resources, convert your phases into a series of tasks when you start "
+"working on the project."
+msgstr ""
+"Projekt je moguće podjeliti u različite faze. Za svaku fazu, možete "
+"definriati alokaciju resursa, opisati različite zadatke i povezati vašu fazu "
+"sa prethodnom i sljedećom fazom, dodati datumska ograničenja za automatsko "
+"zakazivanje. Koristite dugotrajno planiranje za vaše raspoložive ljudske "
+"resurse, pretvorite vaš faze u seriju zadataka nakon početka rada na "
+"projektu."
+
+#. module: project_long_term
+#: field:project.phase,date_start:0
+#: field:project.resource.allocation,date_start:0
+msgid "Start Date"
+msgstr "Početni datum"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Resource Allocation"
+msgstr "Alokacija resursa"
+
+#. module: project_long_term
+#: help:project.phase,constraint_date_end:0
+msgid "force the phase to finish before this date"
+msgstr "prisili završetak faze prije ovog datuma"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "Draft"
+msgstr "Nacrt"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "Pending"
+msgstr "Na čekanju"
+
+#. module: project_long_term
+#: field:project.resource.allocation,name:0
+msgid "unknown"
+msgstr "nepoznato"
+
+#. module: project_long_term
+#: field:project.resource.allocation,user_id:0
+msgid "User"
+msgstr "Korisnik"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Task Detail"
+msgstr "Pojedinosti o zadataku"
+
+#. module: project_long_term
+#: help:project.project,resource_calendar_id:0
+msgid "Timetable working hours to adjust the gantt diagram report"
+msgstr "Raspored radnih sati za prilagođavanje izvještaja Gantt dijagramom"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_compute_tasks
+msgid "Project Compute Tasks"
+msgstr "Izračun zadatka projekta"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Constraints"
+msgstr "Ograničenja"
+
+#. module: project_long_term
+#: help:project.phase,sequence:0
+msgid "Gives the sequence order when displaying a list of phases."
+msgstr "Daje redoslijed sekvence prilikom prikaza popisa faza."
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_project_phase
+#: model:ir.actions.act_window,name:project_long_term.act_project_phase_list
+#: model:ir.ui.menu,name:project_long_term.menu_project_phase
+#: model:ir.ui.menu,name:project_long_term.menu_project_phase_list
+#: view:project.phase:0
+#: field:project.project,phase_ids:0
+msgid "Project Phases"
+msgstr "Faze projekta"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "Done"
+msgstr "Izvršeno"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Cancel"
+msgstr "Odustani"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "In Progress"
+msgstr "U tijeku"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Remaining Hours"
+msgstr "Preostali sati"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,responsible_id:0
+msgid "Responsible"
+msgstr "Odgovoran"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar
+#: field:project.project,resource_calendar_id:0
+msgid "Working Time"
+msgstr "Radno vrijeme"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Current"
+msgstr "Trenutni"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Start Phase"
+msgstr "Početna faza"
+
+#. module: project_long_term
+#: code:addons/project_long_term/wizard/project_compute_phases.py:50
+#, python-format
+msgid "Please Specify Project to be schedule"
+msgstr "Molim navedite projekt za zakazivanje"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,total_hours:0
+msgid "Total Hours"
+msgstr "Ukupni sati"
+
+#. module: project_long_term
+#: view:project.schedule.tasks:0
+msgid "Task Scheduling completed successfully."
+msgstr "Zakazivanje zdataka uspješno završeno"
+
+#. module: project_long_term
+#: view:project.compute.tasks:0
+msgid "Compute Scheduling of Task for specified project."
+msgstr "Izračunaj zakazivanje zadataka za odabrani projekt"
+
+#. module: project_long_term
+#: view:project.resource.allocation:0
+msgid "Phase"
+msgstr "Faza"
+
+#. module: project_long_term
+#: help:project.phase,state:0
+msgid ""
+"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'."
+msgstr ""
+"Ako je faza kreirana u statusu 'Nacrt'.\n"
+" AKo je faza započela, status se mijenja u 'U tijeku'.\n"
+" Ako je potreban pregled faza je u statusu 'Na čekanju'. "
+" \n"
+" Ako je faza završila, status je postavljen na 'Završeno'."
+
+#. module: project_long_term
+#: field:project.phase,date_end:0
+#: field:project.resource.allocation,date_end:0
+msgid "End Date"
+msgstr "Završni Datum"
+
+#. module: project_long_term
+#: view:project.resource.allocation:0
+#: field:project.resource.allocation,resource_id:0
+msgid "Resource"
+msgstr "Resurs"
+
+#. module: project_long_term
+#: field:project.phase,name:0
+msgid "Name"
+msgstr "Naziv"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Tasks Details"
+msgstr "Pojedinosti zadatka"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar
+msgid "Working Period"
+msgstr "Razdoblje rada"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_resource_resource
+msgid "Resource Detail"
+msgstr "Pojedinosti resursa"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_phase_schedule
+msgid "Scheduling"
+msgstr "Zakazivanje"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_phase
+#: view:project.phase:0
+#: field:project.resource.allocation,phase_id:0
+#: view:project.task:0
+#: field:project.task,phase_id:0
+msgid "Project Phase"
+msgstr "Faza projekta"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_compute_phases
+msgid "Project Compute Phases"
+msgstr "Izračun faza projekta"
+
+#. module: project_long_term
+#: field:project.schedule.tasks,msg:0
+msgid "Message"
+msgstr "Poruka"
+
+#. module: project_long_term
+#: constraint:project.phase:0
+msgid "Loops in phases not allowed"
+msgstr "Petlje u fazama nisu dozvoljene"
+
+#. module: project_long_term
+#: field:project.phase,sequence:0
+msgid "Sequence"
+msgstr "Sekvenca"
+
+#. module: project_long_term
+#: selection:project.compute.phases,target_project:0
+msgid "Compute All Projects"
+msgstr "Izračunaj sve projekte"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves
+msgid "Resource Leaves"
+msgstr "Odsustva resursa"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.action_project_schedule_tasks
+#: view:project.phase:0
+#: view:project.schedule.tasks:0
+msgid "Schedule Tasks"
+msgstr "Zakaži zadatke"
+
+#. module: project_long_term
+#: help:project.phase,duration:0
+msgid "By default in days"
+msgstr "Predefinirano u danima"
+
+#. module: project_long_term
+#: field:project.phase,duration:0
+msgid "Duration"
+msgstr "Trajanje"
diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py
index 4ab1722336e..b6647b6de2b 100644
--- a/addons/project_long_term/project_long_term.py
+++ b/addons/project_long_term/project_long_term.py
@@ -72,12 +72,13 @@ class project_phase(osv.osv):
if phase['date_start'] and phase['date_end'] and phase['date_start'] > phase['date_end']:
return False
return True
-
+ #dead code
def _get_default_uom_id(self, cr, uid):
model_data_obj = self.pool.get('ir.model.data')
model_data_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour')
return model_data_obj.read(cr, uid, [model_data_id], ['res_id'])[0]['res_id']
+ #dead code
def _compute_progress(self, cr, uid, ids, field_name, arg, context=None):
res = {}
if not ids:
diff --git a/addons/project_long_term/project_long_term_demo.xml b/addons/project_long_term/project_long_term_demo.xml
index fe3f8c8e510..4cd6d5cdec4 100644
--- a/addons/project_long_term/project_long_term_demo.xml
+++ b/addons/project_long_term/project_long_term_demo.xml
@@ -5,6 +5,10 @@
This Demo data file Human Resources, Phases and Resources,Tasks allocation and also run scheduling of phase and tasks.
-->
+ <record id="project.project_integrate_openerp" model="project.project">
+ <field name="resource_calendar_id" ref="resource.timesheet_group1"/>
+ </record>
+
<!-- Project Phases -->
<record id="project_phase_1" model="project.phase">
@@ -13,6 +17,7 @@
<field name="product_uom" ref="product.uom_day"/>
<field eval="1" name="sequence"/>
<field name="duration">30</field>
+ <field name="constraint_date_start" eval="time.strftime('%Y-%m-01 10:00:00')"></field>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
@@ -37,9 +42,9 @@
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
<function model="project.phase" name="set_open" eval="[ref('project_phase_3')]"/>
-
+
<record id="project_phase_4" model="project.phase">
- <field eval="[(6, 0, [ref('project_phase_2')])]" name="previous_phase_ids"/>
+ <field eval="[(6, 0, [ref('project_phase_3')])]" name="previous_phase_ids"/>
<field name="name">Development and Integration</field>
<field name="product_uom" ref="product.uom_day"/>
<field eval="4" name="sequence"/>
@@ -60,7 +65,7 @@
<field eval="[(6, 0, [ref('project_phase_5')])]" name="previous_phase_ids"/>
<field name="name">Deployement and Training</field>
<field name="product_uom" ref="product.uom_day"/>
- <field eval="5" name="sequence"/>
+ <field eval="6" name="sequence"/>
<field name="duration">10</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
diff --git a/addons/project_long_term/security/ir.model.access.csv b/addons/project_long_term/security/ir.model.access.csv
index 4382d27834e..6ca496f691d 100644
--- a/addons/project_long_term/security/ir.model.access.csv
+++ b/addons/project_long_term/security/ir.model.access.csv
@@ -1,9 +1,9 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_project_phase","project.phase","model_project_phase","project.group_project_user",1,1,1,0
-"access_project_user_allocation","project.user.allocation","model_project_user_allocation","project.group_project_user",1,0,0,0
-"access_project_phase_manager","project.phase manager","model_project_phase","project.group_project_manager",1,1,1,1
-"access_project_user_allocation_manager","project.user.allocation manager","model_project_user_allocation","project.group_project_manager",1,1,1,1
-"access_resource_resource_user","user.user user","resource.model_resource_resource","project.group_project_user",1,0,0,0
-"access_resource_calendar_leaves_user","user.calendar.leaves user","resource.model_resource_calendar_leaves","project.group_project_user",1,1,1,1
-"access_resource_resource_manager","user.user manager","resource.model_resource_resource","project.group_project_manager",1,1,1,1
-"access_project_user_allocation_manager","project.user.allocation.manager","model_project_user_allocation","project.group_project_manager",1,1,1,1
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_project_phase,project.phase,model_project_phase,project.group_project_user,1,1,1,0
+access_project_user_allocation,project.user.allocation,model_project_user_allocation,project.group_project_user,1,0,0,0
+access_project_phase_manager,project.phase manager,model_project_phase,project.group_project_manager,1,1,1,1
+access_project_user_allocation_manager,project.user.allocation manager,model_project_user_allocation,project.group_project_manager,1,1,1,1
+access_resource_resource_user,user.user user,resource.model_resource_resource,project.group_project_user,1,0,0,0
+access_resource_calendar_leaves_user,user.calendar.leaves user,resource.model_resource_calendar_leaves,project.group_project_user,1,1,1,1
+access_resource_resource_manager,user.user manager,resource.model_resource_resource,project.group_project_manager,1,1,1,1
+access_project_user_allocation_manager,project.user.allocation.manager,model_project_user_allocation,project.group_project_manager,1,1,1,1
diff --git a/addons/project_long_term/test/phase_constraint.yml b/addons/project_long_term/test/phase_constraint.yml
deleted file mode 100644
index f4fa09e6e38..00000000000
--- a/addons/project_long_term/test/phase_constraint.yml
+++ /dev/null
@@ -1,118 +0,0 @@
--
- Given that I have a project 'Test Phases'.
--
- !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
- members:
- - base.user_admin
--
- And I create three human ressources to work on this project, an analyst.
--
- !record {model: resource.resource, id: resource_resource_analyst1}:
- calendar_id: resource.timesheet_group1
- name: Analyst
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I define a developer HR.
--
- !record {model: resource.resource, id: resource_resource_develop0}:
- calendar_id: resource.timesheet_group1
- name: Developer
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I define a tester HR.
--
- !record {model: resource.resource, id: resource_resource_tester1}:
- calendar_id: resource.timesheet_group1
- 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.
--
- !record {model: project.phase, id: project_phase_analysisflowforyaml0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 6.0
- name: "Analysis"
- product_uom: product.uom_day
- project_id: project_project_developyamlproject0
- state: draft
-
--
- I update the constrain and the analysis phase to not start before 4 days.
--
- !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.
--
- !record {model: project.phase, id: project_phase_developyaml0}:
- duration: 6.0
- name: Development
- product_uom: product.uom_day
- project_id: project_project_developyamlproject0
- previous_phase_ids:
- - project_phase_analysisflowforyaml0
-
--
- 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})
--
- 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
- 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.
--
- !record {model: project.compute.phases, id: project_compute_phases_0}:
- project_id: project_project_developyamlproject0
- target_project: one
--
- !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.
--
- !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'
-
diff --git a/addons/project_long_term/test/phase_process.yml b/addons/project_long_term/test/phase_process.yml
new file mode 100644
index 00000000000..725c5b2a97d
--- /dev/null
+++ b/addons/project_long_term/test/phase_process.yml
@@ -0,0 +1,79 @@
+-
+ In order to test process of Phases,
+-
+ I create a record to schedule the phase of project.
+-
+ !record {model: project.compute.phases, id: project_compute_phases01}:
+ target_project: 'one'
+ project_id: project.project_integrate_openerp
+-
+ I schedule the phases.
+-
+ !python {model: project.compute.phases}: |
+ self.check_selection(cr, uid, [ref("project_compute_phases01")])
+-
+ I check the starting date and ending date on the phases after scheduling.
+-
+ !python {model: project.project}: |
+ project = self.browse(cr, uid, ref("project.project_integrate_openerp"), context=context)
+ def _convert(date):
+ import time
+ return time.strptime(date, '%Y-%m-%d %H:%M:%S')
+ def _check(phase, _convert, _check): #TOFIX: why need to pass function ?
+ for next_phase in phase.next_phase_ids:
+ assert _convert(next_phase.date_start) >= _convert(phase.date_end), "Phase does not start in proper date."
+ _check(next_phase, _convert, _check)
+ return True
+
+ for phase in project.phase_ids:
+
+ assert phase.date_start, "Start date should be computed."
+ assert phase.date_end, "End date should be computed."
+ if not phase.previous_phase_ids and phase.constraint_date_start:
+ assert _convert(phase.date_start) >= _convert(phase.constraint_date_start), "Phase does not start in proper date."
+ _check(phase, _convert, _check)
+-
+ I open phase.
+-
+ !python {model: project.phase}: |
+ self.set_open(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after opened.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in open state}:
+ - state == "open"
+-
+ I put phase in pending state.
+-
+ !python {model: project.phase}: |
+ self.set_pending(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after put in pending.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in pending state}:
+ - state == "pending"
+-
+ I make Phase in cancel state.
+-
+ !python {model: project.phase}: |
+ self.set_cancel(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after cancelled.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in cancel state}:
+ - state == "cancelled"
+-
+ I put again in draft phase.
+-
+ !python {model: project.phase}: |
+ self.set_draft(cr, uid, [ref("project_phase_1")])
+-
+ I close phase.
+-
+ !python {model: project.phase}: |
+ self.set_done(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after closed.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in done state}:
+ - state == "done"
diff --git a/addons/project_long_term/test/project_schedule_consecutive_day.yml b/addons/project_long_term/test/project_schedule_consecutive_day.yml
deleted file mode 100644
index cffe06a9ff9..00000000000
--- a/addons/project_long_term/test/project_schedule_consecutive_day.yml
+++ /dev/null
@@ -1,127 +0,0 @@
--
- 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')
- members:
- - base.user_admin
-
--
- 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
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day1}:
- name: "Day1"
- hour_from : 09.00
- hour_to : 17.00
- dayofweek : "0"
- calendar_id : resource_calendar_hoursweekstest_P2
-
--
- 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
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day3}:
- name: "Day3"
- hour_from : 09.00
- hour_to : 17.00
- dayofweek : "2"
- calendar_id : resource_calendar_hoursweekstest_P2
-
--
- 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
- hour_to: 17.00
- dayofweek: "3"
- calendar_id: resource_calendar_hoursweekstest_P2
-
--
- 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"
- hour_from: 09.00
- hour_to: 17.00
- dayofweek: "4"
- calendar_id: resource_calendar_hoursweekstest_P2
-
--
- 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
--
- !record {model: project.phase, id: project_project_developyamlproject_2_Phase1}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 5.0
- name: "Analysis Flow for Yaml"
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- state: draft
-
--
- Create project phase 'Develop yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_Phase2}:
- duration: 5.0
- name: Develop Yaml
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_Phase1
-
--
- 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
--
- !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
--
- !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.
--
- !python {model: project.project}: |
- proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0]
- for phase in proj.phase_ids:
- 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
deleted file mode 100644
index 4fe7687425b..00000000000
--- a/addons/project_long_term/test/project_schedule_without_wroking_hour.yml
+++ /dev/null
@@ -1,76 +0,0 @@
--
- 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'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_1}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 6.0
- product_uom: product.uom_day
- name: "Analysis Flow for Yaml"
- project_id: project_project_developyamlproject_2
- state: draft
-
--
- Create project phase 'Develop yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_2}:
- duration: 6.0
- name: "Develop yaml"
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_phase_1
- state: draft
--
- 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
- state: draft
-
--
- 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
- state: draft
--
- 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
--
- !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.
--
- !python {model: project.project}: |
- proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0]
- for phase in proj.phase_ids:
- if (not phase.date_start) or (not phase.date_end):
- raise AssertionError("Phases not scheduled")
-
-
diff --git a/addons/project_long_term/test/schedule_project_phases.yml b/addons/project_long_term/test/schedule_project_phases.yml
deleted file mode 100644
index 550787fe867..00000000000
--- a/addons/project_long_term/test/schedule_project_phases.yml
+++ /dev/null
@@ -1,180 +0,0 @@
--
- 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")
-
-
diff --git a/addons/project_long_term/test/schedule_project_tasks.yml b/addons/project_long_term/test/schedule_project_tasks.yml
deleted file mode 100644
index 17db7ef8038..00000000000
--- a/addons/project_long_term/test/schedule_project_tasks.yml
+++ /dev/null
@@ -1,86 +0,0 @@
--
- Create project 'Develop a thunderbird-openerp synchronization plugin'
--
- !record {model: project.project, id: project_project_project1}:
- name: Develop a thunderbird-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 thunderbird
--
- !record {model: project.phase, id: project_phase_phase1}:
- 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
--
- 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
- remaining_hours: 20.0
- state: draft
- 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'
--
- !record {model: project.task, id: project_task_t11}:
- name: Develop GUI for Modules Configuration
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- 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'
--
- !record {model: project.task, id: project_task_t12}:
- name: Develop GUI for OpenERP Synchronisation
- planned_hours: 30.0
- remaining_hours: 30.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_developer
--
- 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
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_designer
-
--
- 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
--
- !python {model: project.project}: |
- 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/task_process.yml b/addons/project_long_term/test/task_process.yml
new file mode 100644
index 00000000000..64ecef73476
--- /dev/null
+++ b/addons/project_long_term/test/task_process.yml
@@ -0,0 +1,19 @@
+-
+ I create a record to compute the tasks of project.
+-
+ !record {model: project.compute.tasks, id: project_compute_tasks0}:
+ project_id: project.project_integrate_openerp
+-
+ I compute and shedule the tasks.
+-
+ !python {model: project.compute.tasks}: |
+ self.compute_date(cr, uid, [ref("project_compute_tasks0")])
+-
+ 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_integrate_openerp")])[0]
+ for task in prj.tasks:
+ if task.state in ('done','cancelled'):
+ continue
+ assert task.user_id and task.date_start and task.date_end, "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
deleted file mode 100644
index 8b9ff5f3705..00000000000
--- a/addons/project_long_term/test/test_schedule_phases_case1.yml
+++ /dev/null
@@ -1,76 +0,0 @@
--
- In order to test scheduling of project phases, I create two different phases and
- 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')
- balance: 0.0
- credit: 0.0
- currency_id: base.EUR
- debit: 0.0
- effective_hours: 0.0
- members:
- - base.user_admin
-
- planned_hours: 0.0
- progress_rate: 0.0
- quantity: 0.0
- quantity_max: 0.0
- state: open
- type_ids:
- - project.project_tt_specification
- - 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
- previous_phase_ids:
- - project_phase_firstphase0_case1
- product_uom: product.uom_day
- project_id: project_project_project_case1
- state: draft
--
- Now I create a record to compute the phase of project.
--
- !record {model: project.compute.phases, id: project_compute_phases0}:
- target_project: 'one'
- project_id: project_project_project_case1
--
- I schedule the phases.
--
- !python {model: project.compute.phases}: |
- self.check_selection(cr, uid, [ref("project_compute_phases0")])
--
- I check the starting and ending dates of both phases.
--
- !python {model: project.phase}: |
- import datetime
- from dateutil.relativedelta import *
- start = (datetime.date.today()).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[:10] >= start),'Start dates are wrong: %s < %s !' % (first_phase.date_start[:10], 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=4)).strftime('%Y-%m-%d')
- assert second_phase.date_start >= start, 'Dates are wrong on second phase: %s < %s!' % (second_phase.date_start, start)
- assert second_phase.date_end >= end, 'Dates are wrong on second phase %s < %s!' % (second_phase.date_end, end)
-
diff --git a/addons/project_long_term/test/test_schedule_phases_case2.yml b/addons/project_long_term/test/test_schedule_phases_case2.yml
deleted file mode 100644
index 35173a897a3..00000000000
--- a/addons/project_long_term/test/test_schedule_phases_case2.yml
+++ /dev/null
@@ -1,193 +0,0 @@
--
- 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'
- hour_from: 10.0
- hour_to: 16.0
- name: Monday
- - dayofweek: '1'
- hour_from: 10.0
- hour_to: 16.0
- name: Tuesday
- - dayofweek: '2'
- hour_from: 10.0
- hour_to: 16.0
- name: Wednesday
- - dayofweek: '3'
- hour_from: 10.0
- hour_to: 16.0
- name: Thursday
- name: Working Time A
-
--
- Creating 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
--
- !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
--
- !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
--
- !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'
- hour_from: 9.0
- hour_to: 18.0
- name: Friday
- name: Working Time B
--
- Creating 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
- currency_id: base.EUR
- debit: 0.0
- effective_hours: 0.0
- members:
- - base.user_admin
- name: Development and Testing
- planned_hours: 20.0
- progress_rate: 0.0
- quantity: 0.0
- quantity_max: 0.0
- resource_calendar_id: resource_calendar_workingtimea0
- state: open
- tasks:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task 1
- planned_hours: 10.0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task 2
- planned_hours: 10.0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- total_hours: 10.0
- 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
- type_ids:
- - project.project_tt_specification
- - 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 08:00:00'
- duration: 0.0
- name: Initial Phase
- 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
- name: Developing module
- planned_hours: 10.0
- project_id: project_project_project0
- remaining_hours: 10.0
- 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
- name: Testing module
- planned_hours: 10.0
- project_id: project_project_project0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- phase_id: project_phase_phase0
--
- Now I create a record to compute the phase of project.
--
- !record {model: project.compute.phases, id: project_compute_phases0}:
- target_project: 'one'
- project_id: project_project_project0
--
- I schedule the phases.
--
- !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
deleted file mode 100644
index 3bb0ea87c43..00000000000
--- a/addons/project_long_term/test/test_schedule_tasks_case1.yml
+++ /dev/null
@@ -1,246 +0,0 @@
--
- 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
- groups_id:
- - base.group_partner_manager
- - base.group_user
- 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
- groups_id:
- - base.group_partner_manager
- - base.group_user
- login: user2
- name: User 2
- password: user2
--
- I create a Project.
--
- !record {model: project.project, id: project_project_projecta0}:
- balance: 0.0
- credit: 0.0
- currency_id: base.EUR
- debit: 0.0
- effective_hours: 0.0
- name: Project A
- members:
- - res_users_user0
- - res_users_user1
- phase_ids:
- - date_start: '2011-01-06 08:00:00'
- duration: 2.0
- name: Phase A
- product_uom: product.uom_day
- state: draft
- task_ids:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
- planned_hours: 20.0
- progress_rate: 0.0
- quantity: 0.0
- quantity_max: 0.0
- state: open
- tasks:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 14
- 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
- name: Task A
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- 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
- name: Task B
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- 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
- name: Task C
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- 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
- name: Task D
- planned_hours: 5.0
- project_id: project_project_projecta0
- 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 08:00:00'
- duration: 2.0
- name: Phase A
- product_uom: product.uom_day
- project_id: project_project_projecta0
- state: draft
- task_ids:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
--
- Now I create a record to schedule the tasks of project.
--
- !record {model: project.compute.tasks, id: project_compute_tasks0}:
- project_id: project_project_projecta0
--
- I schedule the tasks.
--
- !python {model: project.compute.tasks}: |
- self.compute_date(cr, uid, [ref("project_compute_tasks0")])
--
- I check that whether the tasks now allocated to respected resources or not.
--
- !python {model: project.task}: |
- task_ids = self.search(cr, uid, [('project_id','=',ref('project_project_projecta0'))])
- for task in self.browse(cr, uid, task_ids):
- if (not task.date_start) or (not task.date_end):
- raise AssertionError("Tasks are not scheduled.")