diff --git a/addons/project_sms/__init__.py b/addons/project_sms/__init__.py new file mode 100644 index 00000000000..dc5e6b693d1 --- /dev/null +++ b/addons/project_sms/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import models diff --git a/addons/project_sms/__manifest__.py b/addons/project_sms/__manifest__.py new file mode 100644 index 00000000000..3862d9dc16e --- /dev/null +++ b/addons/project_sms/__manifest__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': "Project - SMS", + 'summary': 'Send text messages when project/task stage move', + 'description': "Send text messages when project/task stage move", + 'category': 'Hidden', + 'version': '1.0', + 'depends': ['project', 'sms'], + 'data': [ + 'views/project_stage_views.xml', + 'views/project_task_type_views.xml', + 'security/ir.model.access.csv', + 'security/project_sms_security.xml', + ], + 'application': False, + 'auto_install': True, + 'license': 'LGPL-3', +} diff --git a/addons/project_sms/models/__init__.py b/addons/project_sms/models/__init__.py new file mode 100644 index 00000000000..e3234323c64 --- /dev/null +++ b/addons/project_sms/models/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import project_task_type +from . import project_task +from . import project_stage +from . import project diff --git a/addons/project_sms/models/project.py b/addons/project_sms/models/project.py new file mode 100644 index 00000000000..b5ca63698a2 --- /dev/null +++ b/addons/project_sms/models/project.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, models + + +class ProjectProject(models.Model): + _inherit = "project.project" + + def _send_sms(self): + for project in self: + if project.partner_id and project.stage_id and project.stage_id.sms_template_id: + project._message_sms_with_template(template=project.stage_id.sms_template_id, partner_ids=project.partner_id.ids) + + @api.model_create_multi + def create(self, vals_list): + projects = super().create(vals_list) + projects._send_sms() + return projects + + def write(self, vals): + res = super().write(vals) + if 'stage_id' in vals: + self._send_sms() + return res diff --git a/addons/project_sms/models/project_stage.py b/addons/project_sms/models/project_stage.py new file mode 100644 index 00000000000..67a3e3ee27d --- /dev/null +++ b/addons/project_sms/models/project_stage.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class ProjectProjectStage(models.Model): + _inherit = 'project.project.stage' + + sms_template_id = fields.Many2one('sms.template', string="SMS Template", + domain=[('model', '=', 'project.project')], help="Template used to render SMS reminder content.") diff --git a/addons/project_sms/models/project_task.py b/addons/project_sms/models/project_task.py new file mode 100644 index 00000000000..ff7e4d7b096 --- /dev/null +++ b/addons/project_sms/models/project_task.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + def _send_sms(self): + for task in self: + if task.partner_id and task.stage_id and task.stage_id.sms_template_id: + task._message_sms_with_template(template=task.stage_id.sms_template_id, partner_ids=task.partner_id.ids) + + @api.model_create_multi + def create(self, vals_list): + tasks = super().create(vals_list) + tasks._send_sms() + return tasks + + def write(self, vals): + res = super().write(vals) + if 'stage_id' in vals: + self._send_sms() + return res diff --git a/addons/project_sms/models/project_task_type.py b/addons/project_sms/models/project_task_type.py new file mode 100644 index 00000000000..55f0de0af41 --- /dev/null +++ b/addons/project_sms/models/project_task_type.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class ProjectTaskType(models.Model): + _inherit = "project.task.type" + + sms_template_id = fields.Many2one('sms.template', string="SMS Template", + domain=[('model', '=', 'project.task')], help="Template used to render SMS reminder content.") diff --git a/addons/project_sms/security/ir.model.access.csv b/addons/project_sms/security/ir.model.access.csv new file mode 100644 index 00000000000..cac3c45a4ad --- /dev/null +++ b/addons/project_sms/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_sms_template_project_manager,access.sms.template.project.manager,sms.model_sms_template,project.group_project_manager,1,1,1,1 diff --git a/addons/project_sms/security/project_sms_security.xml b/addons/project_sms/security/project_sms_security.xml new file mode 100644 index 00000000000..75dd456ffc5 --- /dev/null +++ b/addons/project_sms/security/project_sms_security.xml @@ -0,0 +1,10 @@ + + + + SMS Template: project manager CUD on project/task + + + [('model_id.model', 'in', ('project.task.type', 'project.project.stage'))] + + + diff --git a/addons/project_sms/views/project_stage_views.xml b/addons/project_sms/views/project_stage_views.xml new file mode 100644 index 00000000000..3658a8aa1a3 --- /dev/null +++ b/addons/project_sms/views/project_stage_views.xml @@ -0,0 +1,36 @@ + + + + project.project.stage.view.tree.inherit.project.sms + project.project.stage + + + + + + + + + + project.project.stage.view.form.inherit.project.sms + project.project.stage + + + + + + + + + + project.project.stage.view.search.inherit.project.sms + project.project.stage + + + + + + + + + diff --git a/addons/project_sms/views/project_task_type_views.xml b/addons/project_sms/views/project_task_type_views.xml new file mode 100644 index 00000000000..391f945d69b --- /dev/null +++ b/addons/project_sms/views/project_task_type_views.xml @@ -0,0 +1,37 @@ + + + + + project.task.type.view.form.inherit.project.sms + project.task.type + + + + + + + + + + project.task.type.view.tree.inherit.project.sms + project.task.type + + + + + + + + + + project.task.type.view.search.inherit.project.sms + project.task.type + + + + + + + + +