summaryrefslogtreecommitdiff
path: root/addons/project_long_term
diff options
context:
space:
mode:
authoratp (Open ERP) <atp@tinyerp.co.in>2010-06-22 10:45:44 +0530
committeratp (Open ERP) <atp@tinyerp.co.in>2010-06-22 10:45:44 +0530
commitb0efd26edd9f4e2aa75424b787ea46d2be15cd04 (patch)
treee78cdb693e62a5c9a17f77a395eec51fb34becbf /addons/project_long_term
parent46bb1ea51be702758d68a5f69db32c82dbccf9bd (diff)
parent2319190c5a20cb8095f85cacca89a33164ba93d7 (diff)
[MERGE]: merge with lp:~openerp-dev/openobject-addons/trunk-dev-addons2
bzr revid: atp@tinyerp.co.in-20100622051544-c7hig73zk2at66cy
Diffstat (limited to 'addons/project_long_term')
-rw-r--r--addons/project_long_term/__openerp__.py5
-rw-r--r--addons/project_long_term/project_long_term.py4
-rw-r--r--addons/project_long_term/project_long_term_view.xml24
-rw-r--r--addons/project_long_term/project_long_term_wizard.xml2
-rw-r--r--addons/project_long_term/test/schedule_phase_tasks.yml101
-rw-r--r--addons/project_long_term/test/schedule_project_phases.yml143
-rw-r--r--addons/project_long_term/test/schedule_project_tasks.yml108
-rw-r--r--addons/project_long_term/wizard/project_compute_phases.py2
-rw-r--r--addons/project_long_term/wizard/project_compute_phases_view.xml32
-rw-r--r--addons/project_long_term/wizard/project_compute_tasks.py6
-rw-r--r--addons/project_long_term/wizard/project_schedule_tasks.py6
-rw-r--r--addons/project_long_term/wizard/project_schedule_tasks_view.xml2
12 files changed, 401 insertions, 34 deletions
diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py
index 32945899b30..7bc0e3c9984 100644
--- a/addons/project_long_term/__openerp__.py
+++ b/addons/project_long_term/__openerp__.py
@@ -38,6 +38,11 @@
""",
"init_xml" : [],
"demo_xml" : ["project_long_term_demo.xml"],
+ "test" : [
+ 'test/schedule_project_phases.yml',
+ 'test/schedule_project_tasks.yml',
+ 'test/schedule_phase_tasks.yml'
+ ],
"update_xml": [
"security/ir.model.access.csv",
"project_long_term_wizard.xml" ,
diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py
index 57fbd1abb5f..f1c40a4c8ba 100644
--- a/addons/project_long_term/project_long_term.py
+++ b/addons/project_long_term/project_long_term.py
@@ -45,7 +45,7 @@ class project_phase(osv.osv):
next_ids = [rec.id for rec in next_ids]
# iter prev_ids
while prev_ids:
- cr.execute('select distinct prv_phase_id from project_phase_rel where next_phase_id in ('+','.join(map(str, prev_ids))+')')
+ cr.execute('select distinct prv_phase_id from project_phase_rel where next_phase_id IN %s',(tuple(prev_ids),))
prv_phase_ids = filter(None, map(lambda x: x[0], cr.fetchall()))
if data_phase.id in prv_phase_ids:
return False
@@ -55,7 +55,7 @@ class project_phase(osv.osv):
prev_ids = prv_phase_ids
# iter next_ids
while next_ids:
- cr.execute('select distinct next_phase_id from project_phase_rel where prv_phase_id in ('+','.join(map(str, next_ids))+')')
+ cr.execute('select distinct next_phase_id from project_phase_rel where prv_phase_id IN %s',(tuple(next_ids),))
next_phase_ids = filter(None, map(lambda x: x[0], cr.fetchall()))
if data_phase.id in next_phase_ids:
return False
diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml
index cafaefa9633..478fbd19785 100644
--- a/addons/project_long_term/project_long_term_view.xml
+++ b/addons/project_long_term/project_long_term_view.xml
@@ -2,7 +2,7 @@
<openerp>
<data>
- <menuitem id="menu_project_long_term" name="Long Term Planning" parent="base.menu_main_pm" sequence="1"/>
+ <menuitem id="base.menu_project_long_term" name="Long Term Planning" parent="base.menu_main_pm" sequence="1"/>
# ------------------------------------------------------
# Project Resource Allocation
@@ -248,6 +248,16 @@
<field name="search_view_id" ref="view_project_phase_search"/>
</record>
+ <record id="act_project_phase_list" model="ir.actions.act_window">
+ <field name="name">Project Phases</field>
+ <field name="res_model">project.phase</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form,calendar</field>
+ <field name="context">{'search_default_responsible_id':uid}</field>
+ <field name="search_view_id" ref="view_project_phase_search"/>
+ </record>
+
+
# ------------------------------------------------------
# Project
# ------------------------------------------------------
@@ -292,18 +302,18 @@
<menuitem action="act_project_phase"
groups="base.group_extended"
- id="menu_project_phase" parent="menu_project_long_term" sequence="4"/>
+ id="menu_project_phase" parent="base.menu_project_long_term" sequence="1"/>
<menuitem id="menu_resouce_allocation" action="act_resouce_allocation"
- name="Resource Allocations" parent="menu_project_long_term" />
+ name="Resource Allocations" parent="base.menu_project_long_term" sequence="2"/>
- <!--<menuitem icon="terp-project" id="base.menu_main_pm" name="Project Management" sequence="1"/>-->
+ <!--<menuitem icon="terp-project" id="base.menu_main_pm" name="Project" sequence="10"/>-->
<menuitem id="menu_pm_resources_project1"
groups="base.group_extended"
- name="Resources" parent="base.menu_main_pm" sequence="2"/>
+ name="Resources" parent="project.menu_definitions" sequence="3"/>
- <menuitem id="menu_phase_schedule" name="Scheduling" parent="menu_project_long_term"/>
- <menuitem action="resource.action_resource_resource_tree" id="menu_view_resource" parent="menu_pm_resources_project1" sequence="1"/>
+ <menuitem id="menu_phase_schedule" name="Scheduling" parent="base.menu_project_long_term" sequence="4"/>
+ <menuitem action="resource.action_resource_resource_tree" id="menu_view_resource" parent="project.menu_project_management" sequence="4"/>
<menuitem action="resource.action_resource_calendar_form" id="menu_view_resource_calendar" parent="menu_pm_resources_project1" sequence="1"/>
<menuitem action="resource.action_resource_calendar_leave_tree" id="menu_view_resource_calendar_leaves" parent="menu_pm_resources_project1" sequence="1"/>
diff --git a/addons/project_long_term/project_long_term_wizard.xml b/addons/project_long_term/project_long_term_wizard.xml
index fa546b9e86f..ea43762653c 100644
--- a/addons/project_long_term/project_long_term_wizard.xml
+++ b/addons/project_long_term/project_long_term_wizard.xml
@@ -6,7 +6,7 @@
<!--<wizard id="wizard_schedule_task" menu="False" model="project.phase" name="phase.schedule.tasks" string="Schedule Tasks"/>-->
<!--<wizard id="wizard_compute_task" model="project.task" menu="False" name="wizard.compute.tasks" string="Compute Task Scheduling"/>-->
- <menuitem icon="terp-project" id="base.menu_main" name="Project Management" sequence="1"/>
+<!-- <menuitem icon="terp-project" id="base.menu_main" name="Project Management" sequence="1"/>-->
<!--<menuitem id="base.menu_pm_planning" name="Planning" parent="base.menu_main" sequence="3"/>-->
<!-- <menuitem
action="wizard_compute_phase"
diff --git a/addons/project_long_term/test/schedule_phase_tasks.yml b/addons/project_long_term/test/schedule_phase_tasks.yml
new file mode 100644
index 00000000000..7af72f05824
--- /dev/null
+++ b/addons/project_long_term/test/schedule_phase_tasks.yml
@@ -0,0 +1,101 @@
+-
+ Create project 'Develop an outlook-openerp synchronization plugin'
+-
+ !record {model: project.project, id: project_project_project0}:
+ company_id: base.main_company
+ name: Project123
+ members:
+ - project_long_term.res_users_manager0
+ - project_long_term.res_users_user0
+ - project_long_term.res_users_userfinance0
+ - project_long_term.res_users_userdesign0
+ - project_long_term.res_users_userdeveloper0
+ - project_long_term.res_users_usertester0
+ - project_long_term.res_users_useranalyst0
+-
+ Create phase 'Develop GUI' in Outlook
+-
+ !record {model: project.phase, id: project_phase_phase0}:
+ date_start: '2010-06-02 00:00:00'
+ duration: 200.0
+ name: phase123
+ product_uom: product.uom_day
+ project_id: project_project_project0
+ state: draft
+ resource_ids:
+ - resource_id: project_long_term.resource_resource_analyst0
+ useability: 80.0
+ - resource_id: project_long_term.resource_resource_programmer0
+ useability: 30.0
+ - resource_id: project_long_term.resource_resource_webdesigner0
+ useability: 30.0
+
+
+-
+ Create the phase task 'Develop GUI for Server Configuration'
+-
+ !record {model: project.task, id: project_task_t0}:
+ name: t1
+ occupation_rate: 1.0
+ planned_hours: 20.0
+ remaining_hours: 20.0
+ state: draft
+ phase_id: project_phase_phase0
+ project_id: project_project_project0
+
+
+-
+ Create the phase task 'Develop GUI for Modules Configuration'
+-
+ !record {model: project.task, id: project_task_t1}:
+ name: t2
+ occupation_rate: 1.0
+ planned_hours: 25.0
+ remaining_hours: 25.0
+ state: draft
+ phase_id: project_phase_phase0
+ project_id: project_project_project0
+
+-
+ Create the phase task 'Develop GUI for OpenERP Synchronisation'
+-
+ !record {model: project.task, id: project_task_t2}:
+ name: t3
+ occupation_rate: 1.0
+ planned_hours: 30.0
+ remaining_hours: 30.0
+ state: draft
+ phase_id: project_phase_phase0
+ project_id: project_project_project0
+
+
+-
+ Create the phase task 'Develop required Menus'
+-
+ !record {model: project.task, id: project_task_3}:
+ name: t4
+ occupation_rate: 1.0
+ planned_hours: 25.0
+ remaining_hours: 25.0
+ state: draft
+ phase_id: project_phase_phase0
+ project_id: project_project_project0
+
+
+-
+ Schedule phase tasks
+-
+ !python {model: project.schedule.tasks}: |
+ self.compute_date(cr, uid, {"lang": "en_US",
+ "active_model": "project.phase", "active_ids": [ref("project_phase_phase0")],
+ "tz": False, "record_id": 138, "project_id": ref("project_project_project0"), "active_id": ref("project_phase_phase0"),
+ })
+
+-
+ Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null
+-
+ !python {model: project.phase}: |
+ phase=self.browse(cr, uid, [ref("project_phase_phase0")])[0]
+ for task in phase.task_ids:
+ if (not task.user_id) or (not task.date_start) or (not task.date_end):
+ raise AssertionError("Phase Tasks not scheduled") \ No newline at end of file
diff --git a/addons/project_long_term/test/schedule_project_phases.yml b/addons/project_long_term/test/schedule_project_phases.yml
new file mode 100644
index 00000000000..470f2dc2e48
--- /dev/null
+++ b/addons/project_long_term/test/schedule_project_phases.yml
@@ -0,0 +1,143 @@
+-
+ Create a project 'World Bank's Project'
+-
+ !record {model: project.project, id: project_project_worldbanksproject0}:
+ company_id: base.main_company
+ name: "World Bank's Project"
+ priority: 4
+
+-
+ Create a project phase 'Defining Client's Basic Idea of Project'
+-
+ !record {model: project.phase, id: project_phase_definingclientsbasicideaofproject0}:
+ date_start: '2010-06-02 00:00:00'
+ duration: 15.0
+ name: "Defining Client's Basic Idea of Project"
+ product_uom: product.uom_day
+ project_id: project_project_worldbanksproject0
+ state: draft
+
+
+-
+ Create project phase 'Establishing Project Feasibility'
+-
+ !record {model: project.phase, id: project_phase_establishingprojectfeasibility0}:
+ date_start: '2010-06-02 00:00:00'
+ duration: 30.0
+ name: Establishing Project Feasibility
+ product_uom: product.uom_day
+ project_id: project_project_worldbanksproject0
+ state: draft
+
+-
+ Create project phase 'Preparation of Engineering Designs'
+-
+ !record {model: project.phase, id: project_phase_preparationofengineeringdesigns0}:
+ date_start: '2010-06-02 00:00:00'
+ duration: 100.0
+ name: Preparation of Engineering Designs
+ product_uom: product.uom_hour
+ project_id: project_project_worldbanksproject0
+ state: draft
+
+
+-
+ Create project phase 'Procurement of Works and Goods'
+-
+ !record {model: project.phase, id: project_phase_procurementofworksandgoods0}:
+ date_start: '2010-06-02 00:00:00'
+ duration: 24.0
+ name: Procurement of Works and Goods
+ product_uom: product.uom_hour
+ project_id: project_project_worldbanksproject0
+ state: draft
+
+
+-
+ Create project phase 'Project Construction'
+-
+ !record {model: project.phase, id: project_phase_projectconstruction0}:
+ date_start: '2010-06-02 00:00:00'
+ duration: 4320.0
+ name: Project Construction
+ product_uom: product.uom_hour
+ project_id: project_project_worldbanksproject0
+ state: draft
+
+
+-
+ Create project phase 'Project Completion'
+-
+ !record {model: project.phase, id: project_phase_projectcompletion0}:
+ date_start: '2010-06-02 00:00:00'
+ duration: 240.0
+ name: Project Completion
+ product_uom: product.uom_hour
+ project_id: project_project_worldbanksproject0
+ state: draft
+
+-
+ 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.compute.phases}: |
+ self.check_selection(cr, uid, [ref("project_compute_phases_0")], {"lang": "en_US",
+ "project_id": False, "tz": False, "active_model": "ir.ui.menu", "department_id":
+ False, "section_id": False, "record_id": 279, "active_ids": [ref("project_long_term.menu_compute_phase")],
+ "active_id": ref("project_long_term.menu_compute_phase"), })
+
+-
+ Check if phases scheduled, check that either of phase's start_date, end_date and user_id is not null
+-
+ !python {model: project.project}: |
+ prj=self.browse(cr, uid, [ref("project_project_worldbanksproject0")])[0]
+ for task in prj.tasks:
+ if (not task.user_id) or (not task.date_start) or (not task.date_end):
+ raise AssertionError("Tasks not scheduled")
+
+ \ No newline at end of file
diff --git a/addons/project_long_term/test/schedule_project_tasks.yml b/addons/project_long_term/test/schedule_project_tasks.yml
new file mode 100644
index 00000000000..40dbd07b3ff
--- /dev/null
+++ b/addons/project_long_term/test/schedule_project_tasks.yml
@@ -0,0 +1,108 @@
+-
+ Create project 'Develop a thunderbird-openerp synchronization plugin'
+-
+ !record {model: project.project, id: project_project_project1}:
+ company_id: base.main_company
+ name: Project2
+ members:
+ - project_long_term.res_users_manager0
+ - project_long_term.res_users_user0
+ - project_long_term.res_users_userfinance0
+ - project_long_term.res_users_userdesign0
+ - project_long_term.res_users_userdeveloper0
+ - project_long_term.res_users_usertester0
+ - project_long_term.res_users_useranalyst0
+
+-
+ Create phase 'Develop GUI' in Thunderbird
+-
+ !record {model: project.phase, id: project_phase_phase1}:
+ date_start: '2010-06-02 00:00:00'
+ duration: 100.0
+ name: phase22
+ product_uom: product.uom_day
+ project_id: project_project_project1
+ state: draft
+ resource_ids:
+ - resource_id: project_long_term.resource_resource_analyst0
+ useability: 80.0
+ - resource_id: project_long_term.resource_resource_programmer0
+ useability: 30.0
+ - resource_id: project_long_term.resource_resource_webdesigner0
+ useability: 30.0
+
+
+-
+ Create the phase task 'Develop GUI for Server Configuration'
+-
+ !record {model: project.task, id: project_task_t00}:
+ name: t1
+ occupation_rate: 1.0
+ planned_hours: 20.0
+ remaining_hours: 20.0
+ state: draft
+ phase_id: project_phase_phase1
+ project_id: project_project_project1
+
+
+-
+ Create the phase task 'Develop GUI for Modules Configuration'
+-
+ !record {model: project.task, id: project_task_t11}:
+ name: t2
+ occupation_rate: 1.0
+ planned_hours: 25.0
+ remaining_hours: 25.0
+ state: draft
+ phase_id: project_phase_phase1
+ project_id: project_project_project1
+
+-
+ Create the phase task 'Develop GUI for OpenERP Synchronisation'
+-
+ !record {model: project.task, id: project_task_t22}:
+ name: t3
+ occupation_rate: 1.0
+ planned_hours: 30.0
+ remaining_hours: 30.0
+ state: draft
+ phase_id: project_phase_phase1
+ project_id: project_project_project1
+
+
+-
+ Create the phase task 'Develop required Menus'
+-
+ !record {model: project.task, id: project_task_t33}:
+ name: t4
+ occupation_rate: 1.0
+ planned_hours: 25.0
+ remaining_hours: 25.0
+ state: draft
+ phase_id: project_phase_phase1
+ project_id: project_project_project1
+
+-
+ Get the project to schedule the tasks
+-
+ !record {model: project.compute.tasks, id: project_compute_tasks_0}:
+ project_id: project_project_project1
+
+
+-
+ Schedule tasks
+-
+ !python {model: project.compute.tasks}: |
+ self.compute_date(cr, uid, [ref("project_compute_tasks_0")], {"lang": "en_US",
+ "active_model": "ir.ui.menu", "active_ids": [ref("project_long_term.menu_compute_tasks")],
+ "tz": False, "record_id": 138, "project_id": ref("project_project_project1"), "active_id": ref("project_long_term.menu_compute_tasks"),
+ })
+
+-
+ Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null
+-
+ !python {model: project.project}: |
+ prj=self.browse(cr, uid, [ref("project_project_project1")])[0]
+ for task in prj.tasks:
+ if (not task.user_id) or (not task.date_start) or (not task.date_end):
+ raise AssertionError("Project Tasks not scheduled") \ No newline at end of file
diff --git a/addons/project_long_term/wizard/project_compute_phases.py b/addons/project_long_term/wizard/project_compute_phases.py
index 5353db25be6..ce2e2c0bbb1 100644
--- a/addons/project_long_term/wizard/project_compute_phases.py
+++ b/addons/project_long_term/wizard/project_compute_phases.py
@@ -165,7 +165,7 @@ class project_compute_phases(osv.osv_memory):
context = {}
mod_obj = self.pool.get('ir.model.data')
act_obj = self.pool.get('ir.actions.act_window')
- result = mod_obj._get_id(cr, uid, 'project_long_term', 'act_project_phase')
+ result = mod_obj._get_id(cr, uid, 'project_long_term', 'act_project_phase_list')
id = mod_obj.read(cr, uid, [result], ['res_id'])[0]['res_id']
result = act_obj.read(cr, uid, [id], context=context)[0]
result['domain'] = [('state', 'not in', ['cancelled','done'])]
diff --git a/addons/project_long_term/wizard/project_compute_phases_view.xml b/addons/project_long_term/wizard/project_compute_phases_view.xml
index 0a3b2e12336..6bbb01ca7e4 100644
--- a/addons/project_long_term/wizard/project_compute_phases_view.xml
+++ b/addons/project_long_term/wizard/project_compute_phases_view.xml
@@ -8,22 +8,22 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Compute Scheduling of Phases">
- <group height="170" width="500">
- <group colspan="4" col="4">
- <label colspan="4" string="This wizard will schedule phases for all or specified project" />
- <newline />
- <field name="target_project" colspan="4"/>
- </group>
- <newline />
- <group colspan="4" col="6" attrs="{'invisible':[('target_project','=','all')]}">
- <field name="project_id"/>
- </group>
- <separator colspan="4"/>
- <group colspan="4" col="6"> <!-- Improve me -->
- <button icon="gtk-cancel" special="cancel" string="_Cancel"/>
- <button icon="gtk-ok" name="check_selection" string="_Compute" type="object"/>
- </group>
- </group>
+ <group width="380" height="180">
+ <group colspan="4" col="4">
+ <label colspan="4" string="This wizard will schedule phases for all or specified project" />
+ <newline />
+ <field name="target_project" colspan="4"/>
+ </group>
+ <newline />
+ <group colspan="4" col="6" attrs="{'invisible':[('target_project','=','all')]}">
+ <field name="project_id"/>
+ </group>
+ <separator colspan="4"/>
+ <group colspan="4" col="6"> <!-- Improve me -->
+ <button icon="gtk-cancel" special="cancel" string="_Cancel"/>
+ <button icon="gtk-ok" name="check_selection" string="_Compute" type="object"/>
+ </group>
+ </group>
</form>
</field>
</record>
diff --git a/addons/project_long_term/wizard/project_compute_tasks.py b/addons/project_long_term/wizard/project_compute_tasks.py
index 0816bf3c3f1..bd569abf90e 100644
--- a/addons/project_long_term/wizard/project_compute_tasks.py
+++ b/addons/project_long_term/wizard/project_compute_tasks.py
@@ -112,9 +112,9 @@ class project_compute_tasks(osv.osv_memory):
if each_task.priority in priority_dict.keys():
priorty = priority_dict[each_task.priority]
if each_task.user_id:
- for resource in resources:
- if resource.__name__ == each_task.user_id.name: # check me!!
- task = create_tasks(i, hours, priorty, resource)
+ for resrce in resources:
+ if resrce.__name__ == each_task.user_id.name: # check me!!
+ task = create_tasks(i, hours, priorty, resrce)
else:
task = create_tasks(i, hours, priorty)
i += 1
diff --git a/addons/project_long_term/wizard/project_schedule_tasks.py b/addons/project_long_term/wizard/project_schedule_tasks.py
index d4d2da82cec..78ad2166698 100644
--- a/addons/project_long_term/wizard/project_schedule_tasks.py
+++ b/addons/project_long_term/wizard/project_schedule_tasks.py
@@ -131,9 +131,9 @@ class project_schedule_task(osv.osv_memory):
if each_task.priority in priority_dict.keys():
priorty = priority_dict[each_task.priority]
if each_task.user_id:
- for resource in resources:
- if resource.__name__ == each_task.user_id.name:
- task = create_tasks(i, hours, priorty, resource)
+ for resrce in resources:
+ if resrce.__name__ == each_task.user_id.name:
+ task = create_tasks(i, hours, priorty, resrce)
else:
task = create_tasks(i, hours, priorty)
i += 1
diff --git a/addons/project_long_term/wizard/project_schedule_tasks_view.xml b/addons/project_long_term/wizard/project_schedule_tasks_view.xml
index f17d573185d..b62a3c107d9 100644
--- a/addons/project_long_term/wizard/project_schedule_tasks_view.xml
+++ b/addons/project_long_term/wizard/project_schedule_tasks_view.xml
@@ -8,7 +8,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Schedule Tasks">
- <group height="90" width="250">
+ <group height="90" width="275">
<label string="Task Scheduling completed successfully."/>
<group colspan="4" col="6">
<button icon="gtk-ok" colspan="4" special="cancel" string="_Ok"/>