summaryrefslogtreecommitdiff
path: root/addons/project/views
diff options
context:
space:
mode:
authorBenjamin Frantzen (bfr) <bfr@odoo.com>2019-12-18 13:45:38 +0000
committerYannick Tivisse <yti@odoo.com>2020-05-08 12:17:20 +0000
commite4a4ffb974ccde1842e1b2389450718f8576ad5b (patch)
tree6159873058286c65a3a3bfb5a48f2ef5ffbf7565 /addons/project/views
parentf427a38c4e0dcd63d086706ad66a3e5570fbf0aa (diff)
[IMP] customer ratings flow improvements
- Rename the 'Use Rating on Project' feature into 'Customer Ratings' - Rename the 'Set Email Template to Stages' link to 'Set a Rating Email Template on Stages' - Add an optional list view for the Stages menu - display warning if the rating_template_id field is set and if one of the selected project_ids doesn't have the rating_status field set to true - Project form view revamp - rename the '% on tasks' stat button into 'Customer Satisfaction' - Remove the 'no option' for the rating frequency field because it is required - project form : Add a 'Go to Website' stat button - Project dashboard: remove the 'Customer Ratings' menu item in more - Ratings page: the 'Last 30 days' filter include ratings from today - remove the Appointment / Helpdesk Customer Satisfaction / Live Support menu items TASK ID : 1251
Diffstat (limited to 'addons/project/views')
-rw-r--r--addons/project/views/project_rating_templates.xml202
-rw-r--r--addons/project/views/project_views.xml334
-rw-r--r--addons/project/views/rating_views.xml5
-rw-r--r--addons/project/views/res_config_settings_views.xml2
4 files changed, 182 insertions, 361 deletions
diff --git a/addons/project/views/project_rating_templates.xml b/addons/project/views/project_rating_templates.xml
deleted file mode 100644
index a1b8613ccb3..00000000000
--- a/addons/project/views/project_rating_templates.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<odoo>
- <data>
-
- <!-- Page : List of project -->
- <template id="rating_index" name="Project Rating List">
- <t t-call="portal.frontend_layout">
- <t t-set="additional_title">Project Satisfaction</t>
- <div id="wrap" class="row mt4">
- <div class="oe_structure" id="oe_structure_project_rating_index_1"/>
- <div class="container o_portal_project_rating">
- <h3>Projects</h3>
- <div class="oe_structure" id="oe_structure_project_rating_index_2"/>
- <div class="row">
- <t t-if="not projects">
- <div class="mt64 text-center">
- No project rating published for now.
- </div>
- </t>
- <t t-foreach="projects" t-as="project">
- <div t-if="project.rating_percentage_satisfaction != -1" class="col-md-6 col-4 col-lg-4 col-xl-4">
- <div class="card">
- <div class="card-body">
- <div class="caption">
- <span class="badge badge-secondary float-right"><t t-esc="project.privacy_visibility"/></span>
- <h4><t t-esc="project.name"/></h4>
- <p t-if="project.date" class="text-muted">
- <i class="fa fa-calendar"/> End date : <t t-esc="project.date"/>
- </p>
- <p t-if="project.alias_name and project.alias_domain" class="text-muted">
- <i class="fa fa-envelope"/> Email : <t t-esc="project.alias_name"/>@<t t-esc="project.alias_domain"/>
- </p>
- <div class="row">
- <div class="col-lg-6 text-center">
- <h2><t t-esc="len(project.task_ids)"/></h2>
- <p><t t-esc="project.label_tasks"/></p>
- </div>
- </div>
- </div>
- <div class="caption">
- <p>
- <a role="button" t-att-href="'/project/rating/%s' % project.id" class="btn btn-primary btn-lg btn-block">
- <i class="fa fa-arrow-circle-right "/> See the feedbacks
- </a>
- </p>
- </div>
- </div>
- </div>
- </div>
- </t>
- </div>
- </div>
- <div class="oe_structure" id="oe_structure_project_rating_index_3"/>
- </div>
- </t>
- </template>
-
- <!-- Page : Project Rating Page (and widgets) -->
- <template id="portal_project_rating_progressbar">
- <div class="progress o_rating_progress">
- <t t-set="percent_rating_10" t-value="(stats['rating_10'] / float(stats['total'])) * 100 if stats['total'] else 0.0"/>
- <div class="progress-bar bg-success" t-attf-style="width: #{percent_rating_10}%;" title="Happy">
- <t t-esc="percent_rating_10"/>%
- </div>
- <t t-set="percent_rating_5" t-value="(stats['rating_5'] / float(stats['total'])) * 100 if stats['total'] else 0.0"/>
- <div class="progress-bar bg-warning" t-attf-style="width: #{percent_rating_5}%;" title="Average">
- <t t-esc="percent_rating_5"/>%
- </div>
- <t t-set="percent_rating_1" t-value="(stats['rating_1'] / float(stats['total'])) * 100 if stats['total'] else 0.0"/>
- <div class="progress-bar bg-danger" t-attf-style="width: #{percent_rating_1}%;" title="Bad">
- <t t-esc="percent_rating_1"/>%
- </div>
- </div>
- </template>
-
- <template id="portal_project_rating_partner_stat">
- <t t-foreach="partner_stats.values()" t-as="partner_stat">
- <div class="row mt8" t-if="partner_stat['total']" title="Top 5 partner ratings of last 15 days.">
- <div class="col-md-1">
- <img t-if="partner_stat['rated_partner'].image_1024" class="o_top_partner_image" t-att-src="image_data_uri(partner_stat['rated_partner'].image_1024)" alt="Rated partner"/>
- <img t-if="not partner_stat['rated_partner'].image_1024" class="o_top_partner_image" src='/web/static/src/img/placeholder.png' alt="Placeholder"/>
- </div>
- <div class="col-md-4 o_smiley_no_padding_right">
- <span class="ml8" t-esc="partner_stat['rated_partner'].name"/>
- </div>
- <div class="col-md-4 o_smiley_no_padding_right">
- <div class="col-md-4 o_smiley_no_padding_right o_smiley_no_padding_left">
- <span t-if="partner_stat['rating_10']">
- <img title="happy" alt="Happy face" class="o_top_partner_rating_image" src='/rating/static/src/img/rating_10.png'/>
- <span class="o_rating_count" t-esc="partner_stat['rating_10']"/>
- </span>
- <span t-if="not partner_stat['rating_10']">
- <img title="happy" alt="Happy face" class="o_top_partner_rating_image o_lighter_smileys" src='/rating/static/src/img/rating_10.png'/>
- <span class="o_rating_count o_lighter_smileys" t-esc="partner_stat['rating_10']"/>
- </span>
- </div>
- <div class="col-md-4 o_smiley_no_padding_right o_smiley_no_padding_left">
- <span t-if="partner_stat['rating_5']">
- <img title="average" alt="Neutral face" class="o_top_partner_rating_image" src='/rating/static/src/img/rating_5.png'/>
- <span class="o_rating_count" t-esc="partner_stat['rating_5']"/>
- </span>
- <span t-if="not partner_stat['rating_5']">
- <img title="average" alt="Neutral face" class="o_top_partner_rating_image o_lighter_smileys" src='/rating/static/src/img/rating_5.png'/>
- <span class="o_rating_count o_lighter_smileys" t-esc="partner_stat['rating_5']"/>
- </span>
- </div>
- <div class="col-md-4 o_smiley_no_padding_right o_smiley_no_padding_left">
- <span t-if="partner_stat['rating_1']">
- <img title="bad" alt="Sad face" class="o_top_partner_rating_image" src='/rating/static/src/img/rating_1.png'/>
- <span class="o_rating_count" t-esc="partner_stat['rating_1']"/>
- </span>
- <span t-if="not partner_stat['rating_1']">
- <img title="bad" alt="Sad face" class="o_top_partner_rating_image o_lighter_smileys" src='/rating/static/src/img/rating_1.png'/>
- <span class="o_rating_count o_lighter_smileys" t-esc="partner_stat['rating_1']"/>
- </span>
- </div>
- </div>
- <div class="col-md-3 o_smiley_no_padding_left">
- <strong class="float-right"><t t-esc="partner_stat['percentage_happy']"/>%</strong>
- </div>
- </div>
- </t>
- </template>
-
- <template id="portal_project_rating_popover">
- <div t-attf-id="rating_#{rating.id}" class="container d-none">
- <div class="row">
- <div class="col-lg-2">
- <img t-if="rating.partner_id.image_1024" class="o_top_partner_image" t-att-src="image_data_uri(rating.partner_id.image_1024)" alt="Rated partner"/>
- <img t-if="not rating.partner_id.image_1024" class="o_top_partner_image" src='/web/static/src/img/placeholder.png' alt="Placeholder"/>
- </div>
- <div class="col-lg-10">
- <div class="mt4">
- <strong><t t-esc="rating.rated_partner_id.name"/></strong> - <span class="rating_timeduration"><t t-esc="rating.create_date"/></span>
- </div>
- <strong>Rated by: </strong><t t-esc="rating.partner_id.name" />
- </div>
- </div>
- <div class="row o_top_partner_feedback" t-if="rating.feedback">
- <div class="col-lg-12">
- <t t-esc="rating.feedback" />
- </div>
- </div>
- </div>
- </template>
-
- <template id="rating_project_rating_page" name="Project Rating Page">
- <t t-call="portal.frontend_layout">
- <div id="wrap" class="row mt4">
- <div class="oe_structure" id="oe_structure_project_rating_page_1"/>
- <div class="container o_project o_portal_project_rating">
- <h2 t-esc="project.name"/>
- <div class="row mb32">
- <div class="col-lg-12">
- <h3 class="o_page_header">Customer Ratings</h3>
- <div class="row">
- <div class="col-lg-7">
- <t t-foreach="ratings" t-as="rating">
- <img t-attf-src='/rating/static/src/img/rating_#{int(rating.rating)}.png'
- class="mt4 o_rating_image"
- t-att-alt="rating.res_name"
- t-att-data-id="rating.id"
- t-att-data-rating-date="rating.write_date"/>
- <t t-call="project.portal_project_rating_popover"/>
- </t>
- </div>
- <div class="col-lg-5 o_vertical_separator">
- <div t-if="statistics['period_statistics']['days_06']">
- <h5>Last 7 days</h5>
- <t t-call="project.portal_project_rating_progressbar">
- <t t-set="stats" t-value="statistics['period_statistics']['days_06']"/>
- </t>
- </div>
- <div t-if="statistics['period_statistics']['days_30']">
- <h5>Last 30 days</h5>
- <t t-call="project.portal_project_rating_progressbar">
- <t t-set="stats" t-value="statistics['period_statistics']['days_30']"/>
- </t>
- </div>
- <div t-if="statistics['period_statistics']['days_90']">
- <h5>Last 3 months</h5>
- <t t-call="project.portal_project_rating_progressbar">
- <t t-set="stats" t-value="statistics['period_statistics']['days_90']"/>
- </t>
- </div>
- <div>
- <t t-call="project.portal_project_rating_partner_stat">
- <t t-set="partner_stats" t-value="statistics['partner_statistics']"/>
- </t>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="oe_structure" id="oe_structure_project_rating_page_2"/>
- </div>
- </t>
- </template>
-
- </data>
-</odoo>
diff --git a/addons/project/views/project_views.xml b/addons/project/views/project_views.xml
index 2fd2c4ef026..72a73474862 100644
--- a/addons/project/views/project_views.xml
+++ b/addons/project/views/project_views.xml
@@ -89,6 +89,161 @@
</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"/>
+ <div class="alert alert-warning" role="alert" colspan='2' attrs="{'invisible': ['|', ('rating_template_id','=', False), ('disabled_rating_warning', '=', False)]}">
+ <i class="fa fa-warning" title="Customer disabled on projects"/><b> Customer Ratings</b> are disabled on the following project(s) : <br/>
+ <field name="disabled_rating_warning" class="mb-0" />
+ </div>
+ <field name="auto_validation_kanban_state" attrs="{'invisible': [('rating_template_id','=', False)]}" groups="project.group_project_rating"/>
+ </group>
+ <group>
+ <field name="fold"/>
+ <field name="is_closed" groups="base.group_no_one"/>
+ <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" optional="show"/>
+ <field name="name"/>
+ <field name="fold" optional="show"/>
+ <field name="mail_template_id" optional="show"/>
+ <field name="rating_template_id" optional="show"/>
+ <field name="auto_validation_kanban_state" optional="hide" />
+ <field name="description" optional="hide"/>
+ <field name="project_ids" optional="show" widget="many2many_tags" options="{'color_field': 'color'}" />
+ </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="open_task_type_form_domain" 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="domain">[('project_ids','=', project_id)]</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>
+
<!-- Project -->
<record id="edit_project" model="ir.ui.view">
<field name="name">project.project.form</field>
@@ -107,16 +262,17 @@
name="%(act_project_project_2_project_task_all)d" icon="fa-tasks">
<field string="Tasks In Progress" 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">
+ <button name="action_view_all_rating" type="object" attrs="{'invisible': ['|', ('rating_active', '=', False), ('rating_percentage_satisfaction', '=', -1)]}" class="oe_stat_button oe_percent oe_read_only" 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'}" />
+ Customer Satisfaction
</span>
</div>
- </button>
+ </button>
</div>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title">
@@ -151,23 +307,24 @@
</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_left_pane">
+ <field name="rating_active"/>
+ </div>
<div class="o_setting_right_pane">
- <label for="rating_status"/>
+ <label for="rating_active" />
<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 class="mt16" attrs="{'invisible':[('rating_active','==',False)]}">
+ <field name="rating_status" widget="radio" />
<div attrs="{'required': [('rating_status','=','periodic')], 'invisible': [('rating_status','!=','periodic')]}">
<label for="rating_status_period"/>
- <field name="rating_status_period" class="oe_inline"/>
+ <field name="rating_status_period"/>
</div>
- <div attrs="{'invisible': [('rating_status','==','no')]}">
- <label for="portal_show_rating"/>
- <field name="portal_show_rating"/>
+ <div class="content-group">
+ <div class="mt8">
+ <button name="%(project.open_task_type_form_domain)d" context="{'project_id':id}" icon="fa-arrow-right" type="action" string="Set a Rating Email Template on Stages" class="btn-link"/>
+ </div>
</div>
</div>
</div>
@@ -352,6 +509,7 @@
<field name="is_favorite"/>
<field name="rating_percentage_satisfaction"/>
<field name="rating_status"/>
+ <field name="rating_active" />
<field name="analytic_account_id"/>
<templates>
<t t-name="kanban-box">
@@ -368,16 +526,13 @@
<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">
+ <div t-if="record.rating_active.raw_value" class="mt8 text-primary" title="Percentage of happy ratings over the past 30 days." 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}">
+ <a name="action_view_all_rating" type="object" context="{'search_default_rating_last_30_days':1}">
+ <t t-if="record.rating_percentage_satisfaction.value != -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>
+ </t>
+ </a>
</b>
</div>
</div>
@@ -390,9 +545,6 @@
<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"/>
@@ -674,8 +826,8 @@
<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-smile-o text-success" t-if="record.rating_last_value.value == 5" 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 == 3" 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 -->
@@ -874,135 +1026,7 @@
<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="is_closed" groups="base.group_no_one"/>
- <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>
-
+ <!-- Menu item for project -->
<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"/>
diff --git a/addons/project/views/rating_views.xml b/addons/project/views/rating_views.xml
index 2cfe3dc4e47..7d7da90fa75 100644
--- a/addons/project/views/rating_views.xml
+++ b/addons/project/views/rating_views.xml
@@ -12,8 +12,7 @@
</xpath>
<xpath expr="/search" position="inside">
<filter string="Last 30 Days" name="rating_last_30_days" domain="[
- ('create_date', '>=', (datetime.datetime.combine(context_today() + relativedelta(days=-30), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),
- ('create_date', '&lt;', (datetime.datetime.combine(context_today(), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))]"
+ ('create_date', '>=', (datetime.datetime.combine(context_today() + relativedelta(days=-30), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))]"
/>
<separator/>
</xpath>
@@ -28,7 +27,7 @@
<field name="search_view_id" ref="rating_rating_view_search_project"/>
<field name="help" type="html">
<p class="o_view_nocontent_empty_folder">
- There are no ratings for this object at the moment
+ There are no ratings for this project at the moment
</p>
</field>
</record>
diff --git a/addons/project/views/res_config_settings_views.xml b/addons/project/views/res_config_settings_views.xml
index 759291fc286..8346330c8c7 100644
--- a/addons/project/views/res_config_settings_views.xml
+++ b/addons/project/views/res_config_settings_views.xml
@@ -44,7 +44,7 @@
</div>
<div class="content-group" attrs="{'invisible': [('group_project_rating', '=', False)]}">
<div class="mt8">
- <button name="%(project.open_task_type_form)d" icon="fa-arrow-right" type="action" string="Set Email Template to Stages" class="btn-link"/>
+ <button name="%(project.open_task_type_form)d" icon="fa-arrow-right" type="action" string="Set a Rating Email Template on Stages" class="btn-link"/>
</div>
</div>
</div>