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">
36 <field name="state" select="1"/>
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</field>
144 <field name="view_id" eval="edit_project"/>
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>
219 <field name="view_id" ref="view_my_project"/>
222 action="open_view_my_project_open"
223 id="menu_open_view_my_project_open"
224 parent="project.menu_all_project"/>
226 <!-- Wizard for compute remaining hours -->
228 <record id="view_config_compute_remaining" model="ir.ui.view">
229 <field name="name">Compute Remaining Hours </field>
230 <field name="model">config.compute.remaining</field>
231 <field name="type">form</field>
232 <field name="arch" type="xml">
233 <form string="Remaining Hours">
234 <separator colspan="4" string="Change Remaining Hours"/>
236 <field name="remaining_hours" widget="float_time"/>
237 <group col="4" colspan="4">
238 <button icon="gtk-cancel" special="cancel" string="Cancel"/>
239 <button icon="gtk-ok" name="compute_hours" string="Update" type="object"/>
245 <record id="action_config_compute_remaining" model="ir.actions.act_window">
246 <field name="name">Compute Remaining Hours</field>
247 <field name="type">ir.actions.act_window</field>
248 <field name="res_model">config.compute.remaining</field>
249 <field name="view_type">form</field>
250 <field name="view_mode">form</field>
251 <field name="target">new</field>
255 <record id="view_task_form2" model="ir.ui.view">
256 <field name="name">project.task.form</field>
257 <field name="model">project.task</field>
258 <field name="type">form</field>
259 <field eval="2" name="priority"/>
260 <field name="arch" type="xml">
261 <form string="Task edition">
262 <group colspan="6" col="6">
263 <field name="name" select="1" attrs="{'readonly':[('state','=','done')]}" />
264 <field name="project_id" required="1" select="1" attrs="{'readonly':[('state','=','done')]}" />
265 <field name="total_hours" widget="float_time"/>
266 <field name="user_id" select="1" attrs="{'readonly':[('state','=','done')]}" />
267 <field name="date_deadline" select="2" attrs="{'readonly':[('state','=','done')]}" />
268 <field name="progress" widget="progressbar"/>
270 <notebook colspan="4">
271 <page string="Information">
272 <group col="3" colspan="2">
276 attrs="{'readonly':[('state','!=','draft')]}"
277 on_change="onchange_planned(planned_hours,effective_hours)"/>
278 <field name="remaining_hours" select="2" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}" colspan="2"/>
279 <button name="%(action_config_compute_remaining)d" string="Review" type="action" colspan="1" target="new" states="open,pending"/>
281 <group col="2" colspan="2">
282 <field name="delay_hours" widget="float_time"/>
283 <field name="effective_hours" widget="float_time"/>
286 <field colspan="4" name="description" nolabel="1" select="2" attrs="{'readonly':[('state','=','done')]}" />
287 <field colspan="4" name="work_ids" nolabel="1" attrs="{'readonly':[('state','in',['draft','done'])]}">
288 <tree string="Task Work" editable="top">
289 <field name="date" />
290 <field name="user_id" />
291 <field name="hours" widget="float_time" />
292 <field name="name" />
296 <group col="11" colspan="4">
297 <field name="state" select="1"/>
298 <button name="do_draft" states="open" string="Draft" type="object" icon="gtk-indent"/>
299 <button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute"/>
300 <button name="do_reopen" states="done,cancelled" string="Reactivate" type="object" icon="gtk-convert"/>
301 <button name="do_pending" states="open" string="Pending" type="object" icon="gtk-media-pause"/>
302 <button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open" string="Delegate" type="action" icon="gtk-execute"/>
303 <button name="%(wizard_close_task)d" states="pending,open" string="Done" type="action" icon="gtk-jump-to"/>
304 <button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel"/>
308 <page groups="base.group_extended" string="Delegations">
309 <field colspan="4" name="history" nolabel="1"/>
310 <field colspan="4" height="150" name="child_ids" nolabel="1" attrs="{'readonly':[('state','!=','draft')]}" context="{'project_id': project_id}">
311 <tree string="Delegated tasks">
313 <field name="user_id"/>
314 <field name="state"/>
315 <field name="effective_hours" widget="float_time"/>
316 <field name="progress" widget="progressbar"/>
317 <field name="remaining_hours" widget="float_time"/>
318 <field name="date_deadline"/>
321 <field colspan="4" name="parent_id"/>
323 <page groups="base.group_extended" string="Extra Info" attrs="{'readonly':[('state','in',['draft','done'])]}">
324 <separator string="Planning" colspan="2"/>
325 <separator string="Dates" colspan="2"/>
326 <field name="priority"/>
327 <field name="date_start" select="2"/>
328 <field name="sequence"/>
329 <field name="date_close" select="2"/>
332 <field name="active" select="2"/>
333 <field name="partner_id" select="2"/>
334 <separator colspan="4" string="Notes"/>
335 <field colspan="4" name="notes" nolabel="1"/>
341 <record id="view_task_tree2" model="ir.ui.view">
342 <field name="name">project.task.tree</field>
343 <field name="model">project.task</field>
344 <field name="type">tree</field>
345 <field eval="2" name="priority"/>
346 <field name="arch" type="xml">
347 <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">
348 <field name="sequence"/>
350 <field name="project_id"/>
351 <field name="user_id"/>
352 <field name="date_deadline"/>
353 <field name="planned_hours" sum="Planned" widget="float_time"/>
354 <field name="delay_hours" sum="Delay" widget="float_time"/>
355 <field name="progress" widget="progressbar"/>
356 <field name="priority"/>
357 <field name="state"/>
358 <field name="remaining_hours" invisible="1"/>
363 <record id="my_pending_task" model="ir.ui.view">
364 <field name="name">my.pending.task.tree</field>
365 <field name="model">project.task</field>
366 <field name="type">tree</field>
367 <field eval="2" name="priority"/>
368 <field name="arch" type="xml">
369 <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">
370 <field name="sequence"/>
372 <field name="project_id"/>
373 <field name="delegated_user_id"/>
374 <field name="date_deadline"/>
375 <field name="planned_hours" sum="Planned" widget="float_time"/>
376 <field name="delay_hours" sum="Delay" widget="float_time"/>
377 <field name="progress" widget="progressbar"/>
378 <field name="priority"/>
379 <field name="state"/>
380 <field name="remaining_hours" invisible="1"/>
385 <record id="view_task_calendar" model="ir.ui.view">
386 <field name="name">project.task.calendar</field>
387 <field name="model">project.task</field>
388 <field name="type">calendar</field>
389 <field eval="2" name="priority"/>
390 <field name="arch" type="xml">
391 <calendar color="user_id" date_delay="planned_hours" date_start="date_start" string="Tasks">
393 <field name="project_id"/>
398 <record id="view_task_gantt" model="ir.ui.view">
399 <field name="name">project.task.gantt</field>
400 <field name="model">project.task</field>
401 <field name="type">gantt</field>
402 <field eval="2" name="priority"/>
403 <field name="arch" type="xml">
404 <gantt color="user_id" date_delay="planned_hours" date_start="date_start" string="Tasks">
405 <level object="project.project" link="project_id" domain="[]">
412 <record id="view_project_task_graph" model="ir.ui.view">
413 <field name="name">project.task.graph</field>
414 <field name="model">project.task</field>
415 <field name="type">graph</field>
416 <field name="arch" type="xml">
417 <graph string="Project Tasks" type="bar">
418 <field name="project_id"/>
419 <field name="planned_hours" operator="+"/>
420 <field name="delay_hours" operator="+"/>
425 <record id="action_view_task" model="ir.actions.act_window">
426 <field name="name">All Tasks</field>
427 <field name="res_model">project.task</field>
428 <field name="view_type">form</field>
429 <field name="view_mode">tree,form,calendar,gantt,graph</field>
430 <field eval="False" name="view_id"/>
432 <menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_tasks"/>
434 <record id="action_view_task4" model="ir.actions.act_window">
435 <field name="name">My Tasks</field>
436 <field name="res_model">project.task</field>
437 <field name="view_type">form</field>
438 <field name="view_mode">tree,form,calendar,gantt,graph</field>
439 <field name="domain">[('user_id', '=', uid)]</field>
441 <menuitem action="action_view_task4" id="menu_action_view_task4" parent="project.menu_tasks"/>
443 <record id="action_view_task5_pending" model="ir.actions.act_window">
444 <field name="name">My Pending Tasks</field>
445 <field name="res_model">project.task</field>
446 <field name="view_type">form</field>
447 <field name="view_mode">tree,form,calendar,graph</field>
448 <field name="domain">[('user_id', '=', uid),('state','=','pending')]</field>
449 <field name="view_id" ref="my_pending_task"/>
451 <menuitem action="action_view_task5_pending" id="menu_tasks_yours_pending" parent="menu_action_view_task4"/>
453 <record id="action_view_task5_prog" model="ir.actions.act_window">
454 <field name="name">My Current Tasks</field>
455 <field name="res_model">project.task</field>
456 <field name="view_type">form</field>
457 <field name="view_mode">tree,form,calendar,graph</field>
458 <field name="domain">[('user_id', '=', uid),('state','in',('open','draft'))]</field>
460 <menuitem action="action_view_task5_prog" id="menu_tasks_yours_prog" parent="menu_action_view_task4"
463 <record id="action_view_task5_prog_prog" model="ir.actions.act_window">
464 <field name="name">My Tasks in Progress</field>
465 <field name="res_model">project.task</field>
466 <field name="view_type">form</field>
467 <field name="view_mode">tree,form,calendar,graph</field>
468 <field name="domain">[('user_id', '=', uid),('state','=','open')]</field>
470 <menuitem action="action_view_task5_prog_prog" id="menu_tasks_yours_prog_prog" parent="menu_tasks_yours_prog"/>
472 <record id="action_view_task5_prog_draft" model="ir.actions.act_window">
473 <field name="name">My Draft Tasks</field>
474 <field name="res_model">project.task</field>
475 <field name="view_type">form</field>
476 <field name="view_mode">tree,form,calendar,graph</field>
477 <field name="domain">[('user_id', '=', uid),('state','=','draft')]</field>
479 <menuitem action="action_view_task5_prog_draft" id="menu_tasks_yours_prog_draft" parent="menu_tasks_yours_prog"/>
482 <record id="action_view_task_new" model="ir.actions.act_window">
483 <field name="name">New Task</field>
484 <field name="res_model">project.task</field>
485 <field name="view_type">form</field>
486 <field name="view_mode">form,tree,calendar,gantt,graph</field>
488 <menuitem action="action_view_task_new" id="menu_action_view_task_new" parent="menu_tasks"/>
490 <record id="action_view_task6_prog" model="ir.actions.act_window">
491 <field name="name">Tasks in Progress</field>
492 <field name="res_model">project.task</field>
493 <field name="view_type">form</field>
494 <field name="view_mode">tree,form,calendar,graph,gantt</field>
495 <field name="domain">[('state','=','open')]</field>
497 <menuitem action="action_view_task6_prog" id="menu_action_view_task6_prog" parent="project.menu_action_view_task"/>
499 <record id="action_view_task7" model="ir.actions.act_window">
500 <field name="name">Unassigned Tasks</field>
501 <field name="res_model">project.task</field>
502 <field name="view_type">form</field>
503 <field name="view_mode">tree,form,calendar,graph,gantt</field>
504 <field name="domain">[('user_id', '=', False)]</field>
506 <menuitem action="action_view_task7" id="menu_action_view_task7" parent="project.menu_action_view_task"/>
508 <!-- Opening task when double clicking on project -->
509 <record id="dblc_proj" model="ir.actions.act_window">
510 <field name="res_model">project.task</field>
511 <field name="name">Project's tasks</field>
512 <field name="view_type">form</field>
513 <field name="view_mode">tree,form,calendar,graph,gantt</field>
514 <field name="domain">[('project_id', 'child_of', [active_id])]</field>
515 <field name="context">{'project_id':active_id, 'active_test':False}</field>
517 <record id="ir_project_task_open" model="ir.values">
518 <field eval=" 'tree_but_open'" name="key2"/>
519 <field eval="'project.project'" name="model"/>
520 <field name="name">View project's tasks</field>
521 <field eval="'ir.actions.act_window,'+str(dblc_proj)" name="value"/>
522 <field eval="True" name="object"/>
526 <record id="task_type_edit" model="ir.ui.view">
527 <field name="name">project.task.type.form</field>
528 <field name="model">project.task.type</field>
529 <field name="type">form</field>
530 <field name="arch" type="xml">
531 <form string="Task type">
532 <field colspan="4" name="name" select="1"/>
533 <field colspan="4" name="description" select="1"/>
537 <record id="task_type_tree" model="ir.ui.view">
538 <field name="name">project.task.type.tree</field>
539 <field name="model">project.task.type</field>
540 <field name="type">tree</field>
541 <field name="arch" type="xml">
542 <tree string="Task type">
547 <record id="open_task_type_form" model="ir.actions.act_window">
548 <field name="name">Task Types</field>
549 <field name="res_model">project.task.type</field>
550 <field name="view_type">form</field>
551 <field name="view_id" ref="task_type_tree"/>
553 <menuitem action="open_task_type_form" id="menu_task_types" parent="project.menu_definitions"/>
555 <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"/>
558 domain="[('project_id', '=', active_id)]"
559 id="act_project_project_2_project_task_new"
561 res_model="project.task"
562 src_model="project.project"
563 view_mode="form,tree,calendar,graph"
567 domain="[('project_id', '=', active_id)]"
568 id="act_project_project_2_project_task_all"
570 res_model="project.task"
571 src_model="project.project"
572 view_mode="tree,form,calendar,graph"
576 domain="[('project_id', '=', active_id),('state', '<>', 'cancelled'),('state', '<>', 'done')]"
577 id="act_project_project_2_project_task_opened"
578 name="Tasks in Progress"
579 res_model="project.task"
580 src_model="project.project"
581 view_mode="tree,form,calendar,graph"
584 <record id="task_company" model="ir.ui.view">
585 <field name="name">res.company.task.config</field>
586 <field name="model">res.company</field>
587 <field name="type">form</field>
588 <field name="inherit_id" ref="base.view_company_form"/>
589 <field name="arch" type="xml">
590 <page string="Configuration" position="inside">
591 <separator string="Project Management" colspan="4"/>
592 <field name="project_time_mode"/>
598 <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"/>
600 <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"/>