diff --git a/addons/calendar/views/mail_activity_views.xml b/addons/calendar/views/mail_activity_views.xml
index cacdbe408f2..53be74a3b91 100644
--- a/addons/calendar/views/mail_activity_views.xml
+++ b/addons/calendar/views/mail_activity_views.xml
@@ -13,7 +13,7 @@
{'invisible': [('activity_category', '=', 'meeting')]}
- {'invisible': [('activity_category', '=', 'meeting')]}
+ {'invisible': ['|', ('activity_category', '=', 'meeting'), ('id', '!=', False)]}
{'invisible': ['|', ('activity_category', '=', 'meeting'), ('force_next', '=', True)]}
diff --git a/addons/mail/data/mail_activity_data.xml b/addons/mail/data/mail_activity_data.xml
index f05d7695ec1..f3594e44fc2 100644
--- a/addons/mail/data/mail_activity_data.xml
+++ b/addons/mail/data/mail_activity_data.xml
@@ -11,17 +11,20 @@
fa-phone
2
6
+ True
Meeting
fa-users
9
+ True
To Do
fa-tasks
5
12
+ True
Upload Document
@@ -36,6 +39,7 @@
0
99
warning
+ True
diff --git a/addons/mail/models/mail_activity.py b/addons/mail/models/mail_activity.py
index 9d9a5d06b2f..0a58ef5aa88 100644
--- a/addons/mail/models/mail_activity.py
+++ b/addons/mail/models/mail_activity.py
@@ -33,12 +33,12 @@ class MailActivityType(models.Model):
return super(MailActivityType, self).default_get(fields)
name = fields.Char('Name', required=True, translate=True)
- summary = fields.Char('Summary', translate=True)
+ summary = fields.Char('Default Summary', translate=True)
sequence = fields.Integer('Sequence', default=10)
active = fields.Boolean(default=True)
create_uid = fields.Many2one('res.users', index=True)
delay_count = fields.Integer(
- 'After', default=0, oldname='days',
+ 'Scheduled Date', default=0, oldname='days',
help='Number of days/week/month before executing the action. It allows to plan the action deadline.')
delay_unit = fields.Selection([
('days', 'days'),
@@ -59,7 +59,7 @@ class MailActivityType(models.Model):
' and not available when managing activities for other models.')
default_next_type_id = fields.Many2one('mail.activity.type', 'Default Next Activity',
domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]")
- force_next = fields.Boolean("Auto Schedule Next Activity", default=False)
+ force_next = fields.Boolean("Trigger Next Activity", default=False)
next_type_ids = fields.Many2many(
'mail.activity.type', 'mail_activity_rel', 'activity_id', 'recommended_id',
domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]",
@@ -69,7 +69,7 @@ class MailActivityType(models.Model):
domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]",
string='Preceding Activities')
category = fields.Selection([
- ('default', 'Other'), ('upload_file', 'Upload Document')
+ ('default', 'Standard'), ('upload_file', 'Upload Document')
], default='default', string='Category',
help='Categories may trigger specific behavior like opening calendar view or automatically mark as done when a document is uploaded')
mail_template_ids = fields.Many2many('mail.template', string='Mails templates')
@@ -78,6 +78,7 @@ class MailActivityType(models.Model):
initial_res_model_id = fields.Many2one('ir.model', 'Initial model', compute="_compute_initial_res_model_id", store=False,
help='Technical field to keep trace of the model at the beginning of the edition for UX related behaviour')
res_model_change = fields.Boolean(string="Model has change", help="Technical field for UX related behaviour", default=False, store=False)
+ is_master_data = fields.Boolean(string="Master data", help="This field is used to prevent master data from the deletion.")
@api.onchange('res_model_id')
def _onchange_res_model_id(self):
@@ -88,6 +89,13 @@ class MailActivityType(models.Model):
for activity_type in self:
activity_type.initial_res_model_id = activity_type.res_model_id
+ @api.multi
+ def unlink(self):
+ for activity_type in self:
+ if activity_type.is_master_data:
+ raise exceptions.ValidationError("You can not delete activity type that are used as master data.")
+ return super(MailActivityType, self).unlink()
+
class MailActivity(models.Model):
""" An actual activity to perform. Activities are linked to
@@ -120,7 +128,7 @@ class MailActivity(models.Model):
help="Display name of the related document.", readonly=True)
# activity
activity_type_id = fields.Many2one(
- 'mail.activity.type', 'Activity',
+ 'mail.activity.type', string='Activity Type',
domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]", ondelete='restrict')
activity_category = fields.Selection(related='activity_type_id.category', readonly=False)
activity_decoration = fields.Selection(related='activity_type_id.decoration_type', readonly=False)
diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js
index a0cb23b940d..5cb82f3f4de 100644
--- a/addons/mail/static/src/js/activity.js
+++ b/addons/mail/static/src/js/activity.js
@@ -214,6 +214,7 @@ var BasicActivity = AbstractField.extend({
_openActivityForm: function (id, callback) {
var action = {
type: 'ir.actions.act_window',
+ name: _t("Schedule Activity"),
res_model: 'mail.activity',
view_mode: 'form',
view_type: 'form',
diff --git a/addons/mail/static/tests/chatter_tests.js b/addons/mail/static/tests/chatter_tests.js
index 63f4f3bf53d..e75157d3ad7 100644
--- a/addons/mail/static/tests/chatter_tests.js
+++ b/addons/mail/static/tests/chatter_tests.js
@@ -1832,6 +1832,7 @@ QUnit.test('form activity widget: edit next activity', function (assert) {
default_res_id: 2,
default_res_model: "partner"
},
+ name: "Schedule Activity",
res_id: 1,
res_model: "mail.activity",
target: "new",
diff --git a/addons/mail/views/mail_activity_views.xml b/addons/mail/views/mail_activity_views.xml
index 8bca8e907b3..0ee562df52e 100644
--- a/addons/mail/views/mail_activity_views.xml
+++ b/addons/mail/views/mail_activity_views.xml
@@ -32,6 +32,7 @@
+
@@ -127,8 +128,11 @@