746 lines
41 KiB
XML
746 lines
41 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
|
|
<!-- Top menu item -->
|
|
<menuitem name="Project"
|
|
id="menu_main_pm"
|
|
groups="group_project_manager,group_project_user"
|
|
web_icon="project,static/description/icon.png"
|
|
sequence="50"/>
|
|
|
|
<menuitem name="Search"
|
|
id="menu_project_management"
|
|
parent="menu_main_pm"
|
|
sequence="2" groups="base.group_no_one,group_project_user"/>
|
|
|
|
<menuitem id="menu_project_config" name="Configuration" parent="menu_main_pm"
|
|
sequence="100" groups="project.group_project_manager"/>
|
|
|
|
<record id="view_task_search_form" model="ir.ui.view">
|
|
<field name="name">project.task.search.form</field>
|
|
<field name="model">project.task</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Tasks">
|
|
<field name="name" string="Tasks"/>
|
|
<field name="tag_ids"/>
|
|
<field name="partner_id"/>
|
|
<field name="project_id"/>
|
|
<field name="user_id"/>
|
|
<field name="stage_id"/>
|
|
<filter string="My Tasks" name="my_tasks" domain="[('user_id','=',uid)]"/>
|
|
<filter string="Unassigned" name="unassigned" domain="[('user_id', '=', False)]"/>
|
|
<separator/>
|
|
<filter string="New" name="draft" domain="[('stage_id.sequence', '<=', 1)]"/>
|
|
<separator/>
|
|
<filter string="Unread Messages" name="message_needaction" domain="[('message_needaction','=',True)]"/>
|
|
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Project" name="project" context="{'group_by':'project_id'}"/>
|
|
<filter string="Task" context="{'group_by':'name'}"/>
|
|
<filter string="Assigned to" name="User" context="{'group_by':'user_id'}"/>
|
|
<filter string="Stage" name="Stage" context="{'group_by':'stage_id'}"/>
|
|
<filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
|
<separator/>
|
|
<filter string="Last Message" name="group_message_last_post" context="{'group_by':'message_last_post:week'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="act_project_project_2_project_task_all" model="ir.actions.act_window">
|
|
<field name="name">Tasks</field>
|
|
<field name="res_model">project.task</field>
|
|
<field name="view_mode">kanban,tree,form,calendar,pivot,graph</field>
|
|
<field name="context">{
|
|
'group_by': 'stage_id',
|
|
'search_default_project_id': [active_id],
|
|
'default_project_id': active_id,
|
|
}</field>
|
|
<field name="search_view_id" ref="view_task_search_form"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Here, you can create new tasks
|
|
</p>
|
|
<p>
|
|
You can now manage your tasks in order to get things done efficiently. Track progress, discuss, attach documents, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Project -->
|
|
<record id="edit_project" model="ir.ui.view">
|
|
<field name="name">project.project.form</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Project">
|
|
<sheet string="Project">
|
|
<field name="analytic_account_id" invisible="1" required="0"/>
|
|
<div class="oe_button_box" name="button_box" groups="base.group_user">
|
|
<button class="oe_stat_button" name="attachment_tree_view" type="object" icon="fa-files-o">
|
|
<field string="Documents" name="doc_count" widget="statinfo"/>
|
|
</button>
|
|
<button class="oe_stat_button" type="action" attrs="{'invisible':[('use_tasks','=', False)]}"
|
|
name="%(act_project_project_2_project_task_all)d" icon="fa-tasks">
|
|
<field string="Tasks" name="task_count" widget="statinfo" options="{'label_field': 'label_tasks'}"/>
|
|
</button>
|
|
<button name="toggle_active" type="object"
|
|
confirm="(Un)archiving a project automatically (un)archives its tasks and issues. Do you want to proceed?"
|
|
class="oe_stat_button" icon="fa-archive">
|
|
<field name="active" widget="boolean_button"
|
|
options='{"terminology": "archive"}'/>
|
|
</button>
|
|
</div>
|
|
<div class="oe_title">
|
|
<h1>
|
|
<field name="name" placeholder="Project Name"/>
|
|
</h1>
|
|
<div name="options_active" class="oe_edit_only">
|
|
<div>
|
|
<field name="use_tasks" class="oe_inline"/>
|
|
<label for="use_tasks" class="oe_inline" string="Tasks"/>
|
|
<span attrs="{'invisible':[('use_tasks', '=', False)]}">as </span>
|
|
<field name="label_tasks" class="oe_inline oe_input_align" attrs="{'invisible': [('use_tasks', '=', False)]}"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<notebook>
|
|
<page name="settings" string="Settings">
|
|
<group>
|
|
<field name="user_id" string="Project Manager"
|
|
attrs="{'readonly':[('active','=',False)]}"/>
|
|
<field name="privacy_visibility" widget="radio"/>
|
|
<field name="partner_id" string="Customer"/>
|
|
</group>
|
|
<group name="misc">
|
|
<group string="Configuration" groups="base.group_no_one">
|
|
<field name="sequence" groups="base.group_no_one"/>
|
|
</group>
|
|
<group string="Time Scheduling" groups="base.group_no_one">
|
|
<field name="resource_calendar_id" groups="base.group_no_one"/>
|
|
</group>
|
|
</group>
|
|
</page>
|
|
<page name="emails" string="Emails" attrs="{'invisible': [('alias_domain', '=', False)]}">
|
|
<group name="group_alias">
|
|
<label for="alias_name" string="Email Alias"/>
|
|
<div name="alias_def">
|
|
<field name="alias_id" class="oe_read_only oe_inline"
|
|
string="Email Alias" required="0"/>
|
|
<div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;" >
|
|
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
|
|
</div>
|
|
</div>
|
|
<label for="alias_model" string="Incoming Emails create" class="oe_edit_only"/>
|
|
<field name="alias_model" class="oe_inline oe_edit_only" nolabel="1"/>
|
|
<field name="alias_contact" class="oe_inline oe_edit_only"
|
|
string="Accept Emails From"/>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers" help="Follow this project to automatically track the events associated to tasks and issues of this project." groups="base.group_user"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project_project_filter" model="ir.ui.view">
|
|
<field name="name">project.project.select</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Search Project">
|
|
<field name="name" string="Project Name"/>
|
|
<filter string="My Favorites" name="my_projects" domain="[('favorite_user_ids', 'in', uid)]"/>
|
|
<separator/>
|
|
<filter string="Followed by Me" domain="[('message_is_follower','=',True)]"/>
|
|
<separator/>
|
|
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
|
|
<field name="user_id" string="Project Manager"/>
|
|
<field name="partner_id" string="Contact" filter_domain="[('partner_id', 'child_of', self)]"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Manager" name="Manager" context="{'group_by':'user_id'}"/>
|
|
<filter string="Contact" name="Partner" context="{'group_by':'partner_id'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project" model="ir.ui.view">
|
|
<field name="name">project.project.tree</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<tree decoration-bf="message_needaction==True" decoration-muted="active == False" string="Projects">
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="message_needaction" invisible="1"/>
|
|
<field name="active" invisible="1"/>
|
|
<field name="name" string="Project Name"/>
|
|
<field name="user_id" string="Project Manager"/>
|
|
<field name="partner_id" string="Contact"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="project_project_view_form_simplified" model="ir.ui.view">
|
|
<field name="name">project.project.view.form.simplified</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Project">
|
|
<sheet>
|
|
<group>
|
|
<group>
|
|
<field name="name" class="o_project_name oe_inline"
|
|
string="Project Name" placeholder="e.g. Office Party"/>
|
|
<label for="alias_name" string="Choose a Project Email" attrs="{'invisible': [('alias_domain', '=', False)]}"/>
|
|
<div name="alias_def" attrs="{'invisible': [('alias_domain', '=', False)]}">
|
|
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
|
|
</div>
|
|
</group>
|
|
<group name='options' invisible="1">
|
|
<field name="use_tasks"/>
|
|
</group>
|
|
</group>
|
|
<footer>
|
|
<button string="Create" name="close_dialog" type="object" class="btn-primary"/>
|
|
<button string="Discard" class="btn-default" special="cancel"/>
|
|
</footer>
|
|
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="open_create_project" model="ir.actions.act_window">
|
|
<field name="name">Create a Project</field>
|
|
<field name="res_model">project.project</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">form</field>
|
|
<field name="view_id" ref="project_project_view_form_simplified"/>
|
|
<field name="target">new</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="view_project_kanban">
|
|
<field name="name">project.project.kanban</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<kanban class="oe_background_grey o_kanban_dashboard o_project_kanban" on_create="project.open_create_project">
|
|
<field name="name"/>
|
|
<field name="use_tasks"/>
|
|
<field name="color"/>
|
|
<field name="task_count"/>
|
|
<field name="task_needaction_count"/>
|
|
<field name="label_tasks"/>
|
|
<field name="alias_id"/>
|
|
<field name="alias_name"/>
|
|
<field name="alias_domain"/>
|
|
<field name="doc_count"/>
|
|
<field name="is_favorite"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="#{kanban_color(record.color.raw_value)} oe_kanban_global_click">
|
|
<div class="o_project_kanban_main">
|
|
<div class="o_kanban_card_content o_visible">
|
|
<div class="o_kanban_primary_left">
|
|
<div class="o_primary">
|
|
<span><t t-esc="record.name.value"/></span>
|
|
</div>
|
|
<div t-if="record.alias_name.value and record.alias_domain.value">
|
|
<span><i class="fa fa-envelope"></i> <t t-esc="record.alias_id.value"/></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="o_kanban_card_manage_pane o_invisible">
|
|
<div class="o_kanban_card_manage_section o_kanban_manage_reports">
|
|
<div groups="project.group_project_manager">
|
|
<a type="edit">Settings</a>
|
|
</div>
|
|
<div attrs="{'invisible': [('use_tasks', '=', False)]}">
|
|
<a name="%(project.action_project_task_user_tree_filtered)d" type="action">Tasks</a>
|
|
</div>
|
|
</div>
|
|
<div t-if="widget.editable" class="o_project_kanban_colorpicker">
|
|
<ul class="oe_kanban_colorpicker" data-field="color"/>
|
|
</div>
|
|
</div>
|
|
<div class="o_project_kanban_manage">
|
|
<a class="o_kanban_manage_toggle_button o_left" href="#">More <i class="fa fa-caret-down"/></a>
|
|
<a type="object" name="toggle_favorite" class="o_right"><i t-attf-class="oe_inline fa o_dashboard_star #{record.is_favorite.raw_value ? 'fa-star' : 'fa-star-o'}" title="Add/remove from favorite"/></a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="o_project_kanban_boxes">
|
|
<div t-if="record.use_tasks.raw_value" class="o_project_kanban_box">
|
|
<a name="%(act_project_project_2_project_task_all)d" type="action">
|
|
<span class="o_value"><t t-esc="record.task_count.value"/></span>
|
|
<span class="o_label"><t t-esc="record.label_tasks.value"/></span>
|
|
</a>
|
|
<a t-if="record.task_needaction_count.raw_value" class="o_needaction" name="%(act_project_project_2_project_task_all)d" type="action" context="{'search_default_message_needaction': 1}">
|
|
<t t-esc="record.task_needaction_count.raw_value"/>
|
|
</a>
|
|
</div>
|
|
<div t-if="record.doc_count.raw_value" class="o_project_kanban_box">
|
|
<a name="attachment_tree_view" type="object">
|
|
<span class="o_value"><t t-esc="record.doc_count.value"/></span>
|
|
<span class="o_label">Documents</span>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="activate_sample_project" model="ir.actions.server">
|
|
<field name="name">Activate Sample Project</field>
|
|
<field name="model_id" ref="project.model_project_project"/>
|
|
<field name="code">
|
|
action = model.activate_sample_project()
|
|
</field>
|
|
</record>
|
|
|
|
<record id="open_view_project_all" model="ir.actions.act_window">
|
|
<field name="name">Projects</field>
|
|
<field name="res_model">project.project</field>
|
|
<field name="view_type">form</field>
|
|
<field name="domain">[]</field>
|
|
<field name="view_mode">kanban,form</field>
|
|
<field name="search_view_id" ref="view_project_project_filter"/>
|
|
<field name="target">main</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to create a new project.<br/>
|
|
<i>Or <a type="action" name="%(project.activate_sample_project)d">activate a sample project</a> to play with.</i>
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="open_view_project_all_config" model="ir.actions.act_window">
|
|
<field name="name">Projects</field>
|
|
<field name="res_model">project.project</field>
|
|
<field name="view_type">form</field>
|
|
<field name="domain">[]</field>
|
|
<field name="view_mode">tree,form</field>
|
|
<field name="search_view_id" ref="view_project_project_filter"/>
|
|
<field name="context">{}</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Create a new project.
|
|
</p><p>
|
|
Organize your activities (plan tasks, track issues, invoice timesheets) for internal, personal or customer projects.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Task -->
|
|
<record id="view_task_form2" model="ir.ui.view">
|
|
<field name="name">project.task.form</field>
|
|
<field name="model">project.task</field>
|
|
<field eval="2" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<form string="Task" class="o_form_project_tasks">
|
|
<header>
|
|
<field name="stage_id" widget="statusbar" clickable="True"
|
|
options="{'fold_field': 'fold'}"/>
|
|
</header>
|
|
<sheet string="Task">
|
|
<div class="oe_button_box" name="button_box">
|
|
<button name="toggle_active" type="object" groups="base.group_user"
|
|
class="oe_stat_button" icon="fa-archive">
|
|
<field name="active" widget="boolean_button"
|
|
options='{"terminology": "archive"}'/>
|
|
</button>
|
|
</div>
|
|
<field name="kanban_state" widget="kanban_state_selection"/>
|
|
<div class="oe_title">
|
|
<h1 class="o_row">
|
|
<field name="priority" widget="priority"/>
|
|
<field name="name" placeholder="Task Title..."/>
|
|
</h1>
|
|
</div>
|
|
<group>
|
|
<group>
|
|
<field name="project_id" domain="[('active', '=', True)]" context="{'default_use_tasks':1}"/>
|
|
<field name="user_id"
|
|
class="o_task_user_field"
|
|
options='{"no_open": True}'/>
|
|
<field name="legend_blocked" invisible="1"/>
|
|
<field name="legend_normal" invisible="1"/>
|
|
<field name="legend_done" invisible="1"/>
|
|
</group>
|
|
<group>
|
|
<field name="date_deadline"/>
|
|
<field name="tag_ids" widget="many2many_tags" options="{'no_create_edit': True}"/>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page name="description_page" string="Description">
|
|
<field name="description" type="html"/>
|
|
<div class="oe_clear"/>
|
|
</page>
|
|
<page name="extra_info" string="Extra Info">
|
|
<group>
|
|
<group>
|
|
<field name="sequence" groups="base.group_no_one"/>
|
|
<field name="partner_id"/>
|
|
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
|
|
<field name="displayed_image_id" groups="base.group_no_one"/>
|
|
</group>
|
|
<group>
|
|
<field name="date_assign" groups="base.group_no_one"/>
|
|
<field name="date_last_stage_update" groups="base.group_no_one"/>
|
|
</group>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
|
|
<field name="message_ids" widget="mail_thread"/>
|
|
</div>
|
|
</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="arch" type="xml">
|
|
<kanban class="o_kanban_small_column o_kanban_project_tasks" on_create="quick_create">
|
|
<field name="color"/>
|
|
<field name="priority"/>
|
|
<field name="stage_id" options='{"group_by_tooltip": {"description": "Stage Description", "legend_priority": "Use of stars"}}'/>
|
|
<field name="user_id"/>
|
|
<field name="user_email"/>
|
|
<field name="description"/>
|
|
<field name="sequence"/>
|
|
<field name="remaining_hours" groups="project.group_time_work_estimation_tasks"/>
|
|
<field name="date_deadline"/>
|
|
<field name="message_needaction_counter"/>
|
|
<field name="tag_ids"/>
|
|
<field name="attachment_ids"/>
|
|
<field name="displayed_image_id"/>
|
|
<field name="active"/>
|
|
<field name="legend_blocked"/>
|
|
<field name="legend_normal"/>
|
|
<field name="legend_done"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
|
|
|
|
<div class="o_dropdown_kanban dropdown" groups="base.group_user">
|
|
<a class="dropdown-toggle btn" data-toggle="dropdown" href="#" >
|
|
<span class="fa fa-bars fa-lg"/>
|
|
</a>
|
|
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
|
|
<t t-if="widget.editable"><li><a type="set_cover">Set Cover Image</a></li></t>
|
|
<t t-if="widget.editable"><li><a type="edit">Edit Task</a></li></t>
|
|
<t t-if="widget.deletable"><li><a type="delete">Delete</a></li></t>
|
|
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
|
</ul>
|
|
</div>
|
|
<div class="oe_kanban_content">
|
|
<div>
|
|
<field name="tag_ids"/>
|
|
</div>
|
|
<div>
|
|
<strong><field name="name"/></strong>
|
|
</div>
|
|
<div class="text-muted">
|
|
<field name="project_id" invisible="context.get('default_project_id', False)"/>
|
|
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kanban_text_red</t>
|
|
<span t-attf-class="#{red || ''}"><i><field name="date_deadline"/></i></span>
|
|
</div>
|
|
<div class="oe_kanban_bottom_left">
|
|
<field name="priority" widget="priority"/>
|
|
<t t-if="record.message_needaction_counter.raw_value">
|
|
<span class='oe_kanban_mail_new' title='Unread Messages'><i class='fa fa-comments'/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
|
</t>
|
|
</div>
|
|
<div class="oe_kanban_bottom_right">
|
|
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar pull-right"/>
|
|
<div class="pull-left" groups="base.group_user">
|
|
<field name="kanban_state" widget="kanban_state_selection"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div t-if="record.displayed_image_id.value">
|
|
<field name="displayed_image_id" widget="attachment_image"/>
|
|
</div>
|
|
<div class="oe_clear"></div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_task_tree2" model="ir.ui.view">
|
|
<field name="name">project.task.tree</field>
|
|
<field name="model">project.task</field>
|
|
<field eval="2" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<tree decoration-bf="message_needaction==True" decoration-danger="date_deadline and (date_deadline<current_date)" string="Tasks">
|
|
<field name="message_needaction" invisible="1"/>
|
|
<field name="sequence" invisible="not context.get('seq_visible', False)"/>
|
|
<field name="name"/>
|
|
<field name="project_id" invisible="context.get('user_invisible', False)"/>
|
|
<field name="user_id" invisible="context.get('user_invisible', False)"/>
|
|
<field name="date_deadline" invisible="context.get('deadline_visible',True)"/>
|
|
<field name="stage_id" invisible="context.get('set_visible',False)"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_task_calendar" model="ir.ui.view">
|
|
<field name="name">project.task.calendar</field>
|
|
<field name="model">project.task</field>
|
|
<field eval="2" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<calendar color="user_id" date_start="date_deadline" string="Tasks" mode="month">
|
|
<field name="name"/>
|
|
<field name="project_id"/>
|
|
</calendar>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project_task_pivot" model="ir.ui.view">
|
|
<field name="name">project.task.pivot</field>
|
|
<field name="model">project.task</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Project Tasks">
|
|
<field name="project_id" type="row"/>
|
|
<field name="stage_id" type="col"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project_task_graph" model="ir.ui.view">
|
|
<field name="name">project.task.graph</field>
|
|
<field name="model">project.task</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Project Tasks">
|
|
<field name="project_id"/>
|
|
<field name="stage_id"/>
|
|
</graph>
|
|
</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="inherit_id" ref="analytic.view_account_analytic_account_form"/>
|
|
<field eval="18" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr='//div[@name="project"]' position='inside'>
|
|
<field name="use_tasks" groups="base.group_no_one"/>
|
|
<label for="use_tasks" groups="base.group_no_one"/>
|
|
</xpath>
|
|
<xpath expr="//div[@name='button_box']" position="inside">
|
|
<button class="oe_stat_button" type="object" name="projects_action"
|
|
icon="fa-puzzle-piece" attrs="{'invisible': [('project_count', '=', 0)]}">
|
|
<field string="Projects" name="project_count" widget="statinfo"/>
|
|
</button>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_view_task" model="ir.actions.act_window">
|
|
<field name="name">Tasks</field>
|
|
<field name="res_model">project.task</field>
|
|
<field name="view_mode">kanban,tree,form,calendar,pivot,graph</field>
|
|
<field name="context">{'search_default_my_tasks': 1}</field>
|
|
<field name="search_view_id" ref="view_task_search_form"/>
|
|
<field name="help" type="html">
|
|
<p>
|
|
Odoo's project management allows you to manage the pipeline of your tasks efficiently. You can track progress, discuss on tasks, attach documents, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
<record id="open_view_task_list_kanban" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="0"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="act_window_id" ref="action_view_task"/>
|
|
</record>
|
|
<record id="open_view_task_list_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="act_window_id" ref="action_view_task"/>
|
|
</record>
|
|
|
|
<menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_project_management" sequence="5"/>
|
|
|
|
<record id="action_view_task_overpassed_draft" model="ir.actions.act_window">
|
|
<field name="name">Overpassed Tasks</field>
|
|
<field name="res_model">project.task</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,form,calendar,graph,kanban</field>
|
|
<field name="domain">[('date_deadline','<',time.strftime('%Y-%m-%d'))]</field>
|
|
<field name="filter" eval="True"/>
|
|
<field name="search_view_id" ref="view_task_search_form"/>
|
|
</record>
|
|
|
|
<!-- Opening task when double clicking on project -->
|
|
<record id="dblc_proj" model="ir.actions.act_window">
|
|
<field name="res_model">project.task</field>
|
|
<field name="name">Project's tasks</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,form,calendar,graph,kanban</field>
|
|
<field name="domain">[('project_id', 'child_of', [active_id])]</field>
|
|
<field name="context">{'project_id':active_id}</field>
|
|
</record>
|
|
|
|
<record id="ir_project_task_open" model="ir.values">
|
|
<field eval="'tree_but_open'" name="key2"/>
|
|
<field eval="'project.project'" name="model"/>
|
|
<field name="name">View project's tasks</field>
|
|
<field eval="'ir.actions.act_window,'+str(dblc_proj)" name="value"/>
|
|
</record>
|
|
|
|
<!-- Task types -->
|
|
<record id="task_type_search" model="ir.ui.view">
|
|
<field name="name">project.task.type.search</field>
|
|
<field name="model">project.task.type</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Tasks Stages">
|
|
<field name="name" string="Tasks Stages"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="task_type_edit" model="ir.ui.view">
|
|
<field name="name">project.task.type.form</field>
|
|
<field name="model">project.task.type</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Task Stage">
|
|
<sheet>
|
|
<group>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="mail_template_id"/>
|
|
</group>
|
|
<group>
|
|
<field name="fold"/>
|
|
<field name="project_ids" widget="many2many_tags" groups="base.group_no_one"/>
|
|
<field name="sequence" groups="base.group_no_one"/>
|
|
</group>
|
|
</group>
|
|
<group string="Stage Description and Tooltips">
|
|
<p class="text-muted" colspan="2">
|
|
At each stage employees can block or make task/issue ready for next stage.
|
|
You can define here labels that will be displayed for the state instead
|
|
of the default labels.
|
|
</p>
|
|
<label for="legend_normal" string=" " class="oe_kanban_status oe_project_kanban_legend"/>
|
|
<field name="legend_normal" nolabel="1"/>
|
|
<label for="legend_blocked" string=" " class="oe_kanban_status oe_kanban_status_red oe_project_kanban_legend"/>
|
|
<field name="legend_blocked" nolabel="1"/>
|
|
<label for="legend_done" string=" " class="oe_kanban_status oe_kanban_status_green oe_project_kanban_legend"/>
|
|
<field name="legend_done" nolabel="1"/>
|
|
|
|
<p class="text-muted" colspan="2">
|
|
You can also give a tooltip about the use of the stars available in the kanban and form views.
|
|
</p>
|
|
<label for="legend_priority" string=" " class="fa fa-star fa-lg o_star_on oe_project_kanban_legend"/>
|
|
<field name="legend_priority" nolabel="1"/>
|
|
|
|
<p class="text-muted" colspan="2">
|
|
You can also add a description to help your coworkers understand the meaning and purpose of the stage.
|
|
</p>
|
|
<field name="description" placeholder="Add a description..." nolabel="1" colspan="2"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="task_type_tree" model="ir.ui.view">
|
|
<field name="name">project.task.type.tree</field>
|
|
<field name="model">project.task.type</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Task Stage">
|
|
<field name="sequence" widget="handle" groups="base.group_no_one"/>
|
|
<field name="name"/>
|
|
<field name="fold"/>
|
|
<field name="description"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="open_task_type_form" model="ir.actions.act_window">
|
|
<field name="name">Stages</field>
|
|
<field name="res_model">project.task.type</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_id" ref="task_type_tree"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to add a stage in the task pipeline.
|
|
</p><p>
|
|
Define the steps that will be used in the project from the
|
|
creation of the task, up to the closing of the task or issue.
|
|
You will use these stages in order to track the progress in
|
|
solving a task or an issue.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<menuitem id="menu_tasks_config" name="GTD" parent="menu_project_config" sequence="2"/>
|
|
|
|
<menuitem action="open_task_type_form" id="menu_project_config_project" name="Stages" parent="menu_project_config" sequence="3" groups="group_project_manager"/>
|
|
|
|
<menuitem action="open_view_project_all" id="menu_projects" name="Dashboard" parent="menu_main_pm" sequence="1"/>
|
|
<menuitem action="open_view_project_all_config" id="menu_projects_config" name="Projects" parent="menu_project_config" sequence="10"/>
|
|
|
|
<!-- User Form -->
|
|
<act_window context="{'search_default_user_id': [active_id], 'default_user_id': active_id}"
|
|
id="act_res_users_2_project_task_opened" name="Assigned Tasks"
|
|
res_model="project.task" src_model="res.users" view_mode="tree,form,calendar,graph" view_type="form"/>
|
|
|
|
<!-- Tags -->
|
|
<record model="ir.ui.view" id="project_tags_search_view">
|
|
<field name="name">Tags</field>
|
|
<field name="model">project.tags</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Issue Version">
|
|
<field name="name"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
<record model="ir.ui.view" id="project_tags_form_view">
|
|
<field name="name">Tags</field>
|
|
<field name="model">project.tags</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Tags">
|
|
<group>
|
|
<field name="name"/>
|
|
</group>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
<record id="project_tags_action" model="ir.actions.act_window">
|
|
<field name="name">Tags</field>
|
|
<field name="res_model">project.tags</field>
|
|
<field name="view_type">form</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to add a new tag.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
<menuitem action="project_tags_action" id="menu_project_tags_act" parent="menu_project_config" groups="base.group_no_one"/>
|
|
|
|
<!-- Reporting menus -->
|
|
<menuitem id="menu_project_report" name="Reports"
|
|
groups="project.group_project_manager"
|
|
parent="menu_main_pm" sequence="99"/>
|
|
|
|
<menuitem id="menu_project_report_task_analysis"
|
|
name="Tasks Analysis"
|
|
action="project.action_project_task_user_tree"
|
|
parent="menu_project_report"
|
|
sequence="10"/>
|
|
|
|
</odoo>
|