Use the new Many2OneAvatarUser field widget in some kanban views, which allows to open a DM chat window with the corresponding user by clicking on the avatar. Part of task 2195254
1081 lines
65 KiB
XML
1081 lines
65 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 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="Task"/>
|
|
<field name="tag_ids"/>
|
|
<field name="user_id"/>
|
|
<field name="partner_id" operator="child_of"/>
|
|
<field name="stage_id"/>
|
|
<field name="project_id"/>
|
|
<field name="parent_id" groups="project.group_subtask_project"/>
|
|
<filter string="My Tasks" name="my_tasks" domain="[('user_id', '=', uid)]"/>
|
|
<filter string="Followed Tasks" name="my_followed_tasks" domain="[('message_is_follower', '=', True)]" />
|
|
<filter string="Unassigned" name="unassigned" domain="[('user_id', '=', False)]"/>
|
|
<separator/>
|
|
<filter string="Starred" name="starred" domain="[('priority', 'in', [1, 2])]"/>
|
|
<filter string="Late Tasks" name="late" domain="[('date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<separator/>
|
|
<filter string="Unread Messages" name="message_needaction" domain="[('message_needaction', '=', True)]"/>
|
|
<separator/>
|
|
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
|
|
<separator/>
|
|
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
|
domain="[('activity_ids.date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
|
help="Show all records which has next action date is before today"/>
|
|
<filter invisible="1" string="Today Activities" name="activities_today"
|
|
domain="[('activity_ids.date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
|
domain="[('activity_ids.date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<separator/>
|
|
<filter string="Rated tasks" name="rating_task" domain="[('rating_last_value', '!=', 0.0)]" groups="project.group_project_rating"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Stage" name="stage" context="{'group_by': 'stage_id'}"/>
|
|
<filter string="Assigned to" name="user" context="{'group_by': 'user_id'}"/>
|
|
<filter string="Project" name="project" context="{'group_by': 'project_id'}"/>
|
|
<filter string="Creation Date" name="group_create_date" context="{'group_by': 'create_date'}"/>
|
|
<filter string="Company" name="company" context="{'group_by': 'company_id'}" groups="base.group_multi_company"/>
|
|
</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,activity</field>
|
|
<field name="domain">[('project_id', '=', active_id)]</field>
|
|
<field name="context">{
|
|
'pivot_row_groupby': ['user_id'],
|
|
'default_project_id': active_id,
|
|
}</field>
|
|
<field name="search_view_id" ref="view_task_search_form"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Click <i>Create</i> to start a new task.
|
|
</p><p>
|
|
To get things done, use activities and status on tasks.<br/>
|
|
Chat in real time or by email to collaborate efficiently.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="project_task_action_sub_task" model="ir.actions.act_window">
|
|
<field name="name">Sub-tasks</field>
|
|
<field name="res_model">project.task</field>
|
|
<field name="view_mode">tree,kanban,form,calendar,pivot,graph,activity</field>
|
|
<field name="search_view_id" ref="project.view_task_search_form"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Click <i>Create</i> to start a new task.
|
|
</p><p>
|
|
To get things done, use activities and status on tasks.<br/>
|
|
Chat in real time or by email to collaborate efficiently.
|
|
</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" delete="0">
|
|
<header>
|
|
<button name="%(portal.portal_share_action)d" string="Share" type="action" class="oe_highlight oe_read_only"/>
|
|
</header>
|
|
<sheet string="Project">
|
|
<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-file-text-o">
|
|
<field string="Documents" name="doc_count" widget="statinfo"/>
|
|
</button>
|
|
<button class="oe_stat_button" type="action"
|
|
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="action_view_all_rating" type="object" attrs="{'invisible': ['|', ('rating_status', '=', 'no'), ('rating_percentage_satisfaction', '=', -1)]}" class="oe_stat_button oe_percent" icon="fa-smile-o" groups="project.group_project_rating">
|
|
<div class="o_field_widget o_stat_info">
|
|
<span class="o_stat_value">
|
|
<field name="rating_percentage_satisfaction" nolabel="1"/>
|
|
</span>
|
|
<span class="o_stat_text">
|
|
% On <field readonly="1" name="label_tasks" options="{'label_field': 'label_tasks'}" />
|
|
</span>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
|
|
<div class="oe_title">
|
|
<h1>
|
|
<field name="name" placeholder="Project Name"/>
|
|
</h1>
|
|
<div name="options_active">
|
|
<div>
|
|
<label for="label_tasks" class="oe_inline" string="Name of the tasks :"/>
|
|
<field name="label_tasks" class="oe_inline oe_input_align"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<notebook>
|
|
<page name="settings" string="Settings">
|
|
<group>
|
|
<group>
|
|
<field name="active" invisible="1"/>
|
|
<field name="user_id" string="Project Manager" attrs="{'readonly':[('active','=',False)]}" domain="[('share', '=', False)]"/>
|
|
<field name="partner_id" string="Customer"/>
|
|
</group>
|
|
<group>
|
|
<field name="analytic_account_id" domain="['|', ('company_id', '=', company_id), ('company_id', '=', False)]" context="{'default_partner_id': partner_id}" groups="analytic.group_analytic_accounting"/>
|
|
<field name="privacy_visibility" widget="radio"/>
|
|
<field name="allowed_internal_user_ids" widget="many2many_tags" attrs="{'invisible': [('privacy_visibility', '!=', 'followers')]}"/>
|
|
<field name="allowed_portal_user_ids" widget="many2many_tags" attrs="{'invisible': [('privacy_visibility', '!=', 'portal')]}"/>
|
|
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
</group>
|
|
<group name="extra_settings">
|
|
</group>
|
|
</group>
|
|
<div class="row mt16 o_settings_container">
|
|
<div id="rating_settings" class="col-lg-6 o_setting_box" groups="project.group_project_rating">
|
|
<div class="o_setting_right_pane">
|
|
<label for="rating_status"/>
|
|
<div class="text-muted">
|
|
Get customer feedback
|
|
</div>
|
|
<div class="mt16">
|
|
<field name="rating_status" widget="radio"/>
|
|
<p attrs="{'invisible': [('rating_status','not in',('periodic','stage'))]}" class="text-muted oe_edit_only">
|
|
Edit project's stages and set an email template on the stages on which you want to activate the rating.
|
|
</p>
|
|
<div attrs="{'required': [('rating_status','=','periodic')], 'invisible': [('rating_status','!=','periodic')]}">
|
|
<label for="rating_status_period"/>
|
|
<field name="rating_status_period" class="oe_inline"/>
|
|
</div>
|
|
<div attrs="{'invisible': [('rating_status','==','no')]}">
|
|
<label for="portal_show_rating"/>
|
|
<field name="portal_show_rating"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-6 o_setting_box" id="subtask_settings" groups="project.group_subtask_project">
|
|
<div class="o_setting_left_pane">
|
|
<field name="allow_subtasks" />
|
|
</div>
|
|
<div class="o_setting_right_pane">
|
|
<label for="allow_subtasks" />
|
|
<div class="text-muted">
|
|
Split your tasks to organize your work into sub-milestones
|
|
</div>
|
|
<div class="mt8" attrs="{'invisible': [('allow_subtasks', '=', False)]}">
|
|
<label for="subtask_project_id" />
|
|
<field name="subtask_project_id" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<group name="misc">
|
|
<group string="Time Scheduling">
|
|
<field name="resource_calendar_id"/>
|
|
</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>
|
|
<field name="alias_contact" class="oe_inline oe_edit_only"
|
|
string="Accept Emails From"/>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
<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>
|
|
</sheet>
|
|
</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"/>
|
|
<field name="user_id" string="Project Manager"/>
|
|
<field name="partner_id" string="Customer" filter_domain="[('partner_id', 'child_of', self)]"/>
|
|
<filter string="My Favorites" name="my_projects" domain="[('favorite_user_ids', 'in', uid)]"/>
|
|
<separator/>
|
|
<filter string="Followed" name="followed_by_me" domain="[('message_is_follower', '=', True)]"/>
|
|
<separator/>
|
|
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Project Manager" name="Manager" context="{'group_by': 'user_id'}"/>
|
|
<filter string="Customer" 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" delete="0">
|
|
<field name="sequence" optional="show" widget="handle"/>
|
|
<field name="message_needaction" invisible="1"/>
|
|
<field name="active" invisible="1"/>
|
|
<field name="name" string="Project Name"/>
|
|
<field name="user_id" optional="show" string="Project Manager"/>
|
|
<field name="partner_id" optional="show" string="Contact"/>
|
|
<field name="analytic_account_id" optional="hide"/>
|
|
<field name="privacy_visibility" optional="hide"/>
|
|
<field name="subtask_project_id" optional="hide"/>
|
|
<field name="resource_calendar_id" optional="hide"/>
|
|
<field name="label_tasks" optional="hide"/>
|
|
<field name="company_id" optional="show" groups="base.group_multi_company"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="project_view_kanban" model="ir.ui.view">
|
|
<field name="name">project.project.kanban</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<kanban class="o_kanban_mobile">
|
|
<field name="user_id" string="Project Manager"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="oe_kanban_content oe_kanban_global_click o_kanban_get_form">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<strong><field name="name" string="Project Name"/></strong>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-8">
|
|
<field name="partner_id" string="Contact"/>
|
|
</div>
|
|
<div class="col-4">
|
|
<div class="oe_kanban_bottom_right">
|
|
<img t-if="record.user_id.raw_value"
|
|
t-att-title="record.user_id.value"
|
|
t-att-src="kanban_image('res.users', 'image_128', record.user_id.raw_value)"
|
|
t-att-alt="record.user_id.value" class="oe_kanban_avatar o_image_24_cover float-right"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</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">
|
|
<group>
|
|
<group>
|
|
<field name="name" class="o_project_name oe_inline"
|
|
string="Project Name" placeholder="e.g. Office Party"/>
|
|
<field name="user_id" invisible="1"/>
|
|
<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>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="project_project_view_form_simplified_footer" model="ir.ui.view">
|
|
<field name="name">project.project.view.form.simplified</field>
|
|
<field name="model">project.project</field>
|
|
<field name="inherit_id" ref="project.project_project_view_form_simplified"/>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//group" position="after">
|
|
<footer>
|
|
<button string="Create" name="action_view_tasks" type="object" class="btn-primary o_open_tasks"/>
|
|
<button string="Discard" class="btn-secondary" special="cancel"/>
|
|
</footer>
|
|
</xpath>
|
|
</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_mode">form</field>
|
|
<field name="view_id" ref="project_project_view_form_simplified_footer"/>
|
|
<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 o_emphasize_colors" on_create="project.open_create_project">
|
|
<field name="name"/>
|
|
<field name="partner_id"/>
|
|
<field name="color"/>
|
|
<field name="task_count"/>
|
|
<field name="label_tasks"/>
|
|
<field name="alias_id"/>
|
|
<field name="alias_name"/>
|
|
<field name="alias_domain"/>
|
|
<field name="is_favorite"/>
|
|
<field name="rating_percentage_satisfaction"/>
|
|
<field name="rating_status"/>
|
|
<field name="analytic_account_id"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="#{kanban_color(record.color.raw_value)} oe_kanban_global_click o_has_icon">
|
|
<div class="o_project_kanban_main">
|
|
<div class="o_kanban_card_content">
|
|
<div class="o_kanban_primary_left">
|
|
<div class="o_primary">
|
|
<span><t t-esc="record.name.value"/></span>
|
|
<span t-if="record.partner_id.value">
|
|
<strong><t t-esc="record.partner_id.value"/></strong>
|
|
</span>
|
|
</div>
|
|
<div t-if="record.alias_name.value and record.alias_domain.value">
|
|
<span><i class="fa fa-envelope" role="img" aria-label="Domain Alias" title="Domain Alias"></i> <t t-esc="record.alias_id.value"/></span>
|
|
</div>
|
|
<div t-if="record.rating_status.raw_value != 'no'" class="mt8 text-primary" title="Percentage of happy ratings over the past 30 days. Get rating details from the More menu." groups="project.group_project_rating">
|
|
<b>
|
|
<t t-if="record.rating_percentage_satisfaction.value == -1">
|
|
<i class="fa fa-smile-o"/> No rating yet
|
|
</t>
|
|
<t t-if="record.rating_percentage_satisfaction.value != -1">
|
|
<a name="action_view_all_rating" type="object" context="{'search_default_rating_last_30_days':1}">
|
|
<i class="fa fa-smile-o" role="img" aria-label="Percentage of satisfaction" title="Percentage of satisfaction"/> <t t-esc="record.rating_percentage_satisfaction.value"/>%
|
|
</a>
|
|
</t>
|
|
</b>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="o_kanban_card_manage_pane dropdown-menu" groups="project.group_project_manager" role="menu">
|
|
<div class="o_kanban_card_manage_section o_kanban_manage_reports">
|
|
<div role="menuitem">
|
|
<a name="%(portal.portal_share_action)d" type="action">Share</a>
|
|
</div>
|
|
<div role="menuitem">
|
|
<a type="edit">Edit</a>
|
|
</div>
|
|
<div role="menuitem" t-if="record.rating_status.raw_value != 'no'">
|
|
<a name="action_view_all_rating" type="object">Customer Ratings</a>
|
|
</div>
|
|
</div>
|
|
<div role="menuitem" aria-haspopup="true" class="o_no_padding_kanban_colorpicker">
|
|
<ul class="oe_kanban_colorpicker" data-field="color" role="popup"/>
|
|
</div>
|
|
</div>
|
|
<a class="o_kanban_manage_toggle_button o_left" href="#" groups="project.group_project_manager"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a>
|
|
<span class="o_right"><field name="is_favorite" widget="boolean_favorite" nolabel="1" force_save="1" /></span>
|
|
</div>
|
|
|
|
<div class="o_project_kanban_boxes">
|
|
<a class="o_project_kanban_box" name="action_view_tasks" type="object">
|
|
<div>
|
|
<span class="o_value"><t t-esc="record.task_count.value"/></span>
|
|
<span class="o_label"><t t-esc="record.label_tasks.value"/></span>
|
|
</div>
|
|
</a>
|
|
<a t-if="record.analytic_account_id.raw_value" class="o_project_kanban_box o_project_timesheet_box" name="action_view_account_analytic_line" type="object" groups="analytic.group_analytic_accounting">
|
|
<div>
|
|
<span class="o_label">Profitability</span>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="ir_actions_server_project_sample" model="ir.actions.server">
|
|
<field name="name">Project: Activate Sample Project</field>
|
|
<field name="model_id" ref="project.model_project_project"/>
|
|
<field name="state">code</field>
|
|
<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="domain">[]</field>
|
|
<field name="view_mode">kanban,form</field>
|
|
<field name="view_id" ref="view_project_kanban"/>
|
|
<field name="search_view_id" ref="view_project_project_filter"/>
|
|
<field name="target">main</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Create a new project
|
|
</p><p>
|
|
Or <a type="action" name="%(project.ir_actions_server_project_sample)d" tabindex="-1">activate a sample project</a> to play with.
|
|
</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="domain">[]</field>
|
|
<field name="view_mode">tree,kanban,form</field>
|
|
<field name="view_ids" eval="[(5, 0, 0),
|
|
(0, 0, {'view_mode': 'tree', 'view_id': ref('view_project')}),
|
|
(0, 0, {'view_mode': 'kanban', 'view_id': ref('project_view_kanban')})]"/>
|
|
<field name="search_view_id" ref="view_project_project_filter"/>
|
|
<field name="context">{}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_empty_folder">
|
|
Create a new project
|
|
</p><p>
|
|
Or <a type="action" name="%(project.ir_actions_server_project_sample)d" tabindex="-1">activate a sample project</a> to play with.
|
|
</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">
|
|
<field name="allow_subtasks" invisible="1" />
|
|
<header>
|
|
<button name="action_assign_to_me" string="Assign to Me" type="object" class="oe_highlight"
|
|
attrs="{'invisible' : [('user_id', '!=', False)]}"/>
|
|
<field name="stage_id" widget="statusbar" options="{'clickable': '1', 'fold_field': 'fold'}" attrs="{'invisible': [('project_id', '=', False)]}"/>
|
|
</header>
|
|
<sheet string="Task">
|
|
<div class="oe_button_box" name="button_box">
|
|
<button name="action_subtask" type="object" class="oe_stat_button" icon="fa-tasks"
|
|
attrs="{'invisible' : ['|', ('allow_subtasks', '=', False), ('id', '=', False)]}" context="{'default_user_id': user_id, 'default_parent_id': id, 'default_project_id': subtask_project_id}">
|
|
<field string="Sub-tasks" name="subtask_count" widget="statinfo"/>
|
|
</button>
|
|
<button name="%(rating_rating_action_task)d" type="action" attrs="{'invisible': [('rating_count', '=', 0)]}" class="oe_stat_button" icon="fa-smile-o" groups="project.group_project_rating">
|
|
<field name="rating_count" string="Rating" widget="statinfo"/>
|
|
</button>
|
|
</div>
|
|
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
|
|
<div class="oe_title pr-0">
|
|
<h1 class="d-flex flex-row justify-content-between">
|
|
<field name="priority" widget="priority" class="mr-3"/>
|
|
<field name="name" class="o_task_name text-truncate" placeholder="Task Title..."/>
|
|
<field name="kanban_state" widget="state_selection" class="ml-auto"/>
|
|
</h1>
|
|
</div>
|
|
<group>
|
|
<group>
|
|
<field name="active" invisible="1"/>
|
|
<field name="partner_id" class="o_task_customer_field"/>
|
|
<field name="partner_phone" widget="phone" attrs="{'invisible': [('partner_id', '=', False)]}"/>
|
|
<field name="partner_email" string="Email" widget="email" attrs="{'invisible': [('partner_id', '=', False)]}"/>
|
|
<field name="legend_blocked" invisible="1"/>
|
|
<field name="legend_normal" invisible="1"/>
|
|
<field name="legend_done" invisible="1"/>
|
|
</group>
|
|
<group>
|
|
<field name="project_id" required="1" domain="[('active', '=', True), ('company_id', '=', company_id)]"/>
|
|
<field name="user_id"
|
|
class="o_task_user_field"
|
|
options='{"no_open": True}' domain="[('share', '=', False)]"/>
|
|
<field
|
|
name="parent_id"
|
|
domain="[('parent_id', '=', False)]"
|
|
attrs="{'invisible' : [('allow_subtasks', '=', False)]}"
|
|
/>
|
|
<field name="date_deadline"/>
|
|
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', '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" groups="base.group_no_one">
|
|
<group>
|
|
<group>
|
|
<field name="sequence" groups="base.group_no_one"/>
|
|
<field name="email_from" invisible="1"/>
|
|
<field name="email_cc" groups="base.group_no_one"/>
|
|
<field name="project_privacy_visibility" groups="base.group_no_one"/>
|
|
<field name="allowed_user_ids" widget="many2many_tags"
|
|
groups="base.group_no_one" attrs="{'invisible': [('project_privacy_visibility', 'not in', ('followers', 'portal'))]}"/>
|
|
<field name="child_ids" invisible="1" />
|
|
<field name="subtask_project_id" invisible="1" />
|
|
<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 string="Working Time to Assign" attrs="{'invisible': [('working_hours_open', '=', 0.0)]}">
|
|
<field name="working_hours_open" string="Hours"/>
|
|
<field name="working_days_open" string="Days"/>
|
|
</group>
|
|
<group string="Working Time to Close" attrs="{'invisible': [('working_hours_close', '=', 0.0)]}">
|
|
<field name="working_hours_close" string="Hours"/>
|
|
<field name="working_days_close" string="Days"/>
|
|
</group>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
|
|
<field name="activity_ids" widget="mail_activity"/>
|
|
<field name="message_ids" widget="mail_thread"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<act_window
|
|
id="portal_share_action"
|
|
name="Share"
|
|
res_model="portal.share"
|
|
binding_model="project.task"
|
|
view_mode="form"
|
|
target="new"
|
|
/>
|
|
|
|
<record id="unlink_project_action" model="ir.actions.server">
|
|
<field name="name">Delete</field>
|
|
<field name="model_id" ref="project.model_project_project"/>
|
|
<field name="binding_model_id" ref="project.model_project_project"/>
|
|
<field name="binding_view_types">form,list</field>
|
|
<field name="state">code</field>
|
|
<field name="code">action = records.action_unlink()</field>
|
|
</record>
|
|
|
|
<record id="quick_create_task_form" model="ir.ui.view">
|
|
<field name="name">project.task.form.quick_create</field>
|
|
<field name="model">project.task</field>
|
|
<field name="priority">1000</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<group>
|
|
<field name="name" string = "Task Title"/>
|
|
<field name="user_id" options="{'no_open': True,'no_create': True}"/>
|
|
<field name="project_id" required="1" invisible="context.get('all_task', 1)"/>
|
|
<field name="company_id" invisible="1"/>
|
|
<field name="parent_id" invisible="1"/>
|
|
</group>
|
|
</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 default_group_by="stage_id" class="o_kanban_small_column o_kanban_project_tasks" on_create="quick_create" quick_create_view="project.quick_create_task_form" examples="project" js_class="project_kanban">
|
|
<field name="color"/>
|
|
<field name="priority"/>
|
|
<field name="stage_id" options='{"group_by_tooltip": {"description": "Description"}}'/>
|
|
<field name="user_id"/>
|
|
<field name="partner_id"/>
|
|
<field name="sequence"/>
|
|
<field name="date_deadline"/>
|
|
<field name="date_deadline_formatted"/>
|
|
<field name="partner_is_company"/>
|
|
<field name="message_needaction_counter"/>
|
|
<field name="displayed_image_id"/>
|
|
<field name="active"/>
|
|
<field name="legend_blocked"/>
|
|
<field name="legend_normal"/>
|
|
<field name="legend_done"/>
|
|
<field name="activity_ids"/>
|
|
<field name="activity_state"/>
|
|
<field name="rating_last_value"/>
|
|
<field name="rating_ids"/>
|
|
<progressbar field="kanban_state" colors='{"done": "success", "blocked": "danger", "normal": "muted"}'/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="{{!selection_mode ? 'oe_kanban_color_' + kanban_getcolor(record.color.raw_value) : ''}} oe_kanban_card oe_kanban_global_click">
|
|
<div class="oe_kanban_content">
|
|
<div class="o_kanban_record_top">
|
|
<div class="o_kanban_record_headings">
|
|
<strong class="o_kanban_record_title"><field name="name"/></strong>
|
|
<span invisible="context.get('default_project_id', False) or context.get('fsm_mode', False)"><br/><field name="project_id" required="1"/></span>
|
|
<br />
|
|
<t t-if="record.partner_id.value">
|
|
<span t-if="!record.partner_is_company.raw_value">
|
|
<field name="commercial_partner_id"/>
|
|
</span>
|
|
<span t-else="">
|
|
<field name="partner_id"/>
|
|
</span>
|
|
</t>
|
|
<t t-else="record.email_from.raw_value"><span><field name="email_from"/></span></t>
|
|
</div>
|
|
<div class="o_dropdown_kanban dropdown" t-if="!selection_mode" groups="base.group_user">
|
|
<a role="button" class="dropdown-toggle o-no-caret btn" data-toggle="dropdown" data-display="static" href="#" aria-label="Dropdown menu" title="Dropdown menu">
|
|
<span class="fa fa-ellipsis-v"/>
|
|
</a>
|
|
<div class="dropdown-menu" role="menu">
|
|
<a t-if="widget.editable" role="menuitem" type="set_cover" data-auto-open="1" class="dropdown-item" data-field="displayed_image_id">Set Cover Image</a>
|
|
<a name="%(portal.portal_share_action)d" role="menuitem" type="action" class="dropdown-item">Share</a>
|
|
<a t-if="widget.editable" role="menuitem" type="edit" class="dropdown-item">Edit Task</a>
|
|
<a t-if="widget.deletable" role="menuitem" type="delete" class="dropdown-item">Delete</a>
|
|
<div role="separator" class="dropdown-divider"></div>
|
|
<ul class="oe_kanban_colorpicker" data-field="color"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="o_kanban_record_body">
|
|
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" invisible="context.get('fsm_mode', False)"/>
|
|
<div t-if="record.displayed_image_id.value">
|
|
<field name="displayed_image_id" widget="attachment_image"/>
|
|
</div>
|
|
</div>
|
|
<div class="o_kanban_record_bottom" t-if="!selection_mode">
|
|
<div class="oe_kanban_bottom_left">
|
|
<field name="priority" widget="priority"/>
|
|
<field name="activity_ids" widget="kanban_activity"/>
|
|
<t t-if="record.message_needaction_counter.raw_value">
|
|
<span role="alert" class='oe_kanban_mail_new' title='Unread Messages'><i class='fa fa-comments' role="img" aria-label="Unread Messages"/><t t-raw="record.message_needaction_counter.raw_value"/></span>
|
|
</t>
|
|
<b t-if="record.rating_ids.raw_value.length">
|
|
<span style="font-weight:bold;" class="fa fa-fw mt4 fa-smile-o text-success" t-if="record.rating_last_value.value == 10" title="Latest Rating: Satisfied" role="img" aria-label="Happy face"/>
|
|
<span style="font-weight:bold;" class="fa fa-fw mt4 fa-meh-o text-warning" t-if="record.rating_last_value.value == 5" title="Latest Rating: Not Satisfied" role="img" aria-label="Neutral face"/>
|
|
<span style="font-weight:bold;" class="fa fa-fw mt4 fa-frown-o text-danger" t-if="record.rating_last_value.value == 1" title="Latest Rating: Higly Dissatisfied" role="img" aria-label="Sad face"/>
|
|
</b>
|
|
<!-- formating of the date -->
|
|
<t t-set="date_format" t-value="'MM/DD/YY'" />
|
|
<t t-set="date" t-value=""/>
|
|
<!-- color of the span -->
|
|
<t t-if="record.date_deadline.raw_value and moment(record.date_deadline.raw_value.toISOString()).startOf('day') lt moment().startOf('day')">
|
|
<t t-set="deadline_class" t-value="'oe_kanban_text_red'" />
|
|
</t>
|
|
<t t-elif="record.date_deadline.raw_value and moment(record.date_deadline.raw_value.toISOString()).startOf('day') lt moment().endOf('day')">
|
|
<t t-set="deadline_class" t-value="'text-warning font-weight-bold'" />
|
|
</t>
|
|
<!-- Date value -->
|
|
<t t-if="record.date_deadline.raw_value" t-set="date" t-value="record.date_deadline_formatted.raw_value" />
|
|
<span name="date" title="Deadline" t-attf-class="#{deadline_class || ''}"><t t-esc="date" /></span>
|
|
</div>
|
|
<div class="oe_kanban_bottom_right" t-if="!selection_mode">
|
|
<field name="kanban_state" widget="state_selection" groups="base.group_user" invisible="context.get('fsm_mode', False)"/>
|
|
<field name="user_id" widget="many2one_avatar_user"/>
|
|
</div>
|
|
</div>
|
|
</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" multi_edit="1">
|
|
<field name="message_needaction" invisible="1" readonly="1"/>
|
|
<field name="sequence" invisible="not context.get('seq_visible', False)" readonly="1"/>
|
|
<field name="name"/>
|
|
<!-- YTI TODO user_invisible and seq_visible seem to be useless -->
|
|
<field name="project_id" invisible="context.get('user_invisible', False)" optional="show" readonly="1"/>
|
|
<field name="partner_id" optional="hide"/>
|
|
<field name="parent_id" groups="project.group_subtask_project" optional="show"/>
|
|
<field name="user_id" invisible="context.get('user_invisible', False)" optional="show"/>
|
|
<field name="date_deadline" optional="hide"/>
|
|
<field name="stage_id" invisible="context.get('set_visible',False)" optional="show" readonly="1"/>
|
|
<field name="tag_ids" optional="hide" widget="many2many_tags" options="{'color_field': 'color'}"/>
|
|
<field name="company_id" groups="base.group_multi_company" optional="show"/>
|
|
<field name="activity_exception_decoration" widget="activity_exception" readonly="1"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="project_task_view_tree_activity" model="ir.ui.view">
|
|
<field name="name">project.task.tree.activity</field>
|
|
<field name="model">project.task</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Next Activities" decoration-danger="activity_date_deadline < current_date" default_order="activity_date_deadline">
|
|
<field name="name"/>
|
|
<field name="project_id"/>
|
|
<field name="activity_date_deadline"/>
|
|
<field name="activity_type_id"/>
|
|
<field name="activity_summary"/>
|
|
<field name="stage_id"/>
|
|
</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 date_start="date_deadline" string="Tasks" mode="month" color="user_id" event_limit="5" hide_time="true">
|
|
<field name="user_id" avatar_field="image_128" filters="1"/>
|
|
<field name="date_deadline"/>
|
|
<field name="project_id"/>
|
|
<field name="priority" widget="priority"/>
|
|
<field name="stage_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"/>
|
|
<field name="color" invisible="1"/>
|
|
</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="project_task_view_activity" model="ir.ui.view">
|
|
<field name="name">project.task.activity</field>
|
|
<field name="model">project.task</field>
|
|
<field name="arch" type="xml">
|
|
<activity string="Project Tasks">
|
|
<field name="user_id"/>
|
|
<templates>
|
|
<div t-name="activity-box">
|
|
<img t-att-src="activity_image('res.users', 'image_128', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value"/>
|
|
<div>
|
|
<field name="name" display="full"/>
|
|
<field name="project_id" muted="1" display="full" invisible="context.get('default_project_id', False)"/>
|
|
</div>
|
|
</div>
|
|
</templates>
|
|
</activity>
|
|
</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,activity</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 class="o_view_nocontent_smiling_face">
|
|
Create a new task
|
|
</p><p>
|
|
Odoo's project management allows you to manage the pipeline of your tasks efficiently.<br/>
|
|
You can track progress, discuss on tasks, attach documents, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_view_all_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,activity</field>
|
|
<field name="context">{'search_default_my_tasks': 1, 'all_task': 0}</field>
|
|
<field name="search_view_id" ref="view_task_search_form"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Create a new task
|
|
</p><p>
|
|
Odoo's project management allows you to manage the pipeline of your tasks efficiently.<br/>
|
|
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 name="All Tasks" id="menu_project_management" parent="menu_main_pm"
|
|
action="action_view_all_task" sequence="2" groups="base.group_no_one,group_project_user"/>
|
|
|
|
<record id="project_task_action_from_partner" model="ir.actions.act_window">
|
|
<field name="name">Tasks</field>
|
|
<field name="res_model">project.task</field>
|
|
<field name="view_mode">kanban,tree,form</field>
|
|
<field name="search_view_id" ref="view_task_search_form"/>
|
|
</record>
|
|
|
|
<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_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_mode">tree,form,calendar,graph,kanban</field>
|
|
<field name="domain">[('project_id', '=', active_id)]</field>
|
|
<field name="context">{'project_id':active_id}</field>
|
|
</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"/>
|
|
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
|
|
</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" delete="0">
|
|
<field name="active" invisible="1" />
|
|
<sheet>
|
|
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}" />
|
|
<group>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="mail_template_id"/>
|
|
<field name="rating_template_id" groups="project.group_project_rating"/>
|
|
<field name="auto_validation_kanban_state" attrs="{'invisible': [('rating_template_id','=', False)]}" groups="project.group_project_rating"/>
|
|
</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="o_status oe_project_kanban_legend"
|
|
title="Task in progress. Click to block or set as done."
|
|
aria-label="Task in progress. Click to block or set as done." role="img"/>
|
|
<field name="legend_normal" nolabel="1"/>
|
|
<label for="legend_blocked" string=" " class="o_status o_status_red oe_project_kanban_legend"
|
|
title="Task is blocked. Click to unblock or set as done."
|
|
aria-label="Task is blocked. Click to unblock or set as done." role="img"/>
|
|
<field name="legend_blocked" nolabel="1"/>
|
|
<label for="legend_done" string=" " class="o_status o_status_green oe_project_kanban_legend"
|
|
title="This step is done. Click to block or set in progress."
|
|
aria-label="This step is done. Click to block or set in progress." role="img"/>
|
|
<field name="legend_done" 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" delete="0">
|
|
<field name="sequence" widget="handle" groups="base.group_no_one"/>
|
|
<field name="name"/>
|
|
<field name="fold"/>
|
|
<field name="description"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project_task_type_kanban" model="ir.ui.view">
|
|
<field name="name">project.task.type.kanban</field>
|
|
<field name="model">project.task.type</field>
|
|
<field name="arch" type="xml">
|
|
<kanban class="o_kanban_mobile">
|
|
<field name="name"/>
|
|
<field name="fold"/>
|
|
<field name="description"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="oe_kanban_global_click">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<strong><t t-esc="record.name.value"/></strong>
|
|
</div>
|
|
</div>
|
|
<t t-if="record.description.value">
|
|
<hr class="mt8 mb8"/>
|
|
<t t-esc="record.description.value"/>
|
|
</t>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</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_mode">tree,kanban,form</field>
|
|
<field name="view_id" ref="task_type_tree"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Create a new 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>
|
|
|
|
<record id="unlink_task_type_action" model="ir.actions.server">
|
|
<field name="name">Delete</field>
|
|
<field name="model_id" ref="project.model_project_task_type"/>
|
|
<field name="binding_model_id" ref="project.model_project_task_type"/>
|
|
<field name="binding_view_types">form,list</field>
|
|
<field name="state">code</field>
|
|
<field name="code">action = records.unlink_wizard(stage_view=True)</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="base.group_no_one"/>
|
|
|
|
<menuitem action="open_view_project_all" id="menu_projects" name="Projects" 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" view_mode="tree,form,calendar,graph"
|
|
binding_model="res.users" binding_views="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">
|
|
<sheet>
|
|
<group>
|
|
<field name="name"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="project_tags_tree_view">
|
|
<field name="name">Tags</field>
|
|
<field name="model">project.tags</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Tags" editable="bottom">
|
|
<field name="name"/>
|
|
</tree>
|
|
</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="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Create a new tag
|
|
</p>
|
|
<p>
|
|
Tags are perfect to categorize your tasks.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
<menuitem action="project_tags_action" id="menu_project_tags_act" parent="menu_project_config"/>
|
|
|
|
<!-- Reporting menus -->
|
|
<menuitem id="menu_project_report" name="Reporting"
|
|
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"/>
|
|
|
|
<menuitem id="rating_rating_menu_project"
|
|
action="rating_rating_action_project_report"
|
|
parent="menu_project_report"
|
|
groups="project.group_project_rating"
|
|
sequence="40"/>
|
|
|
|
</odoo>
|