1 <?xml version="1.0" encoding="utf-8"?>
4 <menuitem icon="terp-project" id="menu_main" name="Project Management"/>
5 <menuitem id="menu_tasks" name="Tasks" parent="menu_main"/>
6 <menuitem id="menu_definitions" name="Configuration" parent="project.menu_main" sequence="1"/>
9 <record id="edit_project" model="ir.ui.view">
10 <field name="name">project.project.form</field>
11 <field name="model">project.project</field>
12 <field name="type">form</field>
13 <field name="arch" type="xml">
14 <form string="Project">
15 <group colspan="4" col="6">
16 <field name="name" select="1"/>
17 <field name="parent_id"/>
18 <field name="manager" select="1"/>
19 <field name="date_start"/>
20 <field name="date_end"/>
21 <field name="progress_rate" widget="progressbar"/>
23 <notebook colspan="4">
24 <page string="Administration">
25 <field name="warn_manager"/>
26 <field name="priority"/>
27 <field name="timesheet_id"/>
28 <field name="active" select="2"/>
29 <field name="planned_hours" widget="float_time"/>
30 <field name="effective_hours" widget="float_time"/>
31 <field name="category_id" select="2" context="{'default_name':name}"/>
33 <separator colspan="4" string="Project's members"/>
34 <field colspan="4" name="members" nolabel="1"/>
35 <group col="9" colspan="8">
37 <button name="set_template" string="Set as Template" type="object" states="open" icon="gtk-convert"/>
38 <button name="set_open" string="Reactivate Project" type="object" states="pending,cancelled,done" icon="gtk-ok"/>
39 <button name="set_pending" string="Pending" type="object" states="open" icon="gtk-media-pause"/>
40 <button name="set_cancel" string="Cancel" type="object" states="open,pending" icon="gtk-cancel"/>
41 <button name="set_done" string="Done" type="object" states="open,pending" icon="gtk-ok"/>
42 <button name="reset_project" string="Reset as Project" type="object" states="template" icon="gtk-convert"/>
43 <button name="duplicate_template"
44 string="New Project Based on Template"
46 states="template" icon="gtk-execute"/>
49 <page groups="base.group_extended" string="Partner Info">
50 <field colspan="4" name="partner_id" on_change="onchange_partner_id(partner_id)" select="1"/>
51 <field domain="[('partner_id','=',partner_id)]" name="contact_id" select="2"/>
52 <field name="warn_customer"/>
54 <separator colspan="2" string="Mail Header"/>
55 <separator colspan="2" string="Mail Footer"/>
56 <field name="warn_header" nolabel="1" colspan="2"/>
57 <field name="warn_footer" nolabel="1" colspan="2"/>
58 <group col="3" colspan="4">
59 <separator string="Automatic variables for headers and footer. Use exactly the same notation." colspan="4"/>
60 <label string="Task: %%(name)s"/>
61 <label string="User: %%(user_id)s"/>
62 <label string="ID: %%(task_id)s"/>
63 <label string="Status: %%(state)s"/>
64 <label string="Date Start: %%(date_start)s"/>
65 <label string="Date Stop: %%(date_stop)s"/>
69 <field colspan="4" name="notes" nolabel="1"/>
76 <record id="view_project_list" model="ir.ui.view">
77 <field name="name">project.project.list</field>
78 <field name="model">project.project</field>
79 <field name="type">tree</field>
80 <field name="priority" eval="5"/>
81 <field name="arch" type="xml">
82 <tree string="Projects">
83 <field name="complete_name"/>
84 <field name="manager"/>
85 <field name="partner_id"/>
86 <field name="effective_hours" widget="float_time"/>
87 <field name="total_hours" widget="float_time"/>
92 <record id="view_project" model="ir.ui.view">
93 <field name="name">project.project.tree</field>
94 <field name="model">project.project</field>
95 <field name="type">tree</field>
96 <field name="field_parent">child_id</field>
97 <field name="arch" type="xml">
98 <tree string="Projects">
100 <field name="manager"/>
101 <field name="partner_id"/>
102 <field name="planned_hours" widget="float_time"/>
103 <field name="total_hours" widget="float_time"/>
104 <field name="effective_hours" widget="float_time"/>
105 <field name="progress_rate" widget="progressbar"/>
106 <field name="state"/>
110 <menuitem id="menu_all_project" parent="project.menu_main" name="Projects"/>
112 <record id="open_view_project_all" model="ir.actions.act_window">
113 <field name="name">All projects</field>
114 <field name="res_model">project.project</field>
115 <field name="view_type">form</field>
116 <field name="domain">[]</field>
117 <field name="view_id" ref="view_project"/>
119 <menuitem action="open_view_project_all" id="menu_open_view_project_all" parent="menu_all_project"/>
121 <record id="open_view_project_open" model="ir.actions.act_window">
122 <field name="name">Running projects</field>
123 <field name="res_model">project.project</field>
124 <field name="view_type">form</field>
125 <field name="domain">[('state','=','open')]</field>
126 <field name="view_id" ref="view_project"/>
128 <menuitem action="open_view_project_open" id="menu_open_view_project_open" parent="menu_open_view_project_all"/>
130 <record id="open_view_template_project" model="ir.actions.act_window">
131 <field name="name">Template of Projects</field>
132 <field name="res_model">project.project</field>
133 <field name="view_type">form</field>
134 <field name="domain">[('state','=','template')]</field>
135 <field name="view_id" ref="view_project"/>
137 <menuitem action="open_view_template_project" id="menu_template_project" parent="project.menu_definitions"/>
139 <record id="open_view_project" model="ir.actions.act_window">
140 <field name="name">New Project</field>
141 <field name="res_model">project.project</field>
142 <field name="view_type">form</field>
143 <field name="view_mode">form,tree,calendar</field>
144 <field name="view_id" eval="False"/>
146 <menuitem action="open_view_project" id="menu_open_view_project" parent="menu_all_project" sequence="50"/>
148 <record id="view_task_work_form" model="ir.ui.view">
149 <field name="name">project.task.work.form</field>
150 <field name="model">project.task.work</field>
151 <field name="type">form</field>
152 <field name="arch" type="xml">
153 <form string="Task Work">
154 <field colspan="4" name="name" select="1"/>
155 <field name="hours" select="1" widget="float_time"/>
156 <field name="date" select="1"/>
157 <field name="user_id" select="1"/>
162 <record id="view_task_work_tree" model="ir.ui.view">
163 <field name="name">project.task.work.tree</field>
164 <field name="model">project.task.work</field>
165 <field name="type">tree</field>
166 <field name="arch" type="xml">
167 <tree editable="top" string="Task Work">
170 <field name="hours" widget="float_time"/>
171 <field name="user_id"/>
176 <record id="view_my_project" model="ir.ui.view">
177 <field name="name">project.project.tree</field>
178 <field name="model">project.project</field>
179 <field name="type">tree</field>
180 <field name="field_parent">child_id</field>
181 <field name="arch" type="xml">
182 <tree string="My projects">
184 <field name="partner_id"/>
185 <field name="planned_hours" widget="float_time"/>
186 <field name="effective_hours" widget="float_time"/>
187 <field name="progress_rate" widget="progressbar"/>
188 <field name="state"/>
192 <record id="open_view_my_project" model="ir.actions.act_window">
193 <field name="name">My Projects</field>
194 <field name="res_model">project.project</field>
195 <field name="view_type">form</field>
196 <field name="domain">[('manager', '=', uid)]</field>
197 <field name="view_id" ref="view_my_project"/>
199 <menuitem action="open_view_my_project" id="menu_open_view_my_project" parent="menu_all_project"
202 <record id="open_view_my_project_my_run" model="ir.actions.act_window">
203 <field name="name">My Running Projects</field>
204 <field name="res_model">project.project</field>
205 <field name="view_type">form</field>
206 <field name="domain">[('manager', '=', uid),('state','=','open')]</field>
207 <field name="view_id" ref="view_my_project"/>
210 action="open_view_my_project_my_run"
211 id="menu_open_view_my_project_my_run"
212 parent="menu_open_view_my_project"/>
214 <record id="open_view_my_project_open" model="ir.actions.act_window">
215 <field name="name">Projects Structure</field>
216 <field name="res_model">project.project</field>
217 <field name="view_type">tree</field>
218 <field name="domain">[('parent_id','=',False)]</field>
221 action="open_view_my_project_open"
222 id="menu_open_view_my_project_open"
223 parent="project.menu_all_project"/>
225 <!-- Wizard for compute remaining hours -->
227 <record id="view_config_compute_remaining" model="ir.ui.view">
228 <field name="name">Compute Remaining Hours </field>
229 <field name="model">config.compute.remaining</field>
230 <field name="type">form</field>
231 <field name="arch" type="xml">
232 <form string="Remaining Hours">
233 <separator colspan="4" string="Change Remaining Hours"/>
235 <field name="remaining_hours" widget="float_time"/>
236 <group col="4" colspan="4">
237 <button icon="gtk-cancel" special="cancel" string="Cancel"/>
238 <button icon="gtk-ok" name="compute_hours" string="Update" type="object"/>
244 <record id="action_config_compute_remaining" model="ir.actions.act_window">
245 <field name="name">Compute Remaining Hours</field>
246 <field name="type">ir.actions.act_window</field>
247 <field name="res_model">config.compute.remaining</field>
248 <field name="view_type">form</field>
249 <field name="view_mode">form</field>
250 <field name="target">new</field>
254 <record id="view_task_form2" model="ir.ui.view">
255 <field name="name">project.task.form</field>
256 <field name="model">project.task</field>
257 <field name="type">form</field>
258 <field eval="2" name="priority"/>
259 <field name="arch" type="xml">
260 <form string="Task edition">
261 <group colspan="6" col="6">
262 <field name="name" select="1" attrs="{'readonly':[('state','=','done')]}" />
263 <field name="project_id" required="1" select="1" attrs="{'readonly':[('state','=','done')]}" />
264 <field name="total_hours" widget="float_time" attrs="{'readonly':[('state','=','done')]}" />
265 <field name="user_id" select="1" attrs="{'readonly':[('state','=','done')]}" />
266 <field name="date_deadline" select="2" attrs="{'readonly':[('state','=','done')]}" />
267 <field name="progress" widget="progressbar"/>
269 <notebook colspan="4">
270 <page string="Information">
271 <group col="3" colspan="2">
275 attrs="{'readonly':[('state','!=','draft')]}"
276 on_change="onchange_planned(planned_hours,effective_hours)"/>
277 <field name="remaining_hours" select="2" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}" colspan="2"/>
278 <button name="%(action_config_compute_remaining)d" string="Review" type="action" colspan="1" target="new" states="open,pending"/>
280 <group col="2" colspan="2">
281 <field name="delay_hours" widget="float_time"/>
282 <field name="effective_hours" widget="float_time"/>
285 <field colspan="4" name="description" nolabel="1" select="2" attrs="{'readonly':[('state','=','done')]}" />
286 <field colspan="4" name="work_ids" nolabel="1" attrs="{'readonly':[('state','in',['draft','done'])]}">
287 <tree string="Task Work" editable="top">
288 <field name="date" />
289 <field name="user_id" />
290 <field name="hours" widget="float_time" />
291 <field name="name" />
295 <group col="11" colspan="4">
296 <field name="state" select="1"/>
297 <button name="do_draft" states="open" string="Draft" type="object" icon="gtk-indent"/>
298 <button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute"/>
299 <button name="do_reopen" states="done,cancelled" string="Reactivate" type="object" icon="gtk-convert"/>
300 <button name="do_pending" states="open" string="Pending" type="object" icon="gtk-media-pause"/>
301 <button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open" string="Delegate" type="action" icon="gtk-execute"/>
302 <button name="%(wizard_close_task)d" states="pending,open" string="Done" type="action" icon="gtk-jump-to"/>
303 <button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel"/>
307 <page groups="base.group_extended" string="Delegations">
308 <field colspan="4" name="history" nolabel="1"/>
309 <field colspan="4" height="150" name="child_ids" nolabel="1" attrs="{'readonly':[('state','!=','draft')]}">
310 <tree string="Delegated tasks">
312 <field name="user_id"/>
313 <field name="date_deadline"/>
314 <field name="planned_hours" widget="float_time"/>
315 <field name="effective_hours" widget="float_time"/>
316 <field name="state"/>
319 <field colspan="4" name="parent_id"/>
321 <page groups="base.group_extended" string="Extra Info" attrs="{'readonly':[('state','in',['draft','done'])]}">
322 <separator string="Planning" colspan="2"/>
323 <separator string="Dates" colspan="2"/>
324 <field name="priority"/>
325 <field name="date_start" select="2"/>
326 <field name="sequence"/>
327 <field name="date_close" select="2"/>
330 <field name="active" select="2"/>
331 <field name="partner_id" select="2"/>
332 <separator colspan="4" string="Notes"/>
333 <field colspan="4" name="notes" nolabel="1"/>
339 <record id="view_task_tree2" model="ir.ui.view">
340 <field name="name">project.task.tree</field>
341 <field name="model">project.task</field>
342 <field name="type">tree</field>
343 <field eval="2" name="priority"/>
344 <field name="arch" type="xml">
345 <tree colors="grey:state in ('cancel','done');blue:remaining_hours<0;red:bool(date_deadline) & (date_deadline<current_date) & (state in ('draft','open'))" string="Tasks">
346 <field name="sequence"/>
348 <field name="project_id"/>
349 <field name="user_id"/>
350 <field name="date_deadline"/>
351 <field name="planned_hours" sum="Planned" widget="float_time"/>
352 <field name="delay_hours" sum="Delay" widget="float_time"/>
353 <field name="progress" widget="progressbar"/>
354 <field name="priority"/>
355 <field name="state"/>
356 <field name="remaining_hours" invisible="1"/>
361 <record id="view_task_calendar" model="ir.ui.view">
362 <field name="name">project.task.calendar</field>
363 <field name="model">project.task</field>
364 <field name="type">calendar</field>
365 <field eval="2" name="priority"/>
366 <field name="arch" type="xml">
367 <calendar color="user_id" date_delay="planned_hours" date_start="date_start" string="Tasks">
369 <field name="project_id"/>
374 <record id="view_task_gantt" model="ir.ui.view">
375 <field name="name">project.task.gantt</field>
376 <field name="model">project.task</field>
377 <field name="type">gantt</field>
378 <field eval="2" name="priority"/>
379 <field name="arch" type="xml">
380 <gantt color="user_id" date_delay="planned_hours" date_start="date_start" string="Tasks">
381 <level object="project.project" link="project_id" domain="[]">
388 <record id="view_project_task_graph" model="ir.ui.view">
389 <field name="name">project.task.graph</field>
390 <field name="model">project.task</field>
391 <field name="type">graph</field>
392 <field name="arch" type="xml">
393 <graph string="Project Tasks" type="bar">
394 <field name="project_id"/>
395 <field name="planned_hours" operator="+"/>
396 <field name="delay_hours" operator="+"/>
401 <record id="action_view_task" model="ir.actions.act_window">
402 <field name="name">All Tasks</field>
403 <field name="res_model">project.task</field>
404 <field name="view_type">form</field>
405 <field name="view_mode">tree,form,calendar,gantt,graph</field>
406 <field eval="False" name="view_id"/>
408 <menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_tasks"/>
410 <record id="action_view_task4" model="ir.actions.act_window">
411 <field name="name">My Tasks</field>
412 <field name="res_model">project.task</field>
413 <field name="view_type">form</field>
414 <field name="view_mode">tree,form,calendar,gantt,graph</field>
415 <field name="domain">[('user_id', '=', uid)]</field>
417 <menuitem action="action_view_task4" id="menu_action_view_task4" parent="project.menu_tasks"/>
419 <record id="action_view_task5_pending" model="ir.actions.act_window">
420 <field name="name">My Pending Tasks</field>
421 <field name="res_model">project.task</field>
422 <field name="view_type">form</field>
423 <field name="view_mode">tree,form,calendar,graph</field>
424 <field name="domain">[('user_id', '=', uid),('state','=','pending')]</field>
426 <menuitem action="action_view_task5_pending" id="menu_tasks_yours_pending" parent="menu_action_view_task4"/>
428 <record id="action_view_task5_prog" model="ir.actions.act_window">
429 <field name="name">My Current Tasks</field>
430 <field name="res_model">project.task</field>
431 <field name="view_type">form</field>
432 <field name="view_mode">tree,form,calendar,graph</field>
433 <field name="domain">[('user_id', '=', uid),('state','in',('open','draft'))]</field>
435 <menuitem action="action_view_task5_prog" id="menu_tasks_yours_prog" parent="menu_action_view_task4"
438 <record id="action_view_task5_prog_prog" model="ir.actions.act_window">
439 <field name="name">My Tasks in Progress</field>
440 <field name="res_model">project.task</field>
441 <field name="view_type">form</field>
442 <field name="view_mode">tree,form,calendar,graph</field>
443 <field name="domain">[('user_id', '=', uid),('state','=','open')]</field>
445 <menuitem action="action_view_task5_prog_prog" id="menu_tasks_yours_prog_prog" parent="menu_tasks_yours_prog"/>
447 <record id="action_view_task5_prog_draft" model="ir.actions.act_window">
448 <field name="name">My Draft Tasks</field>
449 <field name="res_model">project.task</field>
450 <field name="view_type">form</field>
451 <field name="view_mode">tree,form,calendar,graph</field>
452 <field name="domain">[('user_id', '=', uid),('state','=','draft')]</field>
454 <menuitem action="action_view_task5_prog_draft" id="menu_tasks_yours_prog_draft" parent="menu_tasks_yours_prog"/>
457 <record id="action_view_task_new" model="ir.actions.act_window">
458 <field name="name">New Task</field>
459 <field name="res_model">project.task</field>
460 <field name="view_type">form</field>
461 <field name="view_mode">form,tree,calendar,gantt,graph</field>
463 <menuitem action="action_view_task_new" id="menu_action_view_task_new" parent="menu_tasks"/>
465 <record id="action_view_task6_prog" model="ir.actions.act_window">
466 <field name="name">Tasks in Progress</field>
467 <field name="res_model">project.task</field>
468 <field name="view_type">form</field>
469 <field name="view_mode">tree,form,calendar,graph,gantt</field>
470 <field name="domain">[('state', '=', 'progress')]</field>
472 <menuitem action="action_view_task6_prog" id="menu_action_view_task6_prog" parent="project.menu_action_view_task"/>
474 <record id="action_view_task7" model="ir.actions.act_window">
475 <field name="name">Unassigned Tasks</field>
476 <field name="res_model">project.task</field>
477 <field name="view_type">form</field>
478 <field name="view_mode">tree,form,calendar,graph,gantt</field>
479 <field name="domain">[('user_id', '=', False)]</field>
481 <menuitem action="action_view_task7" id="menu_action_view_task7" parent="project.menu_action_view_task"/>
483 <!-- Opening task when double clicking on project -->
484 <record id="dblc_proj" model="ir.actions.act_window">
485 <field name="res_model">project.task</field>
486 <field name="name">Project's tasks</field>
487 <field name="view_type">form</field>
488 <field name="view_mode">tree,form,calendar,graph,gantt</field>
489 <field name="domain">[('project_id', 'child_of', [active_id])]</field>
490 <field name="context">{'project_id':active_id}</field>
492 <record id="ir_project_task_open" model="ir.values">
493 <field eval=" 'tree_but_open'" name="key2"/>
494 <field eval="'project.project'" name="model"/>
495 <field name="name">View project's tasks</field>
496 <field eval="'ir.actions.act_window,'+str(dblc_proj)" name="value"/>
497 <field eval="True" name="object"/>
501 <record id="task_type_edit" model="ir.ui.view">
502 <field name="name">project.task.type.form</field>
503 <field name="model">project.task.type</field>
504 <field name="type">form</field>
505 <field name="arch" type="xml">
506 <form string="Task type">
507 <field colspan="4" name="name" select="1"/>
508 <field colspan="4" name="description" select="1"/>
512 <record id="task_type_tree" model="ir.ui.view">
513 <field name="name">project.task.type.tree</field>
514 <field name="model">project.task.type</field>
515 <field name="type">tree</field>
516 <field name="arch" type="xml">
517 <tree string="Task type">
522 <record id="open_task_type_form" model="ir.actions.act_window">
523 <field name="name">Task Types</field>
524 <field name="res_model">project.task.type</field>
525 <field name="view_type">form</field>
526 <field name="view_id" ref="task_type_tree"/>
528 <menuitem action="open_task_type_form" id="menu_task_types" parent="project.menu_definitions"/>
530 <act_window domain="[('manager', '=', active_id)]" id="act_res_users_2_project_project" name="User's projects" res_model="project.project" src_model="res.users" view_mode="tree,form" view_type="form"/>
533 domain="[('project_id', '=', active_id)]"
534 id="act_project_project_2_project_task_new"
536 res_model="project.task"
537 src_model="project.project"
538 view_mode="form,tree,calendar,graph"
542 domain="[('project_id', '=', active_id)]"
543 id="act_project_project_2_project_task_all"
545 res_model="project.task"
546 src_model="project.project"
547 view_mode="tree,form,calendar,graph"
551 domain="[('project_id', '=', active_id),('state', '<>', 'cancelled'),('state', '<>', 'done')]"
552 id="act_project_project_2_project_task_opened"
553 name="Tasks in Progress"
554 res_model="project.task"
555 src_model="project.project"
556 view_mode="tree,form,calendar,graph"
559 <record id="task_company" model="ir.ui.view">
560 <field name="name">res.company.task.config</field>
561 <field name="model">res.company</field>
562 <field name="type">form</field>
563 <field name="inherit_id" ref="base.view_company_form"/>
564 <field name="arch" type="xml">
565 <page string="Configuration" position="inside">
566 <separator string="Project Management" colspan="4"/>
567 <field name="project_time_mode"/>
573 <act_window domain="[('user_id', '=', active_id),('state', '<>', 'cancelled'),('state', '<>', 'done')]" id="act_res_users_2_project_task_opened" name="Assigned tasks" res_model="project.task" src_model="res.users" view_mode="tree,form,gantt,calendar,graph" view_type="form"/>
575 <act_window domain="[('user_id', '=', active_id),('date', '>=', time.strftime('%Y-%m-01'))]" id="act_res_users_2_project_task_work_month" name="Month works" res_model="project.task.work" src_model="res.users" view_mode="tree,form" view_type="form"/>