<menuitem id="menu_project_management" name="Project" parent="base.menu_main_pm" sequence="1"/>
<menuitem id="menu_definitions" name="Configuration" parent="base.menu_main_pm" sequence="60"/>
+
+ <act_window
+ context="{'search_default_project_id': [active_id], 'default_project_id': active_id}"
+ id="act_project_project_2_project_task_all"
+ name="Tasks"
+ res_model="project.task"
+ src_model="project.project"
+ view_mode="kanban,tree,form,calendar,graph"
+ view_type="form"/>
<!-- Project -->
<record id="edit_project" model="ir.ui.view">
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Project" layout="manual">
- <div class="oe_form_topbar">
+ <header>
<button name="set_done" string="Done" type="object" states="open,pending"/>
<button name="set_open" string="Re-open project" type="object" states="pending,cancelled,close"/>
<button name="set_pending" string="Pending" type="object" states="open"/>
<button string="New Project Based on Template" name="duplicate_template" type="object" states="template" context="{'parent_id':parent_id}"/>
<button name="reset_project" string="Reset as Project" type="object" states="template"/>
<button name="set_cancel" string="Cancel" type="object" states="open,pending"/>
- <div class="oe_right">
- <field name="state" nolabel="1" widget="statusbar" statusbar_visible="open,close" statusbar_colors='{"pending":"blue"}' select="1" readonly="1"/>
- </div>
- <div class="oe_clear"/>
- </div>
+ <field name="state" widget="statusbar" statusbar_visible="open,close" statusbar_colors='{"pending":"blue"}' readonly="1"/>
+ </header>
<sheet string="Project" layout="auto">
- <group colspan="6" col="6">
- <field name="name" string="Project Name" select="1"/>
- <field name="analytic_account_id" invisible="1" required="0"/>
- <field name="parent_id" string="Parent" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
- <field name="user_id" string="Project Manager" select="1" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
- <field name="date_start" string="Start Date" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
- <field name="date" string="End Date" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
- <field name="progress_rate" widget="progressbar"/>
+ <group col="4" colspan="4">
+ <group col="2" colspan="2" class="oe_form_group_label_border">
+ <field name="name" string="Project Name" select="1"/>
+ <field name="partner_id" on_change="onchange_partner_id(partner_id)" select="1"/>
+ <field name="user_id" string="Project Manager" select="1" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
+ <field name="analytic_account_id" invisible="1" required="0"/>
+ <field name="parent_id" invisible="1" string="Parent" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
+ <field name="privacy_visibility"/>
+ <!--<field name="date_start" string="Start Date" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>-->
+ <!--<field name="date" string="End Date" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>-->
+ <!--<field name="progress_rate" widget="progressbar"/>-->
+ </group>
+ <group col="2" colspan="2" class="oe_form_group_label_border">
+ <table border="0">
+ <tr name="use_tasks_row">
+ <th style="border-right:1px solid #DDD;" width="140px">Tasks Management</th>
+ <td><field name="use_tasks" nolabel="1"/></td>
+ <td style="text-align:right;" width="110px"><button icon="terp-stock_align_left_24" class="oe_btn_width" name="%(act_project_project_2_project_task_all)d" string="Tasks" type="action" attrs="{'invisible':[('use_tasks','=', 0)]}"/></td>
+ </tr>
+ <tr name="use_attachment_row">
+ <th/>
+ <td/>
+ <td style="text-align:right;" width="110px"><button icon="gtk-dnd-multiple" class="oe_btn_width" name="%(base.action_attachment)d" string="Documents" type="action" /></td>
+ </tr>
+ </table>
+ </group>
</group>
<notebook colspan="4">
<page string="Administration">
- <group col="2" colspan="2" name="kanban">
- <separator colspan="2" string="Project Management"/>
- <field name="use_tasks"/>
- </group>
<group col="2" colspan="2">
<separator colspan="4" string="Performance"/>
<field name="planned_hours" widget="float_time"/>
<field name="active" attrs="{'invisible':[('state','in',['open', 'pending', 'template'])]}"/>
</group>
</page>
- <page string="Members">
- <field colspan="4" name="members" nolabel="1">
+ <page name="team" string="Team" attrs="{'invisible':[('use_tasks','=', 0)]}">
+ <field colspan="4" name="members" nolabel="1" help="Project's members are users who can have an access to the tasks related to this project.">
<tree string="Members">
<field name="name"/>
<field name="user_email"/>
</field>
</page>
<page string="Billing" groups="account.group_account_invoice">
- <field colspan="4" name="partner_id" on_change="onchange_partner_id(partner_id)" select="1" string="Customer"/>
+ <!--<field colspan="4" name="partner_id" on_change="onchange_partner_id(partner_id)" select="1" string="Customer"/>-->
<field name="warn_customer"/>
<field name="currency_id" select="1" groups="base.group_multi_company" required="1"/>
<newline/>
<page string="Tasks Stages">
<field nolabel="1" name="type_ids" colspan="4"/>
</page>
- <page string="Notes">
- <field colspan="4" name="description" nolabel="1"/>
- </page>
</notebook>
<newline/>
</sheet>
</tree>
</field>
</record>
-
+
<act_window
- context="{'search_default_project_id': [active_id], 'default_project_id': active_id}"
+ context="{'search_default_project_id': active_id, 'default_project_id': active_id}"
id="act_project_project_2_project_task_all"
name="Tasks"
res_model="project.task"
<field name="task_count"/>
<templates>
<t t-name="kanban-box">
- <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_project oe_kanban_auto_height">
+ <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_project oe_kanban_auto_height oe_kanban_global_click">
<a class="oe_kanban_menuaction oe_i">B</a>
<ul class="oe_kanban_menu">
<li><a type="edit">Edit...</a></li>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
<div class="oe_kanban_content">
- <a type="edit"><h3 class="oe_kanban_ellipsis"><field name="name"/></h3></a>
+ <h3 class="oe_kanban_ellipsis"><field name="name"/></h3>
<div class="oe_kanban_project_list">
<a t-if="record.use_tasks.raw_value"
<field eval="2" name="priority"/>
<field name="arch" type="xml">
<form string="Project" layout="manual">
- <div class="oe_form_topbar">
- <button name="action_close" states="pending,open" string="Done" type="object"/>
- <button name="do_open" states="pending,draft" string="Start Task" type="object"/>
- <button name="%(action_project_task_reevaluate)d" states="done,cancelled" string="Reactivate" type="action" context="{'button_reactivate':True}" />
- <button name="do_pending" states="open" string="Pending" type="object"/>
- <button name="do_draft" states="open" string="Draft" type="object"/>
- <button name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action"/>
- <button name="do_cancel" states="draft,open,pending" string="Cancel" type="object"/>
- <div class="oe_right">
- <field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}' select="1"/>
- </div>
- <div class="oe_clear"/>
- </div>
+ <header>
+ <button name="do_open" string="Start Task" type="object"
+ states="draft,pending"/>
+ <button name="%(action_project_task_reevaluate)d" string="Reactivate" type="action"
+ states="done,cancelled" context="{'button_reactivate':True}"/>
+ <button name="do_pending" string="Pending" type="object"
+ states="open"/>
+ <button name="action_close" string="Done" type="object"
+ states="draft,open,pending"/>
+ <button name="do_draft" string="Draft" type="object"
+ states="cancel,done"/>
+ <button name="%(action_project_task_delegate)d" string="Delegate" type="action"
+ states="pending,open,draft"/>
+ <button name="do_cancel" string="Cancel" type="object"
+ states="draft,open,pending" />
+ <button name="stage_previous" string="Previous Stage" type="object"
+ states="open,pending" icon="gtk-go-back" attrs="{'invisible': [('stage_id','=', False)]}"/>
+ <button name="stage_next" string="Next Stage" type="object"
+ states="open,pending" icon="gtk-go-forward" attrs="{'invisible': [('stage_id','=', False)]}"/>
+ <field name="stage_id" widget="statusbar"/>
+ </header>
<sheet string="Task edition" layout="auto">
<group colspan="6" col="6">
<field name="name" select="1"/>
<tree string="Delegated tasks">
<field name="name"/>
<field name="user_id"/>
- <field name="state"/>
+ <field name="stage_id"/>
+ <field name="state" groups="base.group_no_one"/>
<field name="effective_hours" widget="float_time"/>
<field name="progress" widget="progressbar"/>
<field name="remaining_hours" widget="float_time"/>
<separator string="Planning" colspan="2"/>
<field name="priority"/>
<field name="sequence"/>
+ <field name="state" groups="base.group_no_one"/>
</group>
<separator string="Miscellaneous" colspan="4"/>
<field name="partner_id" />
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
- <group col="4" colspan="2">
- <field name="type_id" widget="selection" readonly="1"/>
- <button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
- <button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
- </group>
+ <field name="state" groups="base.group_no_one"/>
<separator colspan="4" string="Notes"/>
<field colspan="4" name="notes" nolabel="1"/>
</page>
</form>
</field>
</record>
-
+
<!-- Project Task Kanban View -->
<record model="ir.ui.view" id="view_task_kanban">
<field name="name">project.task.kanban</field>
<field name="model">project.task</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
- <kanban default_group_by="type_id" >
+ <kanban default_group_by="stage_id" >
<field name="color"/>
<field name="priority"/>
- <field name="type_id"/>
+ <field name="stage_id"/>
<field name="user_id"/>
<field name="user_email"/>
<field name="description"/>
<field name="sequence"/>
- <field name="state"/>
+ <field name="state" groups="base.group_no_one"/>
<field name="kanban_state"/>
<field name="remaining_hours" sum="Remaining Time" groups="project.group_time_work_estimation_tasks"/>
<field name="date_deadline"/>
<a name="action_close" states="draft,pending,open" string="Done" type="object" icon="terp-dialog-close"/>
</div>
<div class="oe_kanban_right">
- <a name="set_kanban_state_blocked" string="Mark as Blocked" kanban_states="normal,done" type="object" icon="kanban-stop"/>
- <a name="set_kanban_state_normal" string="Normal" kanban_states="blocked,done" type="object" icon="gtk-media-play"/>
- <a name="set_kanban_state_done" string="Done" kanban_states="blocked,normal" type="object" icon="kanban-apply"/>
+ <a name="set_kanban_state_blocked" string="Mark as Blocked" attrs="{'invisible' : [('kanban_state', 'not in', ('normal', 'done'))]}" type="object" icon="kanban-stop"/>
+ <a name="set_kanban_state_normal" string="Normal" attrs="{'invisible' : [('kanban_state', 'not in', ('blocked', 'done'))]}" type="object" icon="gtk-media-play"/>
+ <a name="set_kanban_state_done" string="Done" attrs="{'invisible' : [('kanban_state', 'not in', ('blocked', 'normal'))]}" type="object" icon="kanban-apply"/>
</div>
<div class="oe_kanban_clear"/>
</div>
<field name="effective_hours" widget="float_time" sum="Spent Hours" invisible="1"/>
<field name="remaining_hours" widget="float_time" sum="Remaining Hours" on_change="onchange_remaining(remaining_hours,planned_hours)" invisible="context.get('set_visible',False)" groups="project.group_time_work_estimation_tasks"/>
<field name="date_deadline" invisible="context.get('deadline_visible',True)"/>
- <field name="type_id" invisible="context.get('set_visible',False)"/>
- <button name="next_type" invisible="context.get('set_visible',False)"
- states="draft,open,pending"
- string="Change Stage"
- type="object"
- icon="gtk-go-forward"
- help="Change Type"/>
+ <field name="stage_id" invisible="context.get('set_visible',False)"/>
+ <field name="state" invisible="context.get('set_visible',False)" groups="base.group_no_one"/>
<field name="date_start" invisible="1" groups="base.group_no_one"/>
<field name="date_end" invisible="1" groups="base.group_no_one"/>
<field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/>
- <field name="state" invisible="context.get('set_visible',False)"/>
- <button name="do_open" states="pending,draft,done,cancelled" string="Start Task" type="object" icon="gtk-media-play" help="For changing to open state" invisible="context.get('set_visible',False)"/>
- <button name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action" icon="terp-personal" help="For changing to delegate state"/>
- <button name="action_close" states="draft,pending,open" string="Done" type="object" icon="terp-dialog-close" help="For changing to done state"/>
</tree>
</field>
</record>
<filter string="Deadlines" context="{'deadline_visible': False}" domain="[('date_deadline','<>',False)]" help="Show only tasks having a deadline" icon="terp-gnome-cpu-frequency-applet+"/>
<separator orientation="vertical"/>
<field name="name"/>
+ <field name="project_id" invisible="1"/>
<filter name="project" string="Project" domain="[('project_id.user_id','=',uid)]" help="My Projects" icon="terp-check"/>
+ <field name="project_id"/>
<field name="user_id">
<filter string="My Tasks" domain="[('user_id','=',uid)]" help="My Tasks" icon="terp-personal" />
<filter string="Unassigned Tasks" domain="[('user_id','=',False)]" help="Unassigned Tasks" icon="terp-personal-" />
<separator orientation="vertical"/>
<filter string="Project" name="group_project_id" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/>
<separator orientation="vertical"/>
- <filter string="Stage" name="group_stage_id" icon="terp-stage" domain="[]" context="{'group_by':'type_id'}"/>
+ <filter string="Stage" name="group_stage_id" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Status" name="group_state" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
<filter string="Deadline" icon="terp-gnome-cpu-frequency-applet+" domain="[]" context="{'group_by':'date_deadline'}"/>
</search>
</field>
</record>
+
+ <record id="analytic_account_inherited_form" model="ir.ui.view">
+ <field name="name">account.analytic.account.form.inherit</field>
+ <field name="model">account.analytic.account</field>
+ <field name="type">form</field>
+ <field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
+ <field eval="18" name="priority"/>
+ <field name="arch" type="xml">
+ <xpath expr='//separator[@name="project_sep"]' position='replace'>
+ <separator colspan="2" string="Project" name="project_sep"/>
+ </xpath>
+ <xpath expr='//group[@name="project"]' position='inside'>
+ <field name="use_tasks" />
+ </xpath>
+ </field>
+ </record>
<record id="action_view_task" model="ir.actions.act_window">
<field name="name">Tasks</field>
<field name="arch" type="xml">
<search string="Tasks Stages">
<group>
- <filter icon="terp-check" string="Common" name="common" domain="[('project_default', '=', 1)]" help="Stages common to all projects"/>
+ <filter icon="terp-check" string="Common" name="common" domain="[('case_default', '=', 1)]" help="Stages common to all projects"/>
<separator orientation="vertical"/>
<field name="name"/>
</group>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Task Stage">
- <group colspan="4" col="6">
- <field name="name"/>
- <field name="project_default"/>
- <field name="sequence"/>
+ <group colspan="2" col="2">
+ <field name="name"/>
+ <field name="state"/>
+ </group>
+ <group colspan="2" col="4">
+ <field name="case_default"/>
+ <field name="sequence"/>
+ <field name="fold"/>
</group>
<separator string="Description" colspan="4"/>
<field colspan="4" name="description" nolabel="1"/>
<tree string="Task Stage">
<field name="sequence"/>
<field name="name"/>
+ <field name="state"/>
</tree>
</field>
</record>
<menuitem id="menu_tasks_config" name="GTD" parent="project.menu_definitions" sequence="1"/>
- <menuitem id="menu_project_config_project" name="Stages" parent="menu_definitions" sequence="1"/>
+ <menuitem id="menu_project_config_project" name="Stages" parent="project.menu_definitions" sequence="1"/>
- <menuitem action="open_task_type_form" id="menu_task_types_view" parent="menu_project_config_project" sequence="2" groups="base.group_no_one"/>
+ <menuitem action="open_task_type_form" name="Task Stages" id="menu_task_types_view" parent="menu_project_config_project" sequence="2"/>
<menuitem action="open_view_project_all" id="menu_projects" name="Projects" parent="menu_project_management" sequence="1"/>
- <act_window context="{'search_default_user_id': [active_id], 'default_user_id': 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"/>
+ <act_window context="{'search_default_user_id': active_id, 'default_user_id': 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"/>
<record id="task_company" model="ir.ui.view">
<field name="name">res.company.task.config</field>