diff options
| author | jam-openerp <jam@tinyerp.com> | 2011-01-18 14:27:49 +0530 |
|---|---|---|
| committer | jam-openerp <jam@tinyerp.com> | 2011-01-18 14:27:49 +0530 |
| commit | f8ab2f7eaaf4e114f68e862b6c7b7ea0562680c4 (patch) | |
| tree | fddc636069c20e305ff6ab31a14e1c6c61d4f409 /addons/project_long_term | |
| parent | 5f2aad96814299276604d134f1226e46f10981cc (diff) | |
| parent | bb42baf3b2f3dc9da0934aea23200a9eaf53b373 (diff) | |
[MERGE]with lp:~openerp-dev/openobject-addons/trunk-dev-addons1
bzr revid: jam@tinyerp.com-20110118085749-hk6e4iz7c1ab16n3
Diffstat (limited to 'addons/project_long_term')
23 files changed, 3553 insertions, 1037 deletions
diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py index 0d03b5f7315..3a8b1a3fb9b 100644 --- a/addons/project_long_term/__openerp__.py +++ b/addons/project_long_term/__openerp__.py @@ -40,9 +40,15 @@ 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/schedule_phase_tasks.yml' + 'test/test_schedule_phases_case2.yml', + 'test/project_schedule_consecutive_day.yml', + 'test/project_schedule_without_wroking_hour.yml', + 'test/schedule_phase_tasks.yml', + 'test/phase_constraint.yml', + 'test/test_schedule_tasks_case1.yml', ], "update_xml": [ "security/ir.model.access.csv", @@ -54,7 +60,7 @@ Features. ], 'installable': True, 'active': False, - 'certificate': None, + 'certificate': '001227470751077315069', } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project_long_term/i18n/de.po b/addons/project_long_term/i18n/de.po index 9c4a72f7a7c..50811dd7ddd 100644 --- a/addons/project_long_term/i18n/de.po +++ b/addons/project_long_term/i18n/de.po @@ -6,16 +6,16 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2010-12-21 19:44+0000\n" -"PO-Revision-Date: 2010-12-31 14:22+0000\n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2011-01-12 18:37+0000\n" "Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-" "consulting.net>\n" "Language-Team: German <de@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-01-01 05:05+0000\n" -"X-Generator: Launchpad (build Unknown)\n" +"X-Launchpad-Export-Date: 2011-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" #. module: project_long_term #: model:ir.module.module,shortdesc:project_long_term.module_meta_information @@ -60,6 +60,11 @@ msgid "Resources Allocation" msgstr "Ressourcenaufteilung" #. module: project_long_term +#: view:project.phase:0 +msgid "Displaying settings" +msgstr "Anzeigekonfiguration" + +#. module: project_long_term #: field:project.compute.phases,target_project:0 msgid "Schedule" msgstr "Zeitplanung" @@ -125,7 +130,7 @@ msgid "Error! You cannot assign escalation to the same project!" msgstr "Fehler ! Sie können keine Eskalation in dasselbe Projekt vornehmen!" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:133 #, python-format msgid "Day" msgstr "Tag" @@ -152,6 +157,14 @@ msgid "UoM (Unit of Measure) is the unit of measurement for Duration" msgstr "ME (Mengeneinheit) entspr. Einheit für die Dauer" #. 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 "" +" Wird berechnet durch einen Planungsassistenten in Abhängigkeit von Beginn " +"und Dauer." + +#. 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 @@ -164,7 +177,7 @@ msgid "Project" msgstr "Projekt" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Error!" msgstr "Fehler!" @@ -175,23 +188,11 @@ msgid "Cancelled" msgstr "Abgebrochen" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Project '%s'." -msgstr "Keine Aufgaben zur Berechnung für Projekt '%s'." - -#. module: project_long_term #: help:project.resource.allocation,date_end:0 msgid "Ending Date" msgstr "Ende Datum" #. 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 "Ende Datum d. Phase" - -#. module: project_long_term #: view:project.phase:0 msgid "Planning" msgstr "Planung" @@ -214,12 +215,13 @@ msgid "Compute Phase Scheduling" msgstr "Berechne Terminierung der Phasen" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:195 #, python-format msgid " (copy)" msgstr " (Kopie)" #. module: project_long_term +#: view:project.phase:0 #: view:project.resource.allocation:0 #: field:project.resource.allocation,useability:0 msgid "Availability" @@ -333,6 +335,20 @@ msgstr "OK" #. module: project_long_term #: view:project.phase:0 +msgid "Schedule and Display info" +msgstr "Info Planungsassistent und Anzeige" + +#. 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 "" +"Wird berechnet durch einen Planungsassistenten in Abhängigkeit vom " +"Projektdatum oder dem Ende Datum der vorherigen Projektphase." + +#. module: project_long_term +#: view:project.phase:0 msgid "Month" msgstr "Monat" @@ -344,7 +360,26 @@ msgstr "Start Datum der Phase muss vor dem Ende Datum sein." #. 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 "" +"Ein Projekt kann in verschiedene Phasen aufgeteilt werden. Für jede Phase " +"können Sie zur automatischen Terminierung die Ressourcenaufteilung " +"definieren, Aufgaben beschreiben und die Phase sowohl mit vorhergehenden als " +"auch nachfolgenden Phasen verknüpfen oder Bedingungen für feste Termine " +"hinterlegen. Benutzen Sie das Modul Planung für Langzeitprojekte zur " +"langfristigen Planung und Aufteilung verfügbarer Personalressourcen. " +"Konvertieren Sie die Phasen in konkrete Aufgabenlisten, wenn Sie die " +"Bearbeitung der Phasen eröffnen." #. module: project_long_term #: field:project.phase,date_start:0 @@ -369,25 +404,6 @@ msgid "Draft" msgstr "Entwurf" #. 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 ones, 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 it." -msgstr "" -"Ein Projekt kann in verschiedene Phasen aufgeteilt werden. Für jede Phase " -"können Sie zur automatischen Terminierung die Ressourcenaufteilung " -"definieren, Aufgaben beschreiben und die Phase sowohl mit vorhergehenden als " -"auch nachfolgenden Phasen verknüpfen oder Bedingungen für feste Termine " -"hinterlegen. Benutzen Sie das Modul Planung für Langzeitprojekte zur " -"langfristigen Planung und Aufteilung verfügbarer Personalressourcen. " -"Konvertieren Sie die Phasen in konkrete Aufgabenlisten, wenn Sie die " -"Bearbeitung der Phasen eröffnen." - -#. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "Pending" @@ -419,31 +435,6 @@ msgid "Project Compute Tasks" msgstr "Berechnung Aufgaben f. Projekt" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No responsible person assigned !" -msgstr "Keinen Verantwortlichen zugewiesen!" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Error" -msgstr "Fehler" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "You must assign a responsible person for phase '%s' !" -msgstr "Sie müssen einen Verantwortlichen für die Phase zuweisen '%s' !" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Should have Resources Allocation or Project Members!" -msgstr "" -"Es sollte eine Ressourcenaufteilung oder Projektmitarbeiter existieren!" - -#. module: project_long_term #: view:project.phase:0 msgid "Constraints" msgstr "Bedingungen" @@ -487,11 +478,6 @@ msgstr "Verbleib. Stunden" #. module: project_long_term #: view:project.phase:0 -msgid "Other Info" -msgstr "Weitere Info" - -#. module: project_long_term -#: view:project.phase:0 #: field:project.phase,responsible_id:0 msgid "Responsible" msgstr "Verantwortlicher" @@ -512,7 +498,7 @@ msgid "Start Phase" msgstr "Start der Phase" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Please Specify Project to be schedule" msgstr "" @@ -540,14 +526,6 @@ msgid "Phase" msgstr "Phase" #. module: project_long_term -#: help:project.phase,date_start:0 -msgid "" -"It's computed according to the phases order : the start date of the 1st " -"phase is set by you while the other start dates depend on the end date of " -"their previous phases" -msgstr "Beginn der Phase" - -#. module: project_long_term #: help:project.phase,state:0 msgid "" "If the phase is created the state 'Draft'.\n" @@ -580,6 +558,11 @@ msgid "Name" msgstr "Bezeichnung" #. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "Aufgabendetails" + +#. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar msgid "Working Period" msgstr "Arbeitszeitmodell" @@ -591,17 +574,10 @@ msgstr "Ressource Detail" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_phase_schedule -#: view:project.phase:0 msgid "Scheduling" msgstr "Terminierung" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Phase '%s'." -msgstr "Keine Aufgaben zur Berechnung für Phase: '%s'." - -#. 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 @@ -673,6 +649,9 @@ msgstr "Dauer" #~ "Usability of this resource for this project phase in percentage (=50%)" #~ msgstr "Verfügbarkeit der Ressource für diese Projektphase in Prozent (=50%)" +#~ msgid "Ending Date of the phase" +#~ msgstr "Ende Datum d. Phase" + #~ msgid "This wizard will schedule phases for all or specified project" #~ msgstr "Der Assistent kalkuliert die Phasen für alle oder ein spez. Projekt" @@ -698,6 +677,18 @@ msgstr "Dauer" #~ msgid "Compute" #~ msgstr "Berechne" +#, python-format +#~ msgid "No responsible person assigned !" +#~ msgstr "Keinen Verantwortlichen zugewiesen!" + +#, python-format +#~ msgid "Error" +#~ msgstr "Fehler" + +#, python-format +#~ msgid "You must assign a responsible person for phase '%s' !" +#~ msgstr "Sie müssen einen Verantwortlichen für die Phase zuweisen '%s' !" + #~ msgid "" #~ "The Object name must start with x_ and not contain any special character !" #~ msgstr "" @@ -708,11 +699,65 @@ msgstr "Dauer" #~ msgid "Phase must have resources assigned !" #~ msgstr "Phase muss zugewiesene Ressource haben!" +#~ msgid "Other Info" +#~ msgstr "Weitere Info" + +#~ msgid "Starting Date of the phase" +#~ msgstr "Beginn der Phase" + #~ msgid "The certificate ID of the module must be unique !" #~ msgstr "Die Zertifikat ID des Moduls sollte eindeutig sein !" +#, python-format +#~ msgid "No tasks to compute for Project '%s'." +#~ msgstr "Keine Aufgaben zur Berechnung für Projekt '%s'." + +#~ 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 ones, 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 it." +#~ msgstr "" +#~ "Ein Projekt kann in verschiedene Phasen aufgeteilt werden. Für jede Phase " +#~ "können Sie zur automatischen Terminierung die Ressourcenaufteilung " +#~ "definieren, Aufgaben beschreiben und die Phase sowohl mit vorhergehenden als " +#~ "auch nachfolgenden Phasen verknüpfen oder Bedingungen für feste Termine " +#~ "hinterlegen. Benutzen Sie das Modul Planung für Langzeitprojekte zur " +#~ "langfristigen Planung und Aufteilung verfügbarer Personalressourcen. " +#~ "Konvertieren Sie die Phasen in konkrete Aufgabenlisten, wenn Sie die " +#~ "Bearbeitung der Phasen eröffnen." + #~ msgid "The name of the module must be unique !" #~ msgstr "Die Modulbezeichnung sollte eindeutig sein !" +#, python-format +#~ msgid "No tasks to compute for Phase '%s'." +#~ msgstr "Keine Aufgaben zur Berechnung für Phase: '%s'." + +#, python-format +#~ msgid "Should have Resources Allocation or Project Members!" +#~ msgstr "" +#~ "Es sollte eine Ressourcenaufteilung oder Projektmitarbeiter existieren!" + #~ msgid "Size of the field can never be less than 1 !" #~ msgstr "Die Größe des Feldes sollte niemals kleiner als 1 sein !" + +#~ msgid "" +#~ "It's computed by the scheduler according to the start date and the duration." +#~ msgstr "Ende Datum d. Phase" + +#~ msgid "" +#~ "It's computed according to the phases order : the start date of the 1st " +#~ "phase is set by you while the other start dates depend on the end date of " +#~ "their previous phases" +#~ msgstr "Beginn der Phase" + +#, python-format +#~ msgid "" +#~ "Resources should be allocated to your phases and Members should be assigned " +#~ "to your Project!" +#~ msgstr "" +#~ "Ressourcen sollten auf Ihre Projektphasen verteilt werden, " +#~ "Projektmitarbeiter sollten auf Ihre Projekte verteilt werden." diff --git a/addons/project_long_term/i18n/es.po b/addons/project_long_term/i18n/es.po index 97294142262..3fc6e3c7c06 100644 --- a/addons/project_long_term/i18n/es.po +++ b/addons/project_long_term/i18n/es.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-12-21 19:44+0000\n" -"PO-Revision-Date: 2010-12-31 10:23+0000\n" -"Last-Translator: Borja López Soilán <borjalopezsoilan@gmail.com>\n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2011-01-12 15:13+0000\n" +"Last-Translator: Carlos-smile <Unknown>\n" "Language-Team: Spanish <es@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-01-01 05:05+0000\n" -"X-Generator: Launchpad (build Unknown)\n" +"X-Launchpad-Export-Date: 2011-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" #. module: project_long_term #: model:ir.module.module,shortdesc:project_long_term.module_meta_information @@ -62,6 +62,11 @@ msgid "Resources Allocation" msgstr "Asignación de recursos" #. module: project_long_term +#: view:project.phase:0 +msgid "Displaying settings" +msgstr "" + +#. module: project_long_term #: field:project.compute.phases,target_project:0 msgid "Schedule" msgstr "Programa" @@ -105,7 +110,7 @@ msgid "Error! You cannot assign escalation to the same project!" msgstr "¡Error! No puede asignar un escalado al mismo proyecto." #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:133 #, python-format msgid "Day" msgstr "Día" @@ -132,6 +137,14 @@ msgid "UoM (Unit of Measure) is the unit of measurement for Duration" msgstr "UdM (Unidad de Medida) es la unidad de medida para la duración" #. 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 "" +" Es calculado por el planificador en fucnión de la fecha de inicio y la " +"duración" + +#. 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 @@ -144,7 +157,7 @@ msgid "Project" msgstr "Proyecto" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Error!" msgstr "¡Error!" @@ -155,23 +168,11 @@ msgid "Cancelled" msgstr "Cancelado" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Project '%s'." -msgstr "" - -#. module: project_long_term #: help:project.resource.allocation,date_end:0 msgid "Ending Date" msgstr "Fecha de fin" #. 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 "" - -#. module: project_long_term #: view:project.phase:0 msgid "Planning" msgstr "Planificación" @@ -194,12 +195,13 @@ msgid "Compute Phase Scheduling" msgstr "Calcular planificación de fases" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:195 #, python-format msgid " (copy)" msgstr " (copia)" #. module: project_long_term +#: view:project.phase:0 #: view:project.resource.allocation:0 #: field:project.resource.allocation,useability:0 msgid "Availability" @@ -287,11 +289,13 @@ msgstr "Fechas" msgid "" "Availability of this resource for this project phase in percentage (=50%)" msgstr "" +"La disponibilidad de este recurso para esta fase de proyecto en porcentaje " +"(=50%)" #. module: project_long_term #: help:project.phase,constraint_date_start:0 msgid "force the phase to start after this date" -msgstr "" +msgstr "Forzar que la fase epiece después de esta fecha" #. module: project_long_term #: field:project.phase,task_ids:0 @@ -310,13 +314,27 @@ msgstr "_Aceptar" #. module: project_long_term #: view:project.phase:0 +msgid "Schedule and Display info" +msgstr "Planificar y mostrar información" + +#. 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 "" +"Es calculado por el planificador en función de la fecha inicio o fecha fin " +"de la fase anterior" + +#. module: project_long_term +#: view:project.phase:0 msgid "Month" msgstr "Mes" #. module: project_long_term #: constraint:project.phase:0 msgid "Phase start-date must be lower than phase end-date." -msgstr "" +msgstr "La fecha-inicio de la fase debe ser anterior a la fecha-fin." #. module: project_long_term #: model:ir.model,name:project_long_term.model_project_schedule_tasks @@ -324,6 +342,17 @@ msgid "project.schedule.tasks" msgstr "" #. 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 "" + +#. module: project_long_term #: field:project.phase,date_start:0 #: field:project.resource.allocation,date_start:0 msgid "Start Date" @@ -337,7 +366,7 @@ msgstr "Asignación de recursos" #. module: project_long_term #: help:project.phase,constraint_date_end:0 msgid "force the phase to finish before this date" -msgstr "" +msgstr "Forzar que la fase termine antes de esta fecha" #. module: project_long_term #: view:project.phase:0 @@ -346,17 +375,6 @@ msgid "Draft" msgstr "Borrador" #. 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 ones, 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 it." -msgstr "" - -#. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "Pending" @@ -380,36 +398,12 @@ msgstr "Detalles tarea" #. module: project_long_term #: help:project.project,resource_calendar_id:0 msgid "Timetable working hours to adjust the gantt diagram report" -msgstr "" +msgstr "Horario de trabajo para ajustar el informe del diagrama de Gantt" #. module: project_long_term #: model:ir.model,name:project_long_term.model_project_compute_tasks msgid "Project Compute Tasks" -msgstr "" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No responsible person assigned !" -msgstr "" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Error" -msgstr "Error" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "You must assign a responsible person for phase '%s' !" -msgstr "" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Should have Resources Allocation or Project Members!" -msgstr "" +msgstr "Calcular tareas proyecto" #. module: project_long_term #: view:project.phase:0 @@ -419,7 +413,7 @@ msgstr "Restricciones" #. module: project_long_term #: help:project.phase,sequence:0 msgid "Gives the sequence order when displaying a list of phases." -msgstr "" +msgstr "Indica el orden cuando se muestra la lista de fases" #. module: project_long_term #: model:ir.actions.act_window,name:project_long_term.act_project_phase @@ -429,7 +423,7 @@ msgstr "" #: view:project.phase:0 #: field:project.project,phase_ids:0 msgid "Project Phases" -msgstr "" +msgstr "Fases proyecto" #. module: project_long_term #: view:project.phase:0 @@ -455,11 +449,6 @@ msgstr "Horas restantes" #. module: project_long_term #: view:project.phase:0 -msgid "Other Info" -msgstr "Otra información" - -#. module: project_long_term -#: view:project.phase:0 #: field:project.phase,responsible_id:0 msgid "Responsible" msgstr "Responsable" @@ -480,10 +469,10 @@ msgid "Start Phase" msgstr "Comenzar fase" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Please Specify Project to be schedule" -msgstr "" +msgstr "Por favor seleccione el proyecto a planificar" #. module: project_long_term #: view:project.phase:0 @@ -494,12 +483,12 @@ msgstr "Total horas" #. module: project_long_term #: view:project.schedule.tasks:0 msgid "Task Scheduling completed successfully." -msgstr "" +msgstr "Planificación de tareas completada satisfactoriamente." #. module: project_long_term #: view:project.compute.tasks:0 msgid "Compute Scheduling of Task for specified project." -msgstr "" +msgstr "Calcular planificación de tareas para un proyecto específico" #. module: project_long_term #: view:project.resource.allocation:0 @@ -507,14 +496,6 @@ msgid "Phase" msgstr "Fase" #. module: project_long_term -#: help:project.phase,date_start:0 -msgid "" -"It's computed according to the phases order : the start date of the 1st " -"phase is set by you while the other start dates depend on the end date of " -"their previous phases" -msgstr "" - -#. module: project_long_term #: help:project.phase,state:0 msgid "" "If the phase is created the state 'Draft'.\n" @@ -542,6 +523,11 @@ msgid "Name" msgstr "Nombre" #. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "Detalles tareas" + +#. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar msgid "Working Period" msgstr "Periodo de trabajo" @@ -553,17 +539,10 @@ msgstr "Detalle recurso" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_phase_schedule -#: view:project.phase:0 msgid "Scheduling" msgstr "Planificación" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Phase '%s'." -msgstr "" - -#. 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 @@ -619,5 +598,35 @@ msgstr "Por defecto en días" msgid "Duration" msgstr "Duración" +#, python-format +#~ msgid "Error" +#~ msgstr "Error" + +#~ msgid "Other Info" +#~ msgstr "Otra información" + #~ msgid "Ending Date of the phase" #~ msgstr "Fecha de fin de la fase" + +#, python-format +#~ msgid "No tasks to compute for Project '%s'." +#~ msgstr "No existen tareas para calcular en este proyecto '%s'" + +#, python-format +#~ msgid "" +#~ "Resources should be allocated to your phases and Members should be assigned " +#~ "to your Project!" +#~ msgstr "" +#~ "Los recursos deben de ser asignados a tus fases y los miembros a tu proyecto." + +#, python-format +#~ msgid "You must assign a responsible person for phase '%s' !" +#~ msgstr "¡Debe asignar un reponsable por fase '%s'!" + +#, python-format +#~ msgid "No responsible person assigned !" +#~ msgstr "¡No hay un reponsable asignado!" + +#, python-format +#~ msgid "No tasks to compute for Phase '%s'." +#~ msgstr "No existen tareas para el cálculo para la fase '%s'." diff --git a/addons/project_long_term/i18n/fi.po b/addons/project_long_term/i18n/fi.po new file mode 100644 index 00000000000..d3a979bf965 --- /dev/null +++ b/addons/project_long_term/i18n/fi.po @@ -0,0 +1,590 @@ +# Finnish 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-01-12 15:37+0000\n" +"Last-Translator: Pekka Pylvänäinen <Unknown>\n" +"Language-Team: Finnish <fi@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-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" + +#. module: project_long_term +#: model:ir.module.module,shortdesc:project_long_term.module_meta_information +msgid "Long Term Project Management" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +msgid "Compute Scheduling of Phases" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,next_phase_ids:0 +msgid "Next Phases" +msgstr "Seuraavat vaiheet" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Project's Tasks" +msgstr "Projektin tehtävät" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_project_phases +msgid "Phases" +msgstr "Vaiheet" + +#. module: project_long_term +#: view:project.phase:0 +#: view:project.resource.allocation:0 +msgid "Group By..." +msgstr "" + +#. module: project_long_term +#: constraint:project.project:0 +msgid "Error! project start-date must be lower then project end-date." +msgstr "Virhe: projektin alkupäivä tulee olla aikaisempi kuin loppupäivä." + +#. module: project_long_term +#: view:project.resource.allocation:0 +msgid "Resources Allocation" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Displaying settings" +msgstr "" + +#. module: project_long_term +#: field:project.compute.phases,target_project:0 +msgid "Schedule" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: constraint:project.task:0 +msgid "Error ! You cannot create recursive tasks." +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_resouce_allocation +#: model:ir.ui.menu,name:project_long_term.menu_resouce_allocation +msgid "Resource Allocations" +msgstr "" + +#. module: project_long_term +#: constraint:project.project:0 +msgid "Error! You cannot assign escalation to the same project!" +msgstr "" + +#. module: project_long_term +#: code:addons/project_long_term/project_long_term.py:133 +#, python-format +msgid "Day" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_task +msgid "Task" +msgstr "" + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute a Single Project" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,previous_phase_ids:0 +msgid "Previous Phases" +msgstr "" + +#. module: project_long_term +#: help:project.phase,product_uom:0 +msgid "UoM (Unit of Measure) is the unit of measurement for Duration" +msgstr "" + +#. 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 "" + +#. 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 "" + +#. module: project_long_term +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 +#, python-format +msgid "Error!" +msgstr "" + +#. module: project_long_term +#: selection:project.phase,state:0 +msgid "Cancelled" +msgstr "" + +#. module: project_long_term +#: help:project.resource.allocation,date_end:0 +msgid "Ending Date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Planning" +msgstr "" + +#. module: project_long_term +#: field:project.phase,constraint_date_end:0 +msgid "Deadline" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "_Cancel" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: code:addons/project_long_term/project_long_term.py:195 +#, python-format +msgid " (copy)" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: view:project.resource.allocation:0 +#: field:project.resource.allocation,useability:0 +msgid "Availability" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,state:0 +msgid "State" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "C_ompute" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +msgid "Compute Scheduling of phases for all or specified project" +msgstr "" + +#. module: project_long_term +#: field:project.phase,product_uom:0 +msgid "Duration UoM" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: field:project.phase,constraint_date_start:0 +msgid "Minimum Start Date" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: view:project.compute.tasks:0 +msgid "Compute Scheduling of Task" +msgstr "" + +#. 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 "" + +#. 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 "" + +#. module: project_long_term +#: help:project.resource.allocation,date_start:0 +msgid "Starting Date" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.project_phase_task_list +msgid "Related Tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Dates" +msgstr "" + +#. module: project_long_term +#: help:project.resource.allocation,useability:0 +msgid "" +"Availability of this resource for this project phase in percentage (=50%)" +msgstr "" + +#. module: project_long_term +#: help:project.phase,constraint_date_start:0 +msgid "force the phase to start after this date" +msgstr "" + +#. module: project_long_term +#: field:project.phase,task_ids:0 +msgid "Project Tasks" +msgstr "" + +#. module: project_long_term +#: field:project.phase,resource_ids:0 +msgid "Project Resources" +msgstr "" + +#. module: project_long_term +#: view:project.schedule.tasks:0 +msgid "_Ok" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Schedule and Display info" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Month" +msgstr "" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Phase start-date must be lower than phase end-date." +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_schedule_tasks +msgid "project.schedule.tasks" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: field:project.phase,date_start:0 +#: field:project.resource.allocation,date_start:0 +msgid "Start Date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Resource Allocation" +msgstr "" + +#. module: project_long_term +#: help:project.phase,constraint_date_end:0 +msgid "force the phase to finish before this date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Draft" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Pending" +msgstr "" + +#. module: project_long_term +#: field:project.resource.allocation,name:0 +msgid "unknown" +msgstr "" + +#. module: project_long_term +#: field:project.resource.allocation,user_id:0 +msgid "User" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Task Detail" +msgstr "" + +#. module: project_long_term +#: help:project.project,resource_calendar_id:0 +msgid "Timetable working hours to adjust the gantt diagram report" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_tasks +msgid "Project Compute Tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Constraints" +msgstr "" + +#. module: project_long_term +#: help:project.phase,sequence:0 +msgid "Gives the sequence order when displaying a list of phases." +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Done" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Cancel" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "In Progress" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Remaining Hours" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,responsible_id:0 +msgid "Responsible" +msgstr "" + +#. module: project_long_term +#: field:project.project,resource_calendar_id:0 +msgid "Working Time" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Current" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Start Phase" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,total_hours:0 +msgid "Total Hours" +msgstr "" + +#. module: project_long_term +#: view:project.schedule.tasks:0 +msgid "Task Scheduling completed successfully." +msgstr "" + +#. module: project_long_term +#: view:project.compute.tasks:0 +msgid "Compute Scheduling of Task for specified project." +msgstr "" + +#. module: project_long_term +#: view:project.resource.allocation:0 +msgid "Phase" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: field:project.phase,date_end:0 +#: field:project.resource.allocation,date_end:0 +msgid "End Date" +msgstr "" + +#. module: project_long_term +#: view:project.resource.allocation:0 +#: field:project.resource.allocation,resource_id:0 +msgid "Resource" +msgstr "" + +#. module: project_long_term +#: field:project.phase,name:0 +msgid "Name" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar +msgid "Working Period" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_resource_resource +msgid "Resource Detail" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_phase_schedule +msgid "Scheduling" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_phases +msgid "Project Compute Phases" +msgstr "" + +#. module: project_long_term +#: field:project.schedule.tasks,msg:0 +msgid "Message" +msgstr "" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Loops in phases not allowed" +msgstr "" + +#. module: project_long_term +#: field:project.phase,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute All Projects" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves +msgid "Resource Leaves" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: help:project.phase,duration:0 +msgid "By default in days" +msgstr "" + +#. module: project_long_term +#: field:project.phase,duration:0 +msgid "Duration" +msgstr "" diff --git a/addons/project_long_term/i18n/fr.po b/addons/project_long_term/i18n/fr.po index 3b7d111daac..4a3ed76df76 100644 --- a/addons/project_long_term/i18n/fr.po +++ b/addons/project_long_term/i18n/fr.po @@ -6,15 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2010-12-21 19:44+0000\n" -"PO-Revision-Date: 2010-12-31 11:08+0000\n" -"Last-Translator: lolivier <olivier.lenoir@free.fr>\n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2011-01-13 05:12+0000\n" +"Last-Translator: Quentin THEURET <quentin@theuret.net>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-01 05:05+0000\n" -"X-Generator: Launchpad (build Unknown)\n" +"X-Launchpad-Export-Date: 2011-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" #. module: project_long_term #: model:ir.module.module,shortdesc:project_long_term.module_meta_information @@ -52,6 +52,8 @@ msgstr "Regrouper par..." #: constraint:project.project:0 msgid "Error! project start-date must be lower then project end-date." msgstr "" +"Erreur ! La date de début du projet doit être antérieure à la date de fin du " +"projet." #. module: project_long_term #: view:project.resource.allocation:0 @@ -59,6 +61,11 @@ msgid "Resources Allocation" msgstr "Allocation des ressources" #. module: project_long_term +#: view:project.phase:0 +msgid "Displaying settings" +msgstr "Options d'affichage" + +#. module: project_long_term #: field:project.compute.phases,target_project:0 msgid "Schedule" msgstr "Planifier" @@ -84,6 +91,27 @@ msgid "" "\n" " " msgstr "" +"\n" +"\n" +" Module de gestion de projet à long terme, qui fait le suivi de la " +"planification, de l'ordonnancement, de l'allocation des ressources.\n" +" Principalement utilisé pour la gestion de gros projet.\n" +" - Les phases du projet seront maintenues par le chef de projet\n" +" - Calcule l'ordonnancement des phases : calcule les dates de " +"début et de fin des phases dans l'état brouillon, ouverte ou en attente pour " +"un projet donné.\n" +" Si aucun projet n'est spécifié, " +"alors toutes les phases dans l'état brouillon, ouverte et en attente seront " +"considérées\n" +" - Calcule l'ordonnancement des tâches : Fonctionne de la même " +"façon que le bouton d'ordonnancement sur les projets. Il prend le projet " +"comme argument et calcule toutes les tâches ouvertes, en brouillon et en " +"attente\n" +" - Ordonnance les tâches : Toutes les tâches dans l'état " +"brouillon, ouverte et en attente sont planifiés avec la date de début de la " +"phase.\n" +"\n" +" " #. module: project_long_term #: constraint:project.task:0 @@ -100,9 +128,10 @@ msgstr "Allocations des ressources" #: constraint:project.project:0 msgid "Error! You cannot assign escalation to the same project!" msgstr "" +"Erreur ! Vous ne pouvez pas attribuer une escalade sur le même projet !" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:133 #, python-format msgid "Day" msgstr "Jour" @@ -115,7 +144,7 @@ msgstr "Tâche" #. module: project_long_term #: selection:project.compute.phases,target_project:0 msgid "Compute a Single Project" -msgstr "" +msgstr "Calculer un seul projet" #. module: project_long_term #: view:project.phase:0 @@ -129,6 +158,13 @@ msgid "UoM (Unit of Measure) is the unit of measurement for Duration" msgstr "UdM (unité de mesure) est l'unité de mesure de la durée" #. 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 "" +" C'est calculé par l'ordonnanceur selon la date de début et la durée." + +#. 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 @@ -141,7 +177,7 @@ msgid "Project" msgstr "Projet" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Error!" msgstr "Erreur!" @@ -152,23 +188,11 @@ msgid "Cancelled" msgstr "Annulé" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Project '%s'." -msgstr "Pas de tâches à calculer pour le projet '%s'." - -#. module: project_long_term #: help:project.resource.allocation,date_end:0 msgid "Ending Date" msgstr "Date de fin" #. 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 "Date de fin de la phase" - -#. module: project_long_term #: view:project.phase:0 msgid "Planning" msgstr "Planification" @@ -188,15 +212,16 @@ msgstr "_Annuler" #: 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 "" +msgstr "Calculer la planification des phases" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:195 #, python-format msgid " (copy)" msgstr " (copie)" #. module: project_long_term +#: view:project.phase:0 #: view:project.resource.allocation:0 #: field:project.resource.allocation,useability:0 msgid "Availability" @@ -218,6 +243,7 @@ msgstr "Calculer" #: view:project.compute.phases:0 msgid "Compute Scheduling of phases for all or specified project" msgstr "" +"Calculer la plannification des phases pour tous les projets ou celui spécifié" #. module: project_long_term #: field:project.phase,product_uom:0 @@ -311,6 +337,20 @@ msgstr "_Ok" #. module: project_long_term #: view:project.phase:0 +msgid "Schedule and Display info" +msgstr "Ordonnancer et afficher les informations" + +#. 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 "" +"Ceci est calculé par l'ordonnanceur en fonction de la date du projet ou de " +"la date de fin de la tâche précédente." + +#. module: project_long_term +#: view:project.phase:0 msgid "Month" msgstr "Mois" @@ -327,6 +367,23 @@ 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 "" +"Un projet peut être divisé en différentes phases. Pour chaque phase, on peut " +"allouer de ressources, décrire différentes tâches et chaîner la phase aux " +"précédentes et suivantes, ajouter des contraintes de date pour " +"l'ordonnancement automatique. Utiliser la planification à long terme pour " +"planifier la disponibilité des ressources humaines, convertir les phases en " +"une série de tâches quand on commence à travailler sur le projet." + +#. module: project_long_term #: field:project.phase,date_start:0 #: field:project.resource.allocation,date_start:0 msgid "Start Date" @@ -349,23 +406,6 @@ msgid "Draft" msgstr "Brouillon" #. 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 ones, 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 it." -msgstr "" -"Un projet peut être divisé en différentes phases. Pour chaque phase, vous " -"pouvez allouer des ressources, décrire les différentes tâches et relier les " -"phases les unes aux autres, ajouter des contraintes sur les dates pour " -"l'ordonnancement automatique. Utilisez la planification à long terme pour " -"planifier les ressources humaines disponibles, et convertissez vos phases en " -"une série de tâches quand vous commencez à travailler sur le projet." - -#. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "Pending" @@ -396,31 +436,7 @@ msgstr "" #. module: project_long_term #: model:ir.model,name:project_long_term.model_project_compute_tasks msgid "Project Compute Tasks" -msgstr "" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No responsible person assigned !" -msgstr "Aucun responsable n'a été assigné !" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Error" -msgstr "Erreur" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "You must assign a responsible person for phase '%s' !" -msgstr "Vous devez assigner une personne responsable de la phase '%s' !" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Should have Resources Allocation or Project Members!" -msgstr "" +msgstr "Calculer les tâches du projet" #. module: project_long_term #: view:project.phase:0 @@ -430,7 +446,7 @@ msgstr "Contraintes" #. module: project_long_term #: help:project.phase,sequence:0 msgid "Gives the sequence order when displaying a list of phases." -msgstr "" +msgstr "Donne la séquence lors de l'affichage des phases dans la liste." #. module: project_long_term #: model:ir.actions.act_window,name:project_long_term.act_project_phase @@ -466,11 +482,6 @@ msgstr "Heures restantes" #. module: project_long_term #: view:project.phase:0 -msgid "Other Info" -msgstr "Autres Informations" - -#. module: project_long_term -#: view:project.phase:0 #: field:project.phase,responsible_id:0 msgid "Responsible" msgstr "Responsable" @@ -491,10 +502,10 @@ msgid "Start Phase" msgstr "Démarrer la phase" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Please Specify Project to be schedule" -msgstr "" +msgstr "Veuillez définir le projet à planifier" #. module: project_long_term #: view:project.phase:0 @@ -518,14 +529,6 @@ msgid "Phase" msgstr "Phase" #. module: project_long_term -#: help:project.phase,date_start:0 -msgid "" -"It's computed according to the phases order : the start date of the 1st " -"phase is set by you while the other start dates depend on the end date of " -"their previous phases" -msgstr "Date de début de la phase" - -#. module: project_long_term #: help:project.phase,state:0 msgid "" "If the phase is created the state 'Draft'.\n" @@ -557,6 +560,11 @@ msgid "Name" msgstr "Nom" #. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "Détails des tâches" + +#. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar msgid "Working Period" msgstr "Période de travail" @@ -568,17 +576,10 @@ msgstr "Détail de la ressource" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_phase_schedule -#: view:project.phase:0 msgid "Scheduling" msgstr "Ordonnancement" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Phase '%s'." -msgstr "Pas de tâches à calculer pour la phase '%s'." - -#. 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 @@ -600,7 +601,7 @@ msgstr "Message" #. module: project_long_term #: constraint:project.phase:0 msgid "Loops in phases not allowed" -msgstr "" +msgstr "Les boucles ne sont pas autorisées dans les phases" #. module: project_long_term #: field:project.phase,sequence:0 @@ -610,7 +611,7 @@ msgstr "Séquence" #. module: project_long_term #: selection:project.compute.phases,target_project:0 msgid "Compute All Projects" -msgstr "" +msgstr "Calculer tous les projets" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves @@ -622,7 +623,7 @@ msgstr "Congés de la ressource" #: view:project.phase:0 #: view:project.schedule.tasks:0 msgid "Schedule Tasks" -msgstr "" +msgstr "Planifier les tâches" #. module: project_long_term #: help:project.phase,duration:0 @@ -633,3 +634,65 @@ msgstr "Par défaut en jour" #: field:project.phase,duration:0 msgid "Duration" msgstr "Durée" + +#, python-format +#~ msgid "No tasks to compute for Project '%s'." +#~ msgstr "Pas de tâches à calculer pour le projet '%s'." + +#~ msgid "Ending Date of the phase" +#~ msgstr "Date de fin de la phase" + +#, python-format +#~ msgid "You must assign a responsible person for phase '%s' !" +#~ msgstr "Vous devez assigner une personne responsable de la phase '%s' !" + +#, python-format +#~ msgid "Error" +#~ msgstr "Erreur" + +#, python-format +#~ msgid "No responsible person assigned !" +#~ msgstr "Aucun responsable n'a été assigné !" + +#~ msgid "Other Info" +#~ msgstr "Autres Informations" + +#~ msgid "Starting Date of the phase" +#~ msgstr "Date de début de la phase" + +#, python-format +#~ msgid "No tasks to compute for Phase '%s'." +#~ msgstr "Pas de tâches à calculer pour la phase '%s'." + +#~ 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 ones, 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 it." +#~ msgstr "" +#~ "Un projet peut être divisé en différentes phases. Pour chaque phase, vous " +#~ "pouvez allouer des ressources, décrire les différentes tâches et relier les " +#~ "phases les unes aux autres, ajouter des contraintes sur les dates pour " +#~ "l'ordonnancement automatique. Utilisez la planification à long terme pour " +#~ "planifier les ressources humaines disponibles, et convertissez vos phases en " +#~ "une série de tâches quand vous commencez à travailler sur le projet." + +#~ msgid "" +#~ "It's computed by the scheduler according to the start date and the duration." +#~ msgstr "Date de fin de la phase" + +#~ msgid "" +#~ "It's computed according to the phases order : the start date of the 1st " +#~ "phase is set by you while the other start dates depend on the end date of " +#~ "their previous phases" +#~ msgstr "Date de début de la phase" + +#, python-format +#~ msgid "" +#~ "Resources should be allocated to your phases and Members should be assigned " +#~ "to your Project!" +#~ msgstr "" +#~ "Des ressources devraient être allouées à vos phases et des membres devraient " +#~ "être affectés à votre projet !" diff --git a/addons/project_long_term/i18n/en_US.po b/addons/project_long_term/i18n/hu.po index 15a3bd4034b..f172b6c5034 100644 --- a/addons/project_long_term/i18n/en_US.po +++ b/addons/project_long_term/i18n/hu.po @@ -1,142 +1,145 @@ # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * project_long_term +# * project_long_term # msgid "" msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2010-08-20 10:27:00+0000\n" -"PO-Revision-Date: 2010-08-20 10:27:00+0000\n" -"Last-Translator: <>\n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2011-01-14 00:06+0000\n" +"Last-Translator: NOVOTRADE RENDSZERHÁZ <openerp@novotrade.hu>\n" "Language-Team: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" #. module: project_long_term #: model:ir.module.module,shortdesc:project_long_term.module_meta_information msgid "Long Term Project Management" -msgstr "Long Term Project Management" +msgstr "" #. module: project_long_term #: view:project.compute.phases:0 -#: view:project.compute.tasks:0 msgid "Compute Scheduling of Phases" -msgstr "Compute Scheduling of Phases" +msgstr "" #. module: project_long_term #: view:project.phase:0 #: field:project.phase,next_phase_ids:0 msgid "Next Phases" -msgstr "Next Phases" +msgstr "" #. module: project_long_term #: view:project.phase:0 msgid "Project's Tasks" -msgstr "Project's Tasks" +msgstr "" #. module: project_long_term #: model:ir.actions.act_window,name:project_long_term.act_project_phases -#: view:project.phase:0 msgid "Phases" -msgstr "Phases" - -#. module: project_long_term -#: view:project.compute.phases:0 -msgid "_Compute" -msgstr "_Compute" +msgstr "" #. module: project_long_term #: view:project.phase:0 #: view:project.resource.allocation:0 msgid "Group By..." -msgstr "Group By..." - -#. module: project_long_term -#: constraint:ir.actions.act_window:0 -msgid "Invalid model name in the action definition." -msgstr "Invalid model name in the action definition." +msgstr "" #. module: project_long_term #: constraint:project.project:0 msgid "Error! project start-date must be lower then project end-date." -msgstr "Error! project start-date must be lower then project end-date." +msgstr "" +"Hiba! A projekt kezdő dátumának előbbinek kell lennie, mint a projekt " +"befejező dátumának." + +#. module: project_long_term +#: view:project.resource.allocation:0 +msgid "Resources Allocation" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Displaying settings" +msgstr "" #. module: project_long_term #: field:project.compute.phases,target_project:0 msgid "Schedule" -msgstr "Schedule" +msgstr "" #. module: project_long_term #: model:ir.module.module,description:project_long_term.module_meta_information -msgid "\n" +msgid "" "\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" -" Long Term Project management module that tracks planning, scheduling, resources allocation.\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" +" - 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 "" + +#. module: project_long_term +#: constraint:project.task:0 +msgid "Error ! You cannot create recursive tasks." +msgstr "Hiba! Nem hozhat létre rekurzív feladatokat." #. module: project_long_term #: model:ir.actions.act_window,name:project_long_term.act_resouce_allocation #: model:ir.ui.menu,name:project_long_term.menu_resouce_allocation -#: view:project.resource.allocation:0 msgid "Resource Allocations" -msgstr "Resource Allocations" - -#. module: project_long_term -#: view:project.resource.allocation:0 -msgid "R.A." -msgstr "R.A." +msgstr "" #. module: project_long_term #: constraint:project.project:0 msgid "Error! You cannot assign escalation to the same project!" -msgstr "Error! You cannot assign escalation to the same project!" +msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:133 #, python-format msgid "Day" -msgstr "Day" +msgstr "" #. module: project_long_term #: model:ir.model,name:project_long_term.model_project_task msgid "Task" -msgstr "Task" +msgstr "Feladat" #. module: project_long_term #: selection:project.compute.phases,target_project:0 msgid "Compute a Single Project" -msgstr "Compute a Single Project" +msgstr "" #. module: project_long_term #: view:project.phase:0 #: field:project.phase,previous_phase_ids:0 msgid "Previous Phases" -msgstr "Previous Phases" +msgstr "" #. module: project_long_term #: help:project.phase,product_uom:0 msgid "UoM (Unit of Measure) is the unit of measurement for Duration" -msgstr "UoM (Unit of Measure) is the unit of measurement for Duration" +msgstr "" + +#. 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 "" #. module: project_long_term #: model:ir.model,name:project_long_term.model_project_project @@ -144,407 +147,445 @@ msgstr "UoM (Unit of Measure) is the unit of measurement for Duration" #: 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 "Project" +msgstr "Projekt" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Error!" -msgstr "Error!" +msgstr "" #. module: project_long_term #: selection:project.phase,state:0 msgid "Cancelled" -msgstr "Cancelled" - -#. module: project_long_term -#: field:project.resource.allocation,useability:0 -msgid "Usability" -msgstr "Usability" - -#. module: project_long_term -#: help:project.resource.allocation,useability:0 -msgid "Usability of this resource for this project phase in percentage (=50%)" -msgstr "Usability of this resource for this project phase in percentage (=50%)" - -#. module: project_long_term -#: help:project.phase,date_end:0 -#: field:project.resource.allocation,phase_id_date_end:0 -msgid "It's computed by the scheduler according to the start date and the duration." -msgstr "It's computed by the scheduler according to the start date and the duration." +msgstr "" #. module: project_long_term -#: view:project.compute.phases:0 -msgid "This wizard will schedule phases for all or specified project" -msgstr "This wizard will schedule phases for all or specified project" +#: help:project.resource.allocation,date_end:0 +msgid "Ending Date" +msgstr "" #. module: project_long_term #: view:project.phase:0 msgid "Planning" -msgstr "Planning" +msgstr "" + +#. module: project_long_term +#: field:project.phase,constraint_date_end:0 +msgid "Deadline" +msgstr "" #. module: project_long_term #: view:project.compute.phases:0 #: view:project.compute.tasks:0 msgid "_Cancel" -msgstr "_Cancel" +msgstr "" #. 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 "Compute Phase Scheduling" - -#. module: project_long_term -#: constraint:res.users:0 -msgid "The chosen company is not in the allowed companies for this user" -msgstr "The chosen company is not in the allowed companies for this user" +msgstr "" #. module: project_long_term -#: constraint:account.analytic.account:0 -msgid "Error! You can not create recursive analytic accounts." -msgstr "Error! You can not create recursive analytic accounts." +#: code:addons/project_long_term/project_long_term.py:195 +#, python-format +msgid " (copy)" +msgstr "" #. module: project_long_term #: view:project.phase:0 -msgid "Dates" -msgstr "Dates" +#: view:project.resource.allocation:0 +#: field:project.resource.allocation,useability:0 +msgid "Availability" +msgstr "" #. module: project_long_term #: view:project.phase:0 #: field:project.phase,state:0 msgid "State" -msgstr "State" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "C_ompute" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +msgid "Compute Scheduling of phases for all or specified project" +msgstr "" #. module: project_long_term #: field:project.phase,product_uom:0 msgid "Duration UoM" -msgstr "Duration UoM" +msgstr "" #. 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 "Compute Task Scheduling" +msgstr "" + +#. module: project_long_term +#: field:project.phase,constraint_date_start:0 +msgid "Minimum Start Date" +msgstr "" #. 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 "Project Resource Allocation" +msgstr "" + +#. module: project_long_term +#: view:project.compute.tasks:0 +msgid "Compute Scheduling of Task" +msgstr "" #. 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 "Resources" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: help:project.resource.allocation,date_start:0 +msgid "Starting Date" +msgstr "" #. module: project_long_term #: model:ir.actions.act_window,name:project_long_term.project_phase_task_list msgid "Related Tasks" -msgstr "Related Tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Dates" +msgstr "" #. module: project_long_term -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Invalid XML for View Architecture!" +#: help:project.resource.allocation,useability:0 +msgid "" +"Availability of this resource for this project phase in percentage (=50%)" +msgstr "" #. module: project_long_term #: help:project.phase,constraint_date_start:0 msgid "force the phase to start after this date" -msgstr "force the phase to start after this date" +msgstr "" #. module: project_long_term #: field:project.phase,task_ids:0 msgid "Project Tasks" -msgstr "Project Tasks" +msgstr "" #. module: project_long_term #: field:project.phase,resource_ids:0 msgid "Project Resources" -msgstr "Project Resources" +msgstr "" #. module: project_long_term #: view:project.schedule.tasks:0 msgid "_Ok" -msgstr "_Ok" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Schedule and Display info" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Month" +msgstr "" #. module: project_long_term #: constraint:project.phase:0 msgid "Phase start-date must be lower than phase end-date." -msgstr "Phase start-date must be lower than phase end-date." +msgstr "" #. module: project_long_term #: model:ir.model,name:project_long_term.model_project_schedule_tasks msgid "project.schedule.tasks" -msgstr "project.schedule.tasks" +msgstr "" + +#. 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 "" #. module: project_long_term -#: view:project.phase:0 -#: field:project.phase,constraint_date_start:0 #: field:project.phase,date_start:0 +#: field:project.resource.allocation,date_start:0 msgid "Start Date" -msgstr "Start Date" +msgstr "" #. module: project_long_term #: view:project.phase:0 msgid "Resource Allocation" -msgstr "Resource Allocation" +msgstr "" #. module: project_long_term #: help:project.phase,constraint_date_end:0 msgid "force the phase to finish before this date" -msgstr "force the phase to finish before this date" - -#. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_tasks.py:0 -#, python-format -msgid "Project must have members assigned !" -msgstr "Project must have members assigned !" +msgstr "" #. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "Draft" -msgstr "Draft" - -#. module: project_long_term -#: constraint:ir.ui.menu:0 -msgid "Error ! You can not create recursive Menu." -msgstr "Error ! You can not create recursive Menu." +msgstr "" #. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "Pending" -msgstr "Pending" - -#. module: project_long_term -#: constraint:project.task:0 -msgid "Error! Task start-date must be lower then task end-date." -msgstr "Error! Task start-date must be lower then task end-date." +msgstr "" #. module: project_long_term -#: view:project.phase:0 -msgid "Remaining Hours" -msgstr "Remaining Hours" +#: field:project.resource.allocation,name:0 +msgid "unknown" +msgstr "" #. module: project_long_term -#: view:project.phase:0 +#: field:project.resource.allocation,user_id:0 msgid "User" -msgstr "User" +msgstr "" #. module: project_long_term #: view:project.phase:0 msgid "Task Detail" -msgstr "Task Detail" +msgstr "" #. module: project_long_term -#: view:project.compute.tasks:0 -msgid "Compute" -msgstr "Compute" +#: help:project.project,resource_calendar_id:0 +msgid "Timetable working hours to adjust the gantt diagram report" +msgstr "" #. module: project_long_term #: model:ir.model,name:project_long_term.model_project_compute_tasks msgid "Project Compute Tasks" -msgstr "Project Compute Tasks" - -#. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 -#, python-format -msgid "No responsible person assigned !" -msgstr "No responsible person assigned !" - -#. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_tasks.py:0 -#: code:addons/project_long_term/wizard/project_schedule_tasks.py:0 -#, python-format -msgid "Error" -msgstr "Error" - -#. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 -#, python-format -msgid "You must assign a responsible person for phase '%s' !" -msgstr "You must assign a responsible person for phase '%s' !" +msgstr "" #. module: project_long_term #: view:project.phase:0 msgid "Constraints" -msgstr "Constraints" +msgstr "" #. module: project_long_term #: help:project.phase,sequence:0 msgid "Gives the sequence order when displaying a list of phases." -msgstr "Gives the sequence order when displaying a list of phases." +msgstr "" #. 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 "Project Phases" +msgstr "" #. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "Done" -msgstr "Done" +msgstr "" #. module: project_long_term #: view:project.phase:0 msgid "Cancel" -msgstr "Cancel" +msgstr "" #. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "In Progress" -msgstr "In Progress" +msgstr "" #. module: project_long_term -#: constraint:ir.model:0 -msgid "The Object name must start with x_ and not contain any special character !" -msgstr "The Object name must start with x_ and not contain any special character !" +#: view:project.phase:0 +msgid "Remaining Hours" +msgstr "" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_schedule_tasks.py:0 -#, python-format -msgid "Phase must have resources assigned !" -msgstr "Phase must have resources assigned !" +#: view:project.phase:0 +#: field:project.phase,responsible_id:0 +msgid "Responsible" +msgstr "" #. module: project_long_term -#: view:project.phase:0 -msgid "Other Info" -msgstr "Other Info" +#: field:project.project,resource_calendar_id:0 +msgid "Working Time" +msgstr "" #. module: project_long_term -#: field:project.phase,responsible_id:0 -msgid "Responsible" -msgstr "Responsible" +#: view:project.phase:0 +msgid "Current" +msgstr "" #. module: project_long_term #: view:project.phase:0 msgid "Start Phase" -msgstr "Start Phase" +msgstr "" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Please Specify Project to be schedule" -msgstr "Please Specify Project to be schedule" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,total_hours:0 +msgid "Total Hours" +msgstr "" #. module: project_long_term #: view:project.schedule.tasks:0 msgid "Task Scheduling completed successfully." -msgstr "Task Scheduling completed successfully." +msgstr "" #. module: project_long_term -#: view:project.resource.allocation:0 -msgid "Phase" -msgstr "Phase" +#: view:project.compute.tasks:0 +msgid "Compute Scheduling of Task for specified project." +msgstr "" #. module: project_long_term -#: help:project.phase,date_start:0 -#: field:project.resource.allocation,phase_id_date_start:0 -msgid "It's computed according to the phases order : the start date of the 1st phase is set by you while the other start dates depend on the end date of their previous phases" -msgstr "It's computed according to the phases order : the start date of the 1st phase is set by you while the other start dates depend on the end date of their previous phases" +#: view:project.resource.allocation:0 +msgid "Phase" +msgstr "" #. 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 "If the phase is created the state 'Draft'.\n" +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 review is needed the phase is in 'Pending' state. " +" \n" " If the phase is over, the states is set to 'Done'." +msgstr "" #. module: project_long_term -#: field:project.phase,constraint_date_end:0 #: field:project.phase,date_end:0 +#: field:project.resource.allocation,date_end:0 msgid "End Date" -msgstr "End Date" +msgstr "" #. module: project_long_term #: view:project.resource.allocation:0 #: field:project.resource.allocation,resource_id:0 msgid "Resource" -msgstr "Resource" +msgstr "" #. module: project_long_term #: field:project.phase,name:0 msgid "Name" -msgstr "Name" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar msgid "Working Period" -msgstr "Working Period" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_resource_resource +msgid "Resource Detail" +msgstr "" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_phase_schedule -#: view:project.phase:0 msgid "Scheduling" -msgstr "Scheduling" +msgstr "" #. 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 "Project Phase" +msgstr "" #. module: project_long_term #: model:ir.model,name:project_long_term.model_project_compute_phases msgid "Project Compute Phases" -msgstr "Project Compute Phases" +msgstr "" #. module: project_long_term #: field:project.schedule.tasks,msg:0 msgid "Message" -msgstr "Message" +msgstr "" #. module: project_long_term #: constraint:project.phase:0 msgid "Loops in phases not allowed" -msgstr "Loops in phases not allowed" +msgstr "" #. module: project_long_term #: field:project.phase,sequence:0 msgid "Sequence" -msgstr "Sequence" +msgstr "" #. module: project_long_term #: selection:project.compute.phases,target_project:0 msgid "Compute All Projects" -msgstr "Compute All Projects" +msgstr "" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves msgid "Resource Leaves" -msgstr "Resource Leaves" +msgstr "" #. 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 "Schedule Tasks" +msgstr "" #. module: project_long_term #: help:project.phase,duration:0 msgid "By default in days" -msgstr "By default in days" +msgstr "" #. module: project_long_term #: field:project.phase,duration:0 msgid "Duration" -msgstr "Duration" - +msgstr "" diff --git a/addons/project_long_term/i18n/it.po b/addons/project_long_term/i18n/it.po new file mode 100644 index 00000000000..c5b4149667c --- /dev/null +++ b/addons/project_long_term/i18n/it.po @@ -0,0 +1,615 @@ +# Italian 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-01-14 15:07+0000\n" +"Last-Translator: Lorenzo Battistini - agilebg.com " +"<lorenzo.battistini@agilebg.com>\n" +"Language-Team: Italian <it@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-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" + +#. module: project_long_term +#: model:ir.module.module,shortdesc:project_long_term.module_meta_information +msgid "Long Term Project Management" +msgstr "Gestione progetti a lungo termine" + +#. module: project_long_term +#: view:project.compute.phases:0 +msgid "Compute Scheduling of Phases" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,next_phase_ids:0 +msgid "Next Phases" +msgstr "Prossima fase" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Project's Tasks" +msgstr "Attività del progetto" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_project_phases +msgid "Phases" +msgstr "Fasi" + +#. module: project_long_term +#: view:project.phase:0 +#: view:project.resource.allocation:0 +msgid "Group By..." +msgstr "Raggruppa per..." + +#. module: project_long_term +#: constraint:project.project:0 +msgid "Error! project start-date must be lower then project end-date." +msgstr "" +"Errore! La data inizio del progetto deve essere antecedente alla data fine." + +#. module: project_long_term +#: view:project.resource.allocation:0 +msgid "Resources Allocation" +msgstr "Allocazione risorse" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Displaying settings" +msgstr "Visualizza impostazioni" + +#. module: project_long_term +#: field:project.compute.phases,target_project:0 +msgid "Schedule" +msgstr "Pianificazione" + +#. 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 "" + +#. module: project_long_term +#: constraint:project.task:0 +msgid "Error ! You cannot create recursive tasks." +msgstr "Errore ! Non è possibile creare attività ricorsive." + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_resouce_allocation +#: model:ir.ui.menu,name:project_long_term.menu_resouce_allocation +msgid "Resource Allocations" +msgstr "Allocazione risorse" + +#. module: project_long_term +#: constraint:project.project:0 +msgid "Error! You cannot assign escalation to the same project!" +msgstr "" + +#. module: project_long_term +#: code:addons/project_long_term/project_long_term.py:133 +#, python-format +msgid "Day" +msgstr "Giorno" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_task +msgid "Task" +msgstr "Attività" + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute a Single Project" +msgstr "Calcola un singolo progetto" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,previous_phase_ids:0 +msgid "Previous Phases" +msgstr "Fase precedente" + +#. module: project_long_term +#: help:project.phase,product_uom:0 +msgid "UoM (Unit of Measure) is the unit of measurement for Duration" +msgstr "U.M. (unità di misura) è l'unità per la misurazione della durata" + +#. 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 "" + +#. 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 "Progetto" + +#. module: project_long_term +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 +#, python-format +msgid "Error!" +msgstr "Errore!" + +#. module: project_long_term +#: selection:project.phase,state:0 +msgid "Cancelled" +msgstr "Annullato" + +#. module: project_long_term +#: help:project.resource.allocation,date_end:0 +msgid "Ending Date" +msgstr "Data fine" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Planning" +msgstr "Pianificazione" + +#. module: project_long_term +#: field:project.phase,constraint_date_end:0 +msgid "Deadline" +msgstr "Scadenza" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "_Cancel" +msgstr "_Annulla" + +#. 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 "" + +#. module: project_long_term +#: code:addons/project_long_term/project_long_term.py:195 +#, python-format +msgid " (copy)" +msgstr " (copia)" + +#. module: project_long_term +#: view:project.phase:0 +#: view:project.resource.allocation:0 +#: field:project.resource.allocation,useability:0 +msgid "Availability" +msgstr "Disponibilità" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,state:0 +msgid "State" +msgstr "Stato" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "C_ompute" +msgstr "C_alcola" + +#. module: project_long_term +#: view:project.compute.phases:0 +msgid "Compute Scheduling of phases for all or specified project" +msgstr "" + +#. module: project_long_term +#: field:project.phase,product_uom:0 +msgid "Duration UoM" +msgstr "U.M. durata" + +#. 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 "" + +#. module: project_long_term +#: field:project.phase,constraint_date_start:0 +msgid "Minimum Start Date" +msgstr "Data inizio minima" + +#. 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 "Allocazione risorse progetto" + +#. module: project_long_term +#: view:project.compute.tasks:0 +msgid "Compute Scheduling of Task" +msgstr "" + +#. 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 "Risorse" + +#. 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 "" + +#. module: project_long_term +#: help:project.resource.allocation,date_start:0 +msgid "Starting Date" +msgstr "Data di inizio" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.project_phase_task_list +msgid "Related Tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Dates" +msgstr "Date" + +#. module: project_long_term +#: help:project.resource.allocation,useability:0 +msgid "" +"Availability of this resource for this project phase in percentage (=50%)" +msgstr "" +"Disponibilità di questa risorsa per questa fase di progetto in percentuale " +"(=50%)" + +#. module: project_long_term +#: help:project.phase,constraint_date_start:0 +msgid "force the phase to start after this date" +msgstr "forza l'inizio della fase dopo questa data" + +#. module: project_long_term +#: field:project.phase,task_ids:0 +msgid "Project Tasks" +msgstr "Attività del Progetto" + +#. module: project_long_term +#: field:project.phase,resource_ids:0 +msgid "Project Resources" +msgstr "Risorse progetto" + +#. module: project_long_term +#: view:project.schedule.tasks:0 +msgid "_Ok" +msgstr "_Ok" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Schedule and Display info" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Month" +msgstr "Mese" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Phase start-date must be lower than phase end-date." +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: field:project.phase,date_start:0 +#: field:project.resource.allocation,date_start:0 +msgid "Start Date" +msgstr "Data inizio" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Resource Allocation" +msgstr "Allocazione risorsa" + +#. module: project_long_term +#: help:project.phase,constraint_date_end:0 +msgid "force the phase to finish before this date" +msgstr "forza la fine della fase dopo questa data" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Draft" +msgstr "Bozza" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Pending" +msgstr "In sospeso" + +#. module: project_long_term +#: field:project.resource.allocation,name:0 +msgid "unknown" +msgstr "sconosciuto" + +#. module: project_long_term +#: field:project.resource.allocation,user_id:0 +msgid "User" +msgstr "Utente" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Task Detail" +msgstr "Dettaglio dell'attività" + +#. module: project_long_term +#: help:project.project,resource_calendar_id:0 +msgid "Timetable working hours to adjust the gantt diagram report" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_tasks +msgid "Project Compute Tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Constraints" +msgstr "Vincoli" + +#. module: project_long_term +#: help:project.phase,sequence:0 +msgid "Gives the sequence order when displaying a list of phases." +msgstr "Fornisce l'ordinamento quando viene visualizzata la lista di fasi." + +#. 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 "Fasi progetto" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Done" +msgstr "Completato" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Cancel" +msgstr "Annulla" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "In Progress" +msgstr "In corso" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Remaining Hours" +msgstr "Ore Rimanenti" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,responsible_id:0 +msgid "Responsible" +msgstr "Responsabile" + +#. module: project_long_term +#: field:project.project,resource_calendar_id:0 +msgid "Working Time" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Current" +msgstr "Attuale" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Start Phase" +msgstr "Inizia fase" + +#. 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 "Prego specificare il progetto da pianificare" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,total_hours:0 +msgid "Total Hours" +msgstr "Ore Totali" + +#. module: project_long_term +#: view:project.schedule.tasks:0 +msgid "Task Scheduling completed successfully." +msgstr "Attività pianificata completata con successo." + +#. module: project_long_term +#: view:project.compute.tasks:0 +msgid "Compute Scheduling of Task for specified project." +msgstr "" + +#. module: project_long_term +#: view:project.resource.allocation:0 +msgid "Phase" +msgstr "Fase" + +#. 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 "" + +#. module: project_long_term +#: field:project.phase,date_end:0 +#: field:project.resource.allocation,date_end:0 +msgid "End Date" +msgstr "Data fine" + +#. module: project_long_term +#: view:project.resource.allocation:0 +#: field:project.resource.allocation,resource_id:0 +msgid "Resource" +msgstr "Risorsa" + +#. module: project_long_term +#: field:project.phase,name:0 +msgid "Name" +msgstr "Nome" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "Dettagli Attività" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar +msgid "Working Period" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_resource_resource +msgid "Resource Detail" +msgstr "Dettaglio risorsa" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_phase_schedule +msgid "Scheduling" +msgstr "Pianificazione" + +#. 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 "Fase progetto" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_phases +msgid "Project Compute Phases" +msgstr "" + +#. module: project_long_term +#: field:project.schedule.tasks,msg:0 +msgid "Message" +msgstr "Messaggio" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Loops in phases not allowed" +msgstr "Le fasi circolari non sono permesse" + +#. module: project_long_term +#: field:project.phase,sequence:0 +msgid "Sequence" +msgstr "SequenzaC" + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute All Projects" +msgstr "Calcola tutti i progetti" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves +msgid "Resource Leaves" +msgstr "" + +#. 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 "Pianifica attività" + +#. module: project_long_term +#: help:project.phase,duration:0 +msgid "By default in days" +msgstr "Per default in giorni" + +#. module: project_long_term +#: field:project.phase,duration:0 +msgid "Duration" +msgstr "Durata" + +#, python-format +#~ msgid "No tasks to compute for Project '%s'." +#~ msgstr "Nessuna attività da calcolare per il progetto: \"%s\"." + +#, python-format +#~ msgid "You must assign a responsible person for phase '%s' !" +#~ msgstr "" +#~ "E' necessario assegnare una persona responsabile per la fase: \"%s\"!" + +#, python-format +#~ msgid "Error" +#~ msgstr "Errore" + +#, python-format +#~ msgid "No tasks to compute for Phase '%s'." +#~ msgstr "Nessuna attività da calcolare per la fase: \"%s\"." + +#, python-format +#~ msgid "No responsible person assigned !" +#~ msgstr "Nessuna persona responsabile assegnata!" diff --git a/addons/project_long_term/i18n/lv.po b/addons/project_long_term/i18n/lv.po index 508efda1634..cf0bf49126c 100644 --- a/addons/project_long_term/i18n/lv.po +++ b/addons/project_long_term/i18n/lv.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-12-21 19:44+0000\n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" "PO-Revision-Date: 2010-12-31 10:24+0000\n" "Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Latvian <lv@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-01-01 05:05+0000\n" -"X-Generator: Launchpad (build Unknown)\n" +"X-Launchpad-Export-Date: 2011-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" #. module: project_long_term #: model:ir.module.module,shortdesc:project_long_term.module_meta_information @@ -60,6 +60,11 @@ msgid "Resources Allocation" msgstr "Resursu iedalīšana" #. module: project_long_term +#: view:project.phase:0 +msgid "Displaying settings" +msgstr "" + +#. module: project_long_term #: field:project.compute.phases,target_project:0 msgid "Schedule" msgstr "Grafiks" @@ -103,7 +108,7 @@ msgid "Error! You cannot assign escalation to the same project!" msgstr "Kļūda! Nedrīkst piešķirt eskalāciju uz to pašu projektu!" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:133 #, python-format msgid "Day" msgstr "Diena" @@ -130,6 +135,12 @@ msgid "UoM (Unit of Measure) is the unit of measurement for Duration" msgstr "Mērv. (mērvienība) ir ilguma mērvienība" #. 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 "" + +#. 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 @@ -142,7 +153,7 @@ msgid "Project" msgstr "Projekts" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Error!" msgstr "Kļūda!" @@ -153,23 +164,11 @@ msgid "Cancelled" msgstr "Atcelts" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Project '%s'." -msgstr "Projektam '%s' nav uzdevumu ko aprēķināt." - -#. module: project_long_term #: help:project.resource.allocation,date_end:0 msgid "Ending Date" msgstr "Beigu Datums" #. 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 "" - -#. module: project_long_term #: view:project.phase:0 msgid "Planning" msgstr "Plānošana" @@ -192,12 +191,13 @@ msgid "Compute Phase Scheduling" msgstr "Aprēķināt fāzes grafiku" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:195 #, 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" @@ -307,6 +307,18 @@ msgstr "_Labi" #. module: project_long_term #: view:project.phase:0 +msgid "Schedule and Display info" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: view:project.phase:0 msgid "Month" msgstr "Mēnesis" @@ -321,6 +333,17 @@ 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 "" + +#. module: project_long_term #: field:project.phase,date_start:0 #: field:project.resource.allocation,date_start:0 msgid "Start Date" @@ -343,17 +366,6 @@ msgid "Draft" msgstr "Melnraksts" #. 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 ones, 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 it." -msgstr "" - -#. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "Pending" @@ -385,30 +397,6 @@ msgid "Project Compute Tasks" msgstr "Projekts - aprēķināt uzdevumus" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No responsible person assigned !" -msgstr "Nav nozīmēta atbildīgā persona!" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Error" -msgstr "Kļūda" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "You must assign a responsible person for phase '%s' !" -msgstr "Fāzei '%s' jānozīmē atbildīgo personu!" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Should have Resources Allocation or Project Members!" -msgstr "Nepieciešama resursu iedalīšana vai projekta dalībnieki!" - -#. module: project_long_term #: view:project.phase:0 msgid "Constraints" msgstr "Ierobežojumi" @@ -452,11 +440,6 @@ msgstr "Atlikušās Stundas" #. module: project_long_term #: view:project.phase:0 -msgid "Other Info" -msgstr "Cita informācija" - -#. module: project_long_term -#: view:project.phase:0 #: field:project.phase,responsible_id:0 msgid "Responsible" msgstr "Atbildīgais" @@ -477,7 +460,7 @@ msgid "Start Phase" msgstr "Sākt fāzi" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Please Specify Project to be schedule" msgstr "Lūdzu, norādiet plānojamo projektu" @@ -504,14 +487,6 @@ msgid "Phase" msgstr "Fāze" #. module: project_long_term -#: help:project.phase,date_start:0 -msgid "" -"It's computed according to the phases order : the start date of the 1st " -"phase is set by you while the other start dates depend on the end date of " -"their previous phases" -msgstr "" - -#. module: project_long_term #: help:project.phase,state:0 msgid "" "If the phase is created the state 'Draft'.\n" @@ -539,6 +514,11 @@ msgid "Name" msgstr "Nosaukums" #. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "" + +#. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar msgid "Working Period" msgstr "Darba laiks" @@ -550,17 +530,10 @@ msgstr "Resursa informācija" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_phase_schedule -#: view:project.phase:0 msgid "Scheduling" msgstr "Plānošana" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Phase '%s'." -msgstr "Fāzei '%s' nav uzdevumu ko aprēķināt" - -#. 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 @@ -619,5 +592,32 @@ msgstr "Ilgums" #~ msgid "Ending Date of the phase" #~ msgstr "Fāzes beigu datums" +#, python-format +#~ msgid "No tasks to compute for Project '%s'." +#~ msgstr "Projektam '%s' nav uzdevumu ko aprēķināt." + +#, python-format +#~ msgid "Error" +#~ msgstr "Kļūda" + +#, python-format +#~ msgid "No responsible person assigned !" +#~ msgstr "Nav nozīmēta atbildīgā persona!" + +#~ msgid "Other Info" +#~ msgstr "Cita informācija" + #~ msgid "Starting Date of the phase" #~ msgstr "Fāzes sākuma datums" + +#, python-format +#~ msgid "No tasks to compute for Phase '%s'." +#~ msgstr "Fāzei '%s' nav uzdevumu ko aprēķināt" + +#, python-format +#~ msgid "Should have Resources Allocation or Project Members!" +#~ msgstr "Nepieciešama resursu iedalīšana vai projekta dalībnieki!" + +#, python-format +#~ msgid "You must assign a responsible person for phase '%s' !" +#~ msgstr "Fāzei '%s' jānozīmē atbildīgo personu!" diff --git a/addons/project_long_term/i18n/pl.po b/addons/project_long_term/i18n/pl.po index 7f9ba5b37ef..f238d1b287a 100644 --- a/addons/project_long_term/i18n/pl.po +++ b/addons/project_long_term/i18n/pl.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-12-21 19:44+0000\n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" "PO-Revision-Date: 2010-12-31 11:08+0000\n" -"Last-Translator: Sbh (Open ERP) <sbh@tinyerp.com>\n" +"Last-Translator: Bhumika Shrimali (OpenERP) <sbh@tinyerp.com>\n" "Language-Team: Polish <pl@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-01-01 05:05+0000\n" -"X-Generator: Launchpad (build Unknown)\n" +"X-Launchpad-Export-Date: 2011-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" #. module: project_long_term #: model:ir.module.module,shortdesc:project_long_term.module_meta_information @@ -60,6 +60,11 @@ msgid "Resources Allocation" msgstr "Alokacja zasobów" #. module: project_long_term +#: view:project.phase:0 +msgid "Displaying settings" +msgstr "" + +#. module: project_long_term #: field:project.compute.phases,target_project:0 msgid "Schedule" msgstr "Harmonogram" @@ -103,7 +108,7 @@ msgid "Error! You cannot assign escalation to the same project!" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:133 #, python-format msgid "Day" msgstr "Dzień" @@ -130,6 +135,12 @@ msgid "UoM (Unit of Measure) is the unit of measurement for Duration" msgstr "JM (Jednostka Miary) jest jednostką miary dla czasu trwania" #. 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 "" + +#. 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 @@ -142,7 +153,7 @@ msgid "Project" msgstr "Projekt" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Error!" msgstr "Błąd!" @@ -153,23 +164,11 @@ msgid "Cancelled" msgstr "Anulowano" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Project '%s'." -msgstr "Brak zadań do obliczeń w Projekcie '%s'" - -#. module: project_long_term #: help:project.resource.allocation,date_end:0 msgid "Ending Date" msgstr "Data końcowa" #. 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 "Końcowa data fazy" - -#. module: project_long_term #: view:project.phase:0 msgid "Planning" msgstr "Planowanie" @@ -192,12 +191,13 @@ msgid "Compute Phase Scheduling" msgstr "Oblicz planowanie fazy" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:195 #, python-format msgid " (copy)" msgstr " (kopia)" #. module: project_long_term +#: view:project.phase:0 #: view:project.resource.allocation:0 #: field:project.resource.allocation,useability:0 msgid "Availability" @@ -307,6 +307,18 @@ msgstr "" #. module: project_long_term #: view:project.phase:0 +msgid "Schedule and Display info" +msgstr "" + +#. 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 "" + +#. module: project_long_term +#: view:project.phase:0 msgid "Month" msgstr "Miesiąc" @@ -321,6 +333,17 @@ msgid "project.schedule.tasks" msgstr "" #. 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 "" + +#. module: project_long_term #: field:project.phase,date_start:0 #: field:project.resource.allocation,date_start:0 msgid "Start Date" @@ -343,17 +366,6 @@ msgid "Draft" msgstr "Projekt" #. 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 ones, 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 it." -msgstr "" - -#. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "Pending" @@ -386,30 +398,6 @@ msgid "Project Compute Tasks" msgstr "Obliczanie zadań projektu" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No responsible person assigned !" -msgstr "Nie przypisano osoby odpowiedzialnej" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Error" -msgstr "Błąd" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "You must assign a responsible person for phase '%s' !" -msgstr "Musisz podać osobę odpowiedzialną za fazę '%s' !" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Should have Resources Allocation or Project Members!" -msgstr "Musi być Alokacja zasobów lub Członkowie projektu!" - -#. module: project_long_term #: view:project.phase:0 msgid "Constraints" msgstr "Ograniczenia" @@ -453,11 +441,6 @@ msgstr "Pozostałe godziny" #. module: project_long_term #: view:project.phase:0 -msgid "Other Info" -msgstr "Inne informacje" - -#. module: project_long_term -#: view:project.phase:0 #: field:project.phase,responsible_id:0 msgid "Responsible" msgstr "Odpowiedzialny" @@ -478,7 +461,7 @@ msgid "Start Phase" msgstr "Rozpocznij fazę" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Please Specify Project to be schedule" msgstr "Wybierz projekt do zaplanowania" @@ -505,14 +488,6 @@ msgid "Phase" msgstr "Faza" #. module: project_long_term -#: help:project.phase,date_start:0 -msgid "" -"It's computed according to the phases order : the start date of the 1st " -"phase is set by you while the other start dates depend on the end date of " -"their previous phases" -msgstr "" - -#. module: project_long_term #: help:project.phase,state:0 msgid "" "If the phase is created the state 'Draft'.\n" @@ -545,6 +520,11 @@ msgid "Name" msgstr "Nazwa" #. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "" + +#. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar msgid "Working Period" msgstr "Godziny pracy" @@ -556,17 +536,10 @@ msgstr "Szczegóły zasobu" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_phase_schedule -#: view:project.phase:0 msgid "Scheduling" msgstr "Harmonogram" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Phase '%s'." -msgstr "Brak zadań do obliczania dla Fazy '%s'." - -#. 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 @@ -634,6 +607,10 @@ msgstr "Czas trwania" #~ msgid "Error! You can not create recursive analytic accounts." #~ msgstr "Błąd! Nie możesz tworzyć rekurencyjnych kont analitycznych" +#, python-format +#~ msgid "Error" +#~ msgstr "Błąd" + #~ msgid "Error ! You can not create recursive Menu." #~ msgstr "Błąd ! Nie możesz tworzyć rekurencyjnych menu." @@ -646,6 +623,39 @@ msgstr "Czas trwania" #~ "Nazwa obiektu musi zaczynać się od x_ oraz nie może zawierać znaków " #~ "specjalnych !" +#~ msgid "Other Info" +#~ msgstr "Inne informacje" + +#~ msgid "Starting Date of the phase" +#~ msgstr "Data rozpoczęcia fazy" + +#, python-format +#~ msgid "No tasks to compute for Project '%s'." +#~ msgstr "Brak zadań do obliczeń w Projekcie '%s'" + +#~ msgid "Ending Date of the phase" +#~ msgstr "Końcowa data fazy" + +#, python-format +#~ msgid "No responsible person assigned !" +#~ msgstr "Nie przypisano osoby odpowiedzialnej" + +#, python-format +#~ msgid "Should have Resources Allocation or Project Members!" +#~ msgstr "Musi być Alokacja zasobów lub Członkowie projektu!" + +#, python-format +#~ msgid "You must assign a responsible person for phase '%s' !" +#~ msgstr "Musisz podać osobę odpowiedzialną za fazę '%s' !" + +#, python-format +#~ msgid "No tasks to compute for Phase '%s'." +#~ msgstr "Brak zadań do obliczania dla Fazy '%s'." + +#~ msgid "" +#~ "It's computed by the scheduler according to the start date and the duration." +#~ msgstr "Końcowa data fazy" + #~ msgid "" #~ "It's computed according to the phases order : the start date of the 1st " #~ "phase is set by you while the other start dates depend on the end date of " diff --git a/addons/project_long_term/i18n/project_long_term.pot b/addons/project_long_term/i18n/project_long_term.pot index cfacf155fc5..82442f17b6c 100644 --- a/addons/project_long_term/i18n/project_long_term.pot +++ b/addons/project_long_term/i18n/project_long_term.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 6.0.0-rc2\n" "Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2011-01-03 16:58:18+0000\n" -"PO-Revision-Date: 2011-01-03 16:58:18+0000\n" +"POT-Creation-Date: 2011-01-11 11:15:54+0000\n" +"PO-Revision-Date: 2011-01-11 11:15:54+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -99,7 +99,7 @@ msgid "Error! You cannot assign escalation to the same project!" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:130 +#: code:addons/project_long_term/project_long_term.py:133 #, python-format msgid "Day" msgstr "" @@ -126,12 +126,6 @@ msgid "UoM (Unit of Measure) is the unit of measurement for Duration" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:489 -#, python-format -msgid "Resources should be allocated to your phases and Members should be assigned to your Project!" -msgstr "" - -#. 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 "" @@ -160,12 +154,6 @@ msgid "Cancelled" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:426 -#, python-format -msgid "No tasks to compute for Project '%s'." -msgstr "" - -#. module: project_long_term #: help:project.resource.allocation,date_end:0 msgid "Ending Date" msgstr "" @@ -193,7 +181,7 @@ msgid "Compute Phase Scheduling" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:192 +#: code:addons/project_long_term/project_long_term.py:195 #, python-format msgid " (copy)" msgstr "" @@ -310,6 +298,11 @@ msgid "Schedule and Display info" msgstr "" #. 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 "" + +#. module: project_long_term #: view:project.phase:0 msgid "Month" msgstr "" @@ -368,11 +361,6 @@ msgid "User" msgstr "" #. module: project_long_term -#: help:project.phase,date_start:0 -msgid "It's computed according to the phases order : the start date of the 1st phase is set by you while the other start dates depend on the end date of their previous phases" -msgstr "" - -#. module: project_long_term #: view:project.phase:0 msgid "Task Detail" msgstr "" @@ -388,24 +376,6 @@ msgid "Project Compute Tasks" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:244 -#, python-format -msgid "No responsible person assigned !" -msgstr "" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:489 -#, python-format -msgid "Error" -msgstr "" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:244 -#, python-format -msgid "You must assign a responsible person for phase '%s' !" -msgstr "" - -#. module: project_long_term #: view:project.phase:0 msgid "Constraints" msgstr "" @@ -541,12 +511,6 @@ msgid "Scheduling" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:329 -#, python-format -msgid "No tasks to compute for Phase '%s'." -msgstr "" - -#. 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 diff --git a/addons/project_long_term/i18n/pt.po b/addons/project_long_term/i18n/pt.po index 2d24cac1e7a..6f6759287b8 100644 --- a/addons/project_long_term/i18n/pt.po +++ b/addons/project_long_term/i18n/pt.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2010-12-21 19:44+0000\n" -"PO-Revision-Date: 2010-12-31 11:07+0000\n" -"Last-Translator: Sbh (Open ERP) <sbh@tinyerp.com>\n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2011-01-13 23:26+0000\n" +"Last-Translator: Bhumika Shrimali (OpenERP) <sbh@tinyerp.com>\n" "Language-Team: Portuguese <pt@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-01-01 05:05+0000\n" -"X-Generator: Launchpad (build Unknown)\n" +"X-Launchpad-Export-Date: 2011-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" #. module: project_long_term #: model:ir.module.module,shortdesc:project_long_term.module_meta_information @@ -60,6 +60,11 @@ msgid "Resources Allocation" msgstr "" #. module: project_long_term +#: view:project.phase:0 +msgid "Displaying settings" +msgstr "" + +#. module: project_long_term #: field:project.compute.phases,target_project:0 msgid "Schedule" msgstr "" @@ -103,7 +108,7 @@ msgid "Error! You cannot assign escalation to the same project!" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:133 #, python-format msgid "Day" msgstr "Dia" @@ -130,6 +135,12 @@ msgid "UoM (Unit of Measure) is the unit of measurement for Duration" msgstr "" #. 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 "" + +#. 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 @@ -142,7 +153,7 @@ msgid "Project" msgstr "Projeto" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Error!" msgstr "Erro!" @@ -153,23 +164,11 @@ msgid "Cancelled" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Project '%s'." -msgstr "" - -#. module: project_long_term #: help:project.resource.allocation,date_end:0 msgid "Ending Date" msgstr "Data de fim" #. 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 "Data de fim da fase" - -#. module: project_long_term #: view:project.phase:0 msgid "Planning" msgstr "Planeamento" @@ -192,12 +191,13 @@ msgid "Compute Phase Scheduling" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 +#: code:addons/project_long_term/project_long_term.py:195 #, python-format msgid " (copy)" msgstr " (cópia)" #. module: project_long_term +#: view:project.phase:0 #: view:project.resource.allocation:0 #: field:project.resource.allocation,useability:0 msgid "Availability" @@ -307,6 +307,18 @@ msgstr "" #. module: project_long_term #: view:project.phase:0 +msgid "Schedule and Display info" +msgstr "" + +#. 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 "Data de início da fase" + +#. module: project_long_term +#: view:project.phase:0 msgid "Month" msgstr "Mês" @@ -321,6 +333,17 @@ 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 "" + +#. module: project_long_term #: field:project.phase,date_start:0 #: field:project.resource.allocation,date_start:0 msgid "Start Date" @@ -343,17 +366,6 @@ msgid "Draft" msgstr "Rascunho" #. 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 ones, 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 it." -msgstr "" - -#. module: project_long_term #: view:project.phase:0 #: selection:project.phase,state:0 msgid "Pending" @@ -385,30 +397,6 @@ msgid "Project Compute Tasks" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No responsible person assigned !" -msgstr "" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Error" -msgstr "Erro" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "You must assign a responsible person for phase '%s' !" -msgstr "" - -#. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "Should have Resources Allocation or Project Members!" -msgstr "" - -#. module: project_long_term #: view:project.phase:0 msgid "Constraints" msgstr "" @@ -452,11 +440,6 @@ msgstr "Horas restantes" #. module: project_long_term #: view:project.phase:0 -msgid "Other Info" -msgstr "Outras informações" - -#. module: project_long_term -#: view:project.phase:0 #: field:project.phase,responsible_id:0 msgid "Responsible" msgstr "Responsável" @@ -477,7 +460,7 @@ msgid "Start Phase" msgstr "Iniciar fase" #. module: project_long_term -#: code:addons/project_long_term/wizard/project_compute_phases.py:0 +#: code:addons/project_long_term/wizard/project_compute_phases.py:50 #, python-format msgid "Please Specify Project to be schedule" msgstr "" @@ -504,14 +487,6 @@ msgid "Phase" msgstr "Fase" #. module: project_long_term -#: help:project.phase,date_start:0 -msgid "" -"It's computed according to the phases order : the start date of the 1st " -"phase is set by you while the other start dates depend on the end date of " -"their previous phases" -msgstr "Data de início da fase" - -#. module: project_long_term #: help:project.phase,state:0 msgid "" "If the phase is created the state 'Draft'.\n" @@ -539,6 +514,11 @@ msgid "Name" msgstr "Nome" #. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "" + +#. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar msgid "Working Period" msgstr "" @@ -550,17 +530,10 @@ msgstr "" #. module: project_long_term #: model:ir.ui.menu,name:project_long_term.menu_phase_schedule -#: view:project.phase:0 msgid "Scheduling" msgstr "" #. module: project_long_term -#: code:addons/project_long_term/project_long_term.py:0 -#, python-format -msgid "No tasks to compute for Phase '%s'." -msgstr "" - -#. 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 @@ -615,3 +588,26 @@ msgstr "" #: field:project.phase,duration:0 msgid "Duration" msgstr "Duração" + +#, python-format +#~ msgid "Error" +#~ msgstr "Erro" + +#~ msgid "Other Info" +#~ msgstr "Outras informações" + +#~ msgid "Starting Date of the phase" +#~ msgstr "Data de início da fase" + +#~ msgid "Ending Date of the phase" +#~ msgstr "Data de fim da fase" + +#~ msgid "" +#~ "It's computed by the scheduler according to the start date and the duration." +#~ msgstr "Data de fim da fase" + +#~ msgid "" +#~ "It's computed according to the phases order : the start date of the 1st " +#~ "phase is set by you while the other start dates depend on the end date of " +#~ "their previous phases" +#~ msgstr "Data de início da fase" diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index 45d75b16b05..0e605ed4331 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -19,12 +19,10 @@ # ############################################################################## -from datetime import datetime, timedelta -from dateutil.relativedelta import relativedelta +from datetime import datetime from tools.translate import _ from osv import fields, osv -from resource.faces import task as Task -import operator +from resource.faces import task as Task class project_phase(osv.osv): _name = "project.phase" @@ -105,7 +103,7 @@ class project_phase(osv.osv): _columns = { 'name': fields.char("Name", size=64, required=True), - 'date_start': fields.date('Start Date', help="It's computed according to the phases order : the start date of the 1st phase is set by you while the other start dates depend on the end date of their previous phases", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'date_start': fields.date('Start Date', help="It's computed by the scheduler according the project date or the end date of the previous phase.", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'date_end': fields.date('End Date', help=" It's computed by the scheduler according to the start date and the duration.", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'constraint_date_start': fields.date('Minimum Start Date', help='force the phase to start after this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'constraint_date_end': fields.date('Deadline', help='force the phase to finish before this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), @@ -212,126 +210,177 @@ class project_phase(osv.osv): self.write(cr, uid, ids, {'state': 'done'}) return True - def generate_resources(self, cr, uid, ids, context=None): - """ - Return a list of Resource Class objects for the resources allocated to the phase. - """ - res = {} - resource_pool = self.pool.get('resource.resource') - for phase in self.browse(cr, uid, ids, context=context): - user_ids = map(lambda x:x.resource_id.user_id.id, phase.resource_ids) - project = phase.project_id - calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False - resource_objs = resource_pool.generate_resources(cr, uid, user_ids, calendar_id, context=context) - res[phase.id] = resource_objs - return res - - def generate_schedule(self, cr, uid, ids, start_date=False, calendar_id=False, context=None): - """ - Schedule phase with the start date till all the next phases are completed. - @param: start_date (datetime.datetime) : start date for the phase. It would be either Start date of phase or start date of project or system current date - @param: calendar_id : working calendar of the project - """ + def generate_phase(self, cr, uid, ids, f, parent=False, context=None): if context is None: context = {} - resource_pool = self.pool.get('resource.resource') + phase_ids = [] data_pool = self.pool.get('ir.model.data') - resource_allocation_pool = self.pool.get('project.resource.allocation') uom_pool = self.pool.get('product.uom') + task_pool = self.pool.get('project.task') data_model, day_uom_id = data_pool.get_object_reference(cr, uid, 'product', 'uom_day') for phase in self.browse(cr, uid, ids, context=context): - if not phase.responsible_id: - raise osv.except_osv(_('No responsible person assigned !'),_("You must assign a responsible person for phase '%s' !") % (phase.name,)) - - if not start_date: - start_date = phase.project_id.date_start or phase.date_start or datetime.now().strftime("%Y-%m-%d") - start_date = datetime.strftime((datetime.strptime(start_date, "%Y-%m-%d")), "%Y-%m-%d") - phase_resource_obj = self.generate_resources(cr, uid, [phase.id], context=context)[phase.id] avg_days = uom_pool._compute_qty(cr, uid, phase.product_uom.id, phase.duration, day_uom_id) - if not phase_resource_obj: #TOCHECK: why need this ? - avg_days = avg_days - 1 duration = str(avg_days) + 'd' # Create a new project for each phase - def Project(): - # If project has working calendar then that - # else the default one would be considered - start = start_date - minimum_time_unit = 1 - resource = phase_resource_obj - working_hours_per_day = 24 - vacation = [] - if calendar_id: - working_hours_per_day = 8 #TODO: it should be come from calendars - vacation = tuple(resource_pool.compute_vacation(cr, uid, calendar_id)) - working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) - def phase(): - effort = duration - - project = Task.BalancedProject(Project) - - s_date = project.phase.start.to_datetime() - e_date = project.phase.end.to_datetime() + str_resource = ('%s & '*len(phase.resource_ids))[:-2] + str_vals = str_resource % tuple(map(lambda x: 'Resource_%s'%x.resource_id.id, phase.resource_ids)) + + # Phases Defination for the Project + s = ''' + def Phase_%s(): + title = \"%s\" + effort = \'%s\' + resource = %s +'''%(phase.id, phase.name, duration, str_vals or False) + # Recalculate date_start and date_end # according to constraints on date start and date end on phase - if phase.constraint_date_start and str(s_date) < phase.constraint_date_start: + start_date = '' + end_date = '' + if phase.constraint_date_start: start_date = datetime.strptime(phase.constraint_date_start, '%Y-%m-%d') + s += ''' + start = \"%s\" +'''%(datetime.strftime(start_date, "%Y-%m-%d")) else: - start_date = s_date - if phase.constraint_date_end and str(e_date) > phase.constraint_date_end: + if parent: + start = 'up.Phase_%s.end' % (parent.id) + s += ''' + start = %s +'''%(start) + else: + start = phase.project_id.date_start or phase.date_start + s += ''' + start = \"%s\" +'''%(start) + + if phase.constraint_date_end : end_date= datetime.strptime(phase.constraint_date_end, '%Y-%m-%d') - date_start = phase.constraint_date_end - else: - end_date = e_date - date_start = end_date - # Write the calculated dates back - ctx = context.copy() - ctx.update({'scheduler': True}) - self.write(cr, uid, [phase.id], { - 'date_start': start_date.strftime('%Y-%m-%d'), - 'date_end': end_date.strftime('%Y-%m-%d') - }, context=ctx) - # write dates into Resources Allocation - for resource in phase.resource_ids: - resource_allocation_pool.write(cr, uid, [resource.id], { - 'date_start': start_date.strftime('%Y-%m-%d'), - 'date_end': end_date.strftime('%Y-%m-%d') - }, context=ctx) + s += ''' + end = \"%s\" +'''%(datetime.strftime(end_date, "%Y-%m-%d")) + + + #start = datetime.strftime((datetime.strptime(start, "%Y-%m-%d")), "%Y-%m-%d") + + phase_ids.append(phase.id) + parent = False + task_ids = [] + todo_task_ids = task_pool.search(cr, uid, [('id', 'in', map(lambda x : x.id, phase.task_ids)), + ('state', 'in', ['draft', 'open', 'pending']) + ], order='sequence') + if todo_task_ids : + for task in task_pool.browse(cr, uid, todo_task_ids, context=context): + s += task_pool.generate_task(cr, uid, task.id, parent=parent, flag=False, context=context) + if not parent: + parent = task + task_ids.append(task.id) + + f += s + '\n' # Recursive call till all the next phases scheduled for next_phase in phase.next_phase_ids: - if next_phase.state in ['draft', 'open', 'pending']: - id_cal = next_phase.project_id.resource_calendar_id and next_phase.project_id.resource_calendar_id.id or False - self.generate_schedule(cr, uid, [next_phase.id], date_start+timedelta(days=1), id_cal, context=context) - else: - continue - return True + if next_phase.state in ['draft', 'open', 'pending']: + rf, rphase_ids = self.generate_phase(cr, uid, [next_phase.id], f = '', parent=phase, context=context) + f += rf +'\n' + phase_ids += rphase_ids + else: + continue + return f, phase_ids def schedule_tasks(self, cr, uid, ids, context=None): """ - Schedule the tasks according to resource available and priority. + Schedule tasks base on faces lib """ + if context is None: + context = {} + if type(ids) in (long, int,): + ids = [ids] task_pool = self.pool.get('project.task') resource_pool = self.pool.get('resource.resource') - resources_list = self.generate_resources(cr, uid, ids, context=context) - return_msg = {} for phase in self.browse(cr, uid, ids, context=context): - start_date = phase.date_start - if not start_date and phase.project_id.date_start: - start_date = phase.project_id.date_start - if not start_date: - start_date = datetime.now().strftime("%Y-%m-%d") - resources = resources_list.get(phase.id, []) - calendar_id = phase.project_id.resource_calendar_id.id - task_ids = map(lambda x : x.id, (filter(lambda x : x.state in ['draft'] , phase.task_ids))) #reassign only task not yet started - if task_ids: - task_pool.generate_schedule(cr, uid, task_ids, resources, calendar_id, start_date, context=context) - - if not task_ids: - warning_msg = _("No tasks to compute for Phase '%s'.") % (phase.name) - if "warning" not in return_msg: - return_msg["warning"] = warning_msg - else: - return_msg["warning"] = return_msg["warning"] + "\n" + warning_msg - return return_msg + project = phase.project_id + calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False + start_date = project.date_start + #Creating resources using the member of the Project + u_ids = [i.id for i in project.members] + resource_objs = resource_pool.generate_resources(cr, uid, u_ids, calendar_id, context=context) + start_date = datetime.strftime((datetime.strptime(start_date, "%Y-%m-%d")), "%Y-%m-%d") + func_str = '' + start = start_date + minimum_time_unit = 1 + # default values + working_hours_per_day = 24 + working_days_per_week = 7 + working_days_per_month = 30 + working_days_per_year = 365 + + vacation = [] + if calendar_id: + working_hours_per_day = 8 #TODO: it should be come from calendars + working_days_per_week = 5 + working_days_per_month = 20 + working_days_per_year = 200 + vacation = tuple(resource_pool.compute_vacation(cr, uid, calendar_id, context=context)) + + working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) + + cls_str = '' + # Creating Resources for the Project + for key, vals in resource_objs.items(): + cls_str +=''' + class Resource_%s(Resource): + title = \"%s\" + vacation = %s + efficiency = %s +'''%(key, vals.get('name',False), vals.get('vacation', False), vals.get('efficiency', False)) + + # Create a new project for each phase + func_str += ''' +def Phase_%d(): + from resource.faces import Resource + title = \"%s\" + start = \'%s\' + minimum_time_unit = %s + working_hours_per_day = %s + working_days_per_week = %s + working_days_per_month = %s + working_days_per_year = %s + vacation = %s + working_days = %s +'''%(phase.id, phase.name, start, minimum_time_unit, working_hours_per_day, working_days_per_week, working_days_per_month, working_days_per_year, vacation, working_days ) + + parent = False + task_ids = [] + todo_task_ids = task_pool.search(cr, uid, [('id', 'in', map(lambda x : x.id, phase.task_ids)), + ('state', 'in', ['draft', 'open', 'pending']) + ], order='sequence') + for task in task_pool.browse(cr, uid, todo_task_ids, context=context): + func_str += task_pool.generate_task(cr, uid, task.id, parent=parent, flag=True, context=context) + if not parent: + parent = task + task_ids.append(task.id) + func_str += cls_str + + # Allocating Memory for the required Project and Pahses and Resources + exec(func_str) + Phase = eval('Phase_%d' % phase.id) + phase = None + try: + phase = Task.BalancedProject(Phase) + except : + raise osv.except_osv(_('Error !'),_('Phase Scheduling is not possible.\nProject should have the Start date and member for scheduling.')) + + + for task_id in task_ids: + task = eval("phase.Task_%d" % task_id) + start_date = task.start.to_datetime() + end_date = task.end.to_datetime() + + task_pool.write(cr, uid, [task_id], { + 'date_start': start_date.strftime('%Y-%m-%d'), + 'date_end': end_date.strftime('%Y-%m-%d') + }, context=context) + return True project_phase() class project_resource_allocation(osv.osv): @@ -383,53 +432,233 @@ class project(osv.osv): def schedule_phases(self, cr, uid, ids, context=None): """ - Schedule the phases. + Schedule phase base on faces lib """ + if context is None: + context = {} if type(ids) in (long, int,): ids = [ids] phase_pool = self.pool.get('project.phase') + task_pool = self.pool.get('project.task') + resource_pool = self.pool.get('resource.resource') + data_pool = self.pool.get('ir.model.data') + resource_allocation_pool = self.pool.get('project.resource.allocation') + data_model, day_uom_id = data_pool.get_object_reference(cr, uid, 'product', 'uom_day') + for project in self.browse(cr, uid, ids, context=context): - phase_ids = phase_pool.search(cr, uid, [('project_id', '=', project.id), + root_phase_ids = phase_pool.search(cr, uid, [('project_id', '=', project.id), ('state', 'in', ['draft', 'open', 'pending']), ('previous_phase_ids', '=', False) ]) calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False - start_date = False - phase_pool.generate_schedule(cr, uid, phase_ids, start_date, calendar_id, context=context) - return True + start_date = project.date_start + #if start_date: + # start_date = datetime.strftime((datetime.strptime(start_date, "%Y-%m-%d")), "%Y-%m-%d") + #Creating resources using the member of the Project + u_ids = [i.id for i in project.members] + resource_objs = resource_pool.generate_resources(cr, uid, u_ids, calendar_id, context=context) + func_str = '' + start = start_date + minimum_time_unit = 1 + # default values + working_hours_per_day = 24 + working_days_per_week = 7 + working_days_per_month = 30 + working_days_per_year = 365 + + vacation = [] + if calendar_id: + working_hours_per_day = 8 #TODO: it should be come from calendars + working_days_per_week = 5 + working_days_per_month = 20 + working_days_per_year = 200 + vacation = tuple(resource_pool.compute_vacation(cr, uid, calendar_id, context=context)) + + working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) + + cls_str = '' + # Creating Resources for the Project + for key, vals in resource_objs.items(): + cls_str +=''' + class Resource_%s(Resource): + title = \"%s\" + vacation = %s + efficiency = %s +'''%(key, vals.get('name',False), vals.get('vacation', False), vals.get('efficiency', False)) + + # Create a new project for each phase + func_str += ''' +def Project_%d(): + from resource.faces import Resource + title = \"%s\" + start = \'%s\' + minimum_time_unit = %s + working_hours_per_day = %s + working_days_per_week = %s + working_days_per_month = %s + working_days_per_year = %s + vacation = %s + working_days = %s +'''%(project.id, project.name, start, minimum_time_unit, working_hours_per_day, working_days_per_week, working_days_per_month, working_days_per_year, vacation, working_days ) + + func_str += cls_str + phase_ids = [] + for root_phase in phase_pool.browse(cr, uid, root_phase_ids, context=context): + phases, child_phase_ids = phase_pool.generate_phase(cr, uid, [root_phase.id], '', context=context) + func_str += phases + phase_ids += child_phase_ids + + # Allocating Memory for the required Project and Pahses and Resources + exec(func_str) + Project = eval('Project_%d' % project.id) + project = None + try: + project = Task.BalancedProject(Project) + except : + raise osv.except_osv(_('Error !'),_('Phase Scheduling is not possible.\nProject should have the Start date and member for scheduling.')) + + for phase_id in phase_ids: + act_phase = phase_pool.browse(cr, uid, phase_id, context=context) + resources = act_phase.resource_ids + phase = eval("project.Phase_%d" % phase_id) + start_date = phase.start.to_datetime() + end_date = phase.end.to_datetime() + + if resources: + for res in resources: + vals = {} + vals.update({'date_start' : start_date }) + vals.update({'date_end' : end_date}) + resource_allocation_pool.write(cr, uid, res.id, vals, context=context) + if act_phase.task_ids: + for task in act_phase.task_ids: + vals = {} + #Getting values of the Tasks + temp = eval("phase.Task_%s"%task.id) + if temp.booked_resource: + res_name = temp.booked_resource[0].title + res_id = resource_pool.search(cr, uid,[('name','=',res_name)], context = context) + if res_id: + res = resource_pool.browse(cr, uid, res_id[0], context = context) + vals.update({'user_id' : res.user_id.id}) + + vals.update({'date_start' : temp.start.strftime('%Y-%m-%d %H:%M:%S')}) + vals.update({'date_end' : temp.end.strftime('%Y-%m-%d %H:%M:%S')}) + task_pool.write(cr, uid, task.id, vals, context=context) + + + phase_pool.write(cr, uid, [phase_id], { + 'date_start': start_date.strftime('%Y-%m-%d'), + 'date_end': end_date.strftime('%Y-%m-%d') + }, context=context) + return True + + #TODO: DO Resource allocation and compute availability + def compute_allocation(self, rc, uid, ids, start_date, end_date, context=None): + if context == None: + context = {} + allocation = {} + return allocation def schedule_tasks(self, cr, uid, ids, context=None): """ - Schedule the tasks according to resource available and priority. + Schedule task base on faces lib """ + if context is None: + context = {} if type(ids) in (long, int,): ids = [ids] - user_pool = self.pool.get('res.users') task_pool = self.pool.get('project.task') resource_pool = self.pool.get('resource.resource') - resources_list = self.generate_members(cr, uid, ids, context=context) - return_msg = {} + data_pool = self.pool.get('ir.model.data') + data_model, day_uom_id = data_pool.get_object_reference(cr, uid, 'product', 'uom_day') + for project in self.browse(cr, uid, ids, context=context): + calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False start_date = project.date_start - if not start_date: - start_date = datetime.now().strftime("%Y-%m-%d") - resources = resources_list.get(project.id, []) - calendar_id = project.resource_calendar_id.id - task_ids = task_pool.search(cr, uid, [('project_id', '=', project.id), - ('state', 'in', ['draft', 'open', 'pending']) - ]) - - - if task_ids: - task_pool.generate_schedule(cr, uid, task_ids, resources, calendar_id, start_date, context=context) - else: - warning_msg = _("No tasks to compute for Project '%s'.") % (project.name) - if "warning" not in return_msg: - return_msg["warning"] = warning_msg - else: - return_msg["warning"] = return_msg["warning"] + "\n" + warning_msg + #Creating resources using the member of the Project + u_ids = [i.id for i in project.members] + resource_objs = resource_pool.generate_resources(cr, uid, u_ids, calendar_id, context=context) + try: + start_date = datetime.strftime((datetime.strptime(start_date, "%Y-%m-%d")), "%Y-%m-%d") + except: + raise osv.except_osv(_('Error !'),_('Task Scheduling is not possible.\nProject should have the Start date for scheduling.')) + func_str = '' + start = start_date + minimum_time_unit = 1 + # default values + working_hours_per_day = 24 + working_days_per_week = 7 + working_days_per_month = 30 + working_days_per_year = 365 + + vacation = [] + if calendar_id: + working_hours_per_day = 8 #TODO: it should be come from calendars + working_days_per_week = 5 + working_days_per_month = 20 + working_days_per_year = 200 + vacation = tuple(resource_pool.compute_vacation(cr, uid, calendar_id, context=context)) - return return_msg + working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) + + cls_str = '' + # Creating Resources for the Project + for key, vals in resource_objs.items(): + cls_str +=''' + class Resource_%s(Resource): + title = \"%s\" + vacation = %s + efficiency = %s +'''%(key, vals.get('name',False), vals.get('vacation', False), vals.get('efficiency', False)) + + # Create a new project for each phase + func_str += ''' +def Project_%d(): + from resource.faces import Resource + title = \"%s\" + start = \'%s\' + minimum_time_unit = %s + working_hours_per_day = %s + working_days_per_week = %s + working_days_per_month = %s + working_days_per_year = %s + vacation = %s + working_days = %s +'''%(project.id, project.name, start, minimum_time_unit, working_hours_per_day, working_days_per_week, working_days_per_month, working_days_per_year, vacation, working_days ) + + parent = False + task_ids = [] + todo_task_ids = task_pool.search(cr, uid, [('project_id', '=', project.id), + ('state', 'in', ['draft', 'open', 'pending']) + ], order='sequence') + if todo_task_ids: + for task in task_pool.browse(cr, uid, todo_task_ids, context=context): + func_str += task_pool.generate_task(cr, uid, task.id, parent=parent, flag=True,context=context) + if not parent: + parent = task + task_ids.append(task.id) + func_str += cls_str + + # Allocating Memory for the required Project and Pahses and Resources + exec(func_str) + Project = eval('Project_%d' % project.id) + project = None + try: + project = Task.BalancedProject(Project) + except : + raise osv.except_osv(_('Error !'),_('Phase Scheduling is not possible.\nProject should have the Start date and member for scheduling.')) + + for task_id in task_ids: + task = eval("project.Task_%d" % task_id) + start_date = task.start.to_datetime() + end_date = task.end.to_datetime() + + task_pool.write(cr, uid, [task_id], { + 'date_start': start_date.strftime('%Y-%m-%d'), + 'date_end': end_date.strftime('%Y-%m-%d') + }, context=context) + return True project() @@ -452,82 +681,36 @@ class project_task(osv.osv): _columns = { 'phase_id': fields.many2one('project.phase', 'Project Phase'), } + _defaults = { + 'user_id' : False + } - def generate_schedule(self, cr, uid, ids, resources, calendar_id, start_date, context=None): - """ - Schedule the tasks according to resource available and priority. - """ - resource_pool = self.pool.get('resource.resource') - if not ids: - return False + def generate_task(self, cr, uid, task_id, parent=False, flag=False, context=None): if context is None: context = {} - user_pool = self.pool.get('res.users') - project_pool = self.pool.get('project.project') - priority_dict = {'0': 1000, '1': 800, '2': 500, '3': 300, '4': 100} - # Create dynamic no of tasks with the resource specified - def create_tasks(task_number, eff, priorty=500, obj=False): - def task(): - """ - task is a dynamic method! - """ - effort = eff - if obj: - resource = obj - priority = priorty - task.__doc__ = "TaskNO%d" %task_number - task.__name__ = "task%d" %task_number - return task - - # Create a 'Faces' project with all the tasks and resources - def Project(): - title = "Project" - start = datetime.strftime(datetime.strptime(start_date, "%Y-%m-%d"), "%Y-%m-%d %H:%M") - try: - resource = reduce(operator.or_, resources) - except: - raise osv.except_osv(_('Error'), _('Resources should be allocated to your phases and Members should be assigned to your Project!')) - minimum_time_unit = 1 - working_hours_per_day = 24 - vacation = [] - if calendar_id: - working_hours_per_day = 8 #TODO: it should be come from calendars - vacation = tuple(resource_pool.compute_vacation(cr, uid, calendar_id, context=context)) - working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) - # Dynamic creation of tasks - task_number = 0 - for openobect_task in self.browse(cr, uid, ids, context=context): - hours = str(openobect_task.planned_hours )+ 'H' - if openobect_task.priority in priority_dict.keys(): - priorty = priority_dict[openobect_task.priority] - real_resource = False - if openobect_task.user_id: - for task_resource in resources: - if task_resource.__name__ == task_resource: - real_resource = task_resource - break - - task = create_tasks(task_number, hours, priorty, real_resource) - task_number += 1 - - - face_projects = Task.BalancedProject(Project) - loop_no = 0 - # Write back the computed dates - for face_project in face_projects: - s_date = face_project.start.to_datetime() - e_date = face_project.end.to_datetime() - if loop_no > 0: - ctx = context.copy() - ctx.update({'scheduler': True}) - user_id = user_pool.search(cr, uid, [('name', '=', face_project.booked_resource[0].__name__)]) - self.write(cr, uid, [ids[loop_no-1]], { - 'date_start': s_date.strftime('%Y-%m-%d %H:%M:%S'), - 'date_end': e_date.strftime('%Y-%m-%d %H:%M:%S'), - 'user_id': user_id[0] - }, context=ctx) - - loop_no += 1 - return True + task = self.browse(cr, uid, task_id, context=context) + duration = str(task.planned_hours )+ 'H' + str_resource = False + if task.phase_id.resource_ids: + str_resource = ('%s | '*len(task.phase_id.resource_ids))[:-2] + str_resource = str_resource % tuple(map(lambda x: 'Resource_%s'%x.resource_id.id, task.phase_id.resource_ids)) + # Task Defination for the Phase of the Project + if not flag: + s = ''' + def Task_%s(): + title = \"%s\" + effort = \'%s\' + resource = %s +'''%(task.id, task.name, duration, str_resource) + #start = datetime.strftime((datetime.strptime(start, "%Y-%m-%d")), "%Y-%m-%d") + else: + s = ''' + def Task_%s(): + title = \"%s\" + effort = \'%s\' + resource = %s +'''%(task.id, task.name, duration, str_resource) + s += '\n' + return s project_task() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project_long_term/project_long_term_demo.xml b/addons/project_long_term/project_long_term_demo.xml index 8a37f4cc444..961b0c62c9b 100644 --- a/addons/project_long_term/project_long_term_demo.xml +++ b/addons/project_long_term/project_long_term_demo.xml @@ -233,9 +233,9 @@ This Demo data file Human Resources, Phases and Resources,Tasks allocation and </record> <!-- run scheduling of phase --> - <function model="project.project" name="schedule_phases" eval="(ref('project.project_integrate_openerp'),)"/> + <!--<function model="project.project" name="schedule_phases" eval="(ref('project.project_integrate_openerp'),)"/>--> <!-- run scheduling of tasks --> - <function model="project.project" name="schedule_tasks" eval="(ref('project.project_integrate_openerp'),)"/> + <!--<function model="project.project" name="schedule_tasks" eval="(ref('project.project_integrate_openerp'),)"/>--> </data> </openerp> diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml index 61e0a7dd7f9..b720da13654 100644 --- a/addons/project_long_term/project_long_term_view.xml +++ b/addons/project_long_term/project_long_term_view.xml @@ -116,10 +116,10 @@ <field name="responsible_id"/> </group> <group colspan="6" col="6"> - <field name="date_start"/> + <field name="date_start" readonly="1"/> <field name="duration"/> <field name="product_uom" nolabel="1" domain="[('category_id.name', '=', 'Working Time')]"/> - <field name="date_end"/> + <field name="date_end" readonly="1"/> </group> </group> <notebook colspan="4"> @@ -127,14 +127,14 @@ <field colspan="4" name="resource_ids" nolabel="1"> <tree editable="bottom" string="Project Resource Allocation"> <field name="resource_id" context="{'project_id':parent.project_id}"/> - <field name="date_start" readonly="1"/> - <field name="date_end" readonly="1"/> + <field name="date_start"/> + <field name="date_end"/> <field name="useability" string="Availability"/> </tree> <form string="Project Resource Allocation"> <field name="resource_id" context="{'project_id':parent.project_id}"/> - <field name="date_start" readonly="1"/> - <field name="date_end" readonly="1"/> + <field name="date_start" /> + <field name="date_end"/> <field name="useability" string="Availability"/> </form> </field> @@ -154,6 +154,8 @@ <field name="sequence"/> <field name="name"/> <field name="user_id"/> + <field name="date_start"/> + <field name="date_end" /> <field name="planned_hours" widget="float_time"/> <field name="project_id" invisible="1"/> <field name="total_hours" sum='Total Hours'/> @@ -172,6 +174,7 @@ <group colspan="2" col="2"> <separator string="Dates" colspan="2"/> <field name="date_start"/> + <field name="date_end" /> <field name="date_deadline"/> </group> <group colspan="2" col="2"> @@ -225,6 +228,7 @@ <field name="date_end"/> <field name="duration"/> <field name="state"/> + <button name="%(action_project_schedule_tasks)d" string="Schedule Tasks" type="action" icon="gtk-jump-to"/> </tree> </field> </record> @@ -263,7 +267,7 @@ <field name="arch" type="xml"> <search string="Project Phases"> <group colspan="4" col="20"> - <filter string="Current" domain="[('state','in',('open','draft'))]" name="current" help="Draft and In Progress Phases" icon="terp-check"/> + <filter string="Current" domain="[('state','in',('open','draft'))]" name="current" help="Draft and In Progress Phases" icon="terp-check"/> <filter string="In Progress" name="Progress" domain="[('state','=','open')]" help="In Progress Phases" icon="terp-camera_test"/> <filter string="Pending" domain="[('state','=','pending')]" help="Pending Phases" icon="terp-gtk-media-pause"/> <separator orientation="vertical"/> @@ -319,7 +323,7 @@ <field name="type">form</field> <field name="inherit_id" ref="project.edit_project"/> <field name="arch" type="xml"> - <field name="priority" position="before"> + <field name="effective_hours" position="after"> <field name="resource_calendar_id"/> </field> @@ -393,21 +397,21 @@ name="Phases" res_model="project.phase" src_model="project.project" - domain="[('project_id', '=', active_id)]" + domain="[('project_id', '=', active_id)]" view_mode="tree,form" view_type="form" - /> + /> - <act_window - context="{'search_default_user_id': [user_id]}" + <act_window + context="{'search_default_user_id': [user_id]}" id="act_project_resource" name="Resources" res_model="resource.resource" src_model="project.project" - domain="[('user_id', '=',user_id)]" + domain="[('user_id', '=',user_id)]" view_mode="tree,form" view_type="form" - /> + /> # ------------------------------------------------------ # Menu Items diff --git a/addons/project_long_term/test/phase_constraint.yml b/addons/project_long_term/test/phase_constraint.yml new file mode 100644 index 00000000000..cf6bfa844a6 --- /dev/null +++ b/addons/project_long_term/test/phase_constraint.yml @@ -0,0 +1,179 @@ +- + 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') +- + 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}: | + self.write(cr, uid, [ref("project_project_developyamlproject0")], {'resource_calendar_id': ref("resource_calendar_hoursweeks0")}) + + +- + Creating 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: project_long_term.resource_calendar_hoursweeks0 + name: Analyst + resource_type: user + time_efficiency: 1.0 + user_id: base.user_admin + +- + Creating Developer Human resource who develop Yaml +- + !record {model: resource.resource, id: resource_resource_develop0}: + calendar_id: project_long_term.resource_calendar_hoursweeks0 + name: Developer + resource_type: user + time_efficiency: 1.0 + user_id: base.user_admin +- + Creating a Tester Human resource for testing Yaml +- + !record {model: resource.resource, id: resource_resource_tester1}: + calendar_id: project_long_term.resource_calendar_hoursweeks0 + name: tester + resource_type: user + time_efficiency: 1.0 + user_id: base.user_admin + +- + Create 3 a project phase and NO one depends on other one. + so,they should start on the same day. + Creating 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 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 Date Start adn Date End for phase Analysis Flow for Yaml +- + !python {model : project.phase }: | + import datetime + from dateutil.relativedelta import * + 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}) + +- + Create project phase 'Develop yaml' with constraint date. +- + !record {model: project.phase, id: project_phase_developyaml0}: + duration: 6.0 + name: Develop Yaml + 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 }: | + 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}) +- + Create project phase 'Test Yaml' +- + !record {model: project.phase, id: project_phase_testyaml0}: + duration: 6.0 + name: Testing Yaml + product_uom: product.uom_day + project_id: project_project_developyamlproject0 + previous_phase_ids: + - project_phase_developyaml0 + constraint_date_start : + constraint_date_end : +- + 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 + +- + Schedule project phases using "Compute Phase Scheduling" +- + !python {model: project.project}: | + self.schedule_phases(cr, uid, [ref("project_project_developyamlproject0")]) + +- + 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") diff --git a/addons/project_long_term/test/project_schedule_consecutive_day.yml b/addons/project_long_term/test/project_schedule_consecutive_day.yml new file mode 100644 index 00000000000..10cfc7b6b9c --- /dev/null +++ b/addons/project_long_term/test/project_schedule_consecutive_day.yml @@ -0,0 +1,126 @@ +- + 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 +- + !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.responsible_id) or (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 new file mode 100644 index 00000000000..61a8539585a --- /dev/null +++ b/addons/project_long_term/test/project_schedule_without_wroking_hour.yml @@ -0,0 +1,77 @@ +- + 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 + responsible_id: project.res_users_analyst + 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.responsible_id) or (not phase.date_start) or (not phase.date_end): + raise AssertionError("Phases not scheduled") + + diff --git a/addons/project_long_term/test/schedule_phase_tasks.yml b/addons/project_long_term/test/schedule_phase_tasks.yml index aa54fa1ac57..be22f778cee 100644 --- a/addons/project_long_term/test/schedule_phase_tasks.yml +++ b/addons/project_long_term/test/schedule_phase_tasks.yml @@ -1,7 +1,7 @@ - Create project 'Develop an outlook-openerp synchronization plugin' - - !record {model: project.project, id: project_project_project0}: + !record {model: project.project, id: project_project_project4}: name: Develop an outlook-openerp synchronization plugin members: - project.res_users_project_manager @@ -15,20 +15,18 @@ Create phase 'Develop GUI' in Outlook - !record {model: project.phase, id: project_phase_phase0}: - date_start: '2010-06-02' + date_start: !eval time.strftime("%Y-%m-%d") duration: 200.0 name: Develop GUI in Outlook product_uom: product.uom_day - project_id: project_project_project0 + project_id: project_project_project4 state: draft resource_ids: - resource_id: project_long_term.resource_analyst - useability: 80.0 - resource_id: project_long_term.resource_developer - useability: 30.0 - resource_id: project_long_term.resource_designer - useability: 30.0 - + - resource_id: project_long_term.resource_tester + - resource_id: project_long_term.resource_project_manager - Create the phase task 'Develop GUI for Server Configuration' @@ -39,8 +37,8 @@ remaining_hours: 20.0 state: draft phase_id: project_phase_phase0 - project_id: project_project_project0 - user_id: project.res_users_developer + project_id: project_project_project4 + - Create the phase task 'Develop GUI for Modules Configuration' @@ -51,8 +49,8 @@ remaining_hours: 25.0 state: draft phase_id: project_phase_phase0 - project_id: project_project_project0 - user_id: project.res_users_developer + project_id: project_project_project4 + - Create the phase task 'Develop GUI for OpenERP Synchronisation' - @@ -62,8 +60,8 @@ remaining_hours: 30.0 state: draft phase_id: project_phase_phase0 - project_id: project_project_project0 - user_id: project.res_users_developer + project_id: project_project_project4 + - Create the phase task 'Design required GUI/Menus' - @@ -73,8 +71,7 @@ remaining_hours: 25.0 state: draft phase_id: project_phase_phase0 - project_id: project_project_project0 - user_id: project.res_users_designer + project_id: project_project_project4 - Schedule phase tasks @@ -88,6 +85,6 @@ !python {model: project.phase}: | phase = self.browse(cr, uid, [ref("project_phase_phase0")])[0] for task in phase.task_ids: - if (not task.user_id) or (not task.date_start) or (not task.date_end): + if (not task.date_start) or (not task.date_end): raise AssertionError("Phase Tasks not scheduled: %d uid=%r start=%r end=%r" % \ (task.id, task.user_id, task.date_start, task.date_end)) diff --git a/addons/project_long_term/test/schedule_project_phases.yml b/addons/project_long_term/test/schedule_project_phases.yml index e06feaaa4ca..4bc6549bf35 100644 --- a/addons/project_long_term/test/schedule_project_phases.yml +++ b/addons/project_long_term/test/schedule_project_phases.yml @@ -1,126 +1,209 @@ -- +- 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: '2010-06-02' + 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: '2010-06-02' + 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 -- +- + Resource1 +- + !record {model: project.resource.allocation, id: res_phase1}: + resource_id: project_long_term.resource_project_manager + phase_id: project_phase_definingclientsbasicideaofproject0 + +- + Resource2 +- + !record {model: project.resource.allocation, id: res_phase2}: + resource_id: project_long_term.resource_analyst + phase_id: project_phase_definingclientsbasicideaofproject0 + +- + Resource3 +- + !record {model: project.resource.allocation, id: res_phase3}: + resource_id: project_long_term.resource_technical_leader + phase_id: project_phase_definingclientsbasicideaofproject0 + +- + Create the phase task 'Develop GUI for Server Configuration' +- + !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: '2010-06-02' + 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 - - -- + +- + Resource4 +- + !record {model: project.resource.allocation, id: res_phase4}: + resource_id: project_long_term.resource_developer + phase_id: project_phase_preparationofengineeringdesigns0 + +- + Resource5 +- + !record {model: project.resource.allocation, id: res_phase5}: + resource_id: project_long_term.resource_designer + phase_id: project_phase_preparationofengineeringdesigns0 + +- + Create the phase task 'Develop GUI for Client Configuration' +- + !record {model: project.task, id: project_task_t2}: + 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: '2010-06-02' + 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: '2010-06-02' + 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: '2010-06-02' + 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 - @@ -128,6 +211,6 @@ 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") - - + 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 04a05437487..825b7c404d9 100644 --- a/addons/project_long_term/test/schedule_project_tasks.yml +++ b/addons/project_long_term/test/schedule_project_tasks.yml @@ -16,7 +16,7 @@ Create phase 'Develop GUI' in thunderbird - !record {model: project.phase, id: project_phase_phase1}: - date_start: '2010-06-02' + date_start: !eval time.strftime('%Y-%m-%d') duration: 200.0 name: Develop GUI in thunderbird product_uom: product.uom_day diff --git a/addons/project_long_term/test/test_schedule_phases_case1.yml b/addons/project_long_term/test/test_schedule_phases_case1.yml new file mode 100644 index 00000000000..ba091a29916 --- /dev/null +++ b/addons/project_long_term/test/test_schedule_phases_case1.yml @@ -0,0 +1,72 @@ +- + 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=2)).strftime('%Y-%m-%d') + first_phase = self.browse(cr, uid, ref('project_phase_firstphase0_case1')) + assert (first_phase.date_start == start and first_phase.date_end == end),'Dates are wrong!' + second_phase = self.browse(cr, uid, ref('project_phase_secondphase0_case2')) + start = first_phase.date_end + end = (datetime.date.today() + relativedelta(days=5)).strftime('%Y-%m-%d') + assert (second_phase.date_start == start and second_phase.date_end == end),'Dates are wrong!' diff --git a/addons/project_long_term/test/test_schedule_phases_case2.yml b/addons/project_long_term/test/test_schedule_phases_case2.yml new file mode 100644 index 00000000000..67a7332cf5b --- /dev/null +++ b/addons/project_long_term/test/test_schedule_phases_case2.yml @@ -0,0 +1,193 @@ +- + 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' + 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 new file mode 100644 index 00000000000..febb2aa3576 --- /dev/null +++ b/addons/project_long_term/test/test_schedule_tasks_case1.yml @@ -0,0 +1,263 @@ +- + In order to test scheduling of tasks, I create four tasks with different sequences and schedule them. +- + I create address for first user. +- + !record {model: res.partner.address, id: res_partner_address_user0}: + name: User 1 +- + I create address for second user. +- + !record {model: res.partner.address, id: res_partner_address_user1}: + name: User 2 +- + I create first user. +- + !record {model: res.users, id: res_users_user0}: + address_id: res_partner_address_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}: + address_id: res_partner_address_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' + 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' + duration: 2.0 + name: Phase A + product_uom: product.uom_day + project_id: project_project_projecta0 + resource_ids: + - project_id: project_project_projecta0 + resource_id: resource_resource_user0 + - project_id: project_project_projecta0 + resource_id: resource_resource_user1 + state: draft + task_ids: + - delay_hours: 0.0 + 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.") |
