diff --git a/all_in_one_schedule_activity_management/README.rst b/all_in_one_schedule_activity_management/README.rst new file mode 100644 index 000000000..2430c8ce2 --- /dev/null +++ b/all_in_one_schedule_activity_management/README.rst @@ -0,0 +1,50 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg + :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +All in one Schedule Activity Management +======================================= +* Schedule Activity Management for Odoo 17 + +Configuration +============= +* Set Schedule Management user inside the user + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.gnu.org/licenses/lgpl-3.0-standalone.html) + +Credits +------- +* Developer: + (v16) Rosmy , + (V17) Anjhana A K, + +* Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/all_in_one_schedule_activity_management/__init__.py b/all_in_one_schedule_activity_management/__init__.py new file mode 100644 index 000000000..6de960367 --- /dev/null +++ b/all_in_one_schedule_activity_management/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models diff --git a/all_in_one_schedule_activity_management/__manifest__.py b/all_in_one_schedule_activity_management/__manifest__.py new file mode 100644 index 000000000..f7ee26aa2 --- /dev/null +++ b/all_in_one_schedule_activity_management/__manifest__.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'All in one Schedule Activity Management', + 'version': '17.0.1.0.0', + 'category': 'Tools', + 'summary': """The module allows the manage all scheduled activities.""", + 'description': """The module is a robust tool for organizing and overseeing + all scheduled tasks and events, and Activity manager could manage scheduled + activities. """, + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base_setup', 'mail', 'sale_management'], + 'data': [ + 'security/all_in_one_schedule_activity_management_groups.xml', + 'security/ir.model.access.csv', + 'data/ir_cron_data.xml', + 'views/mail_activity_views.xml', + 'views/activity_tag_views.xml', + 'views/my_activity_views.xml', + 'views/activity_dashbord_views.xml', + 'views/reporting_activity_views.xml', + 'views/activity_history_views.xml', + 'views/res_config_setting_views.xml', + 'views/menu_views.xml', + ], + 'assets': { + 'web.assets_backend': [ + 'all_in_one_schedule_activity_management/static/src/js/activity_dashboard.js', + 'all_in_one_schedule_activity_management/static/src/xml/activity_dashboard_view.xml', + 'all_in_one_schedule_activity_management/static/src/css/dashboard.css', + 'all_in_one_schedule_activity_management/static/src/css/style.scss', + 'all_in_one_schedule_activity_management/static/src/css/material-gauge.css', + ], + }, + 'license': 'LGPL-3', + 'images': ['static/description/banner.jpg'], + 'installable': True, + 'auto_install': False, + 'application': True, +} diff --git a/all_in_one_schedule_activity_management/data/ir_cron_data.xml b/all_in_one_schedule_activity_management/data/ir_cron_data.xml new file mode 100644 index 000000000..3d699a601 --- /dev/null +++ b/all_in_one_schedule_activity_management/data/ir_cron_data.xml @@ -0,0 +1,14 @@ + + + + + Recurring Todo Activity + + code + model.action_mail_on_due_date() + + 1 + days + -1 + + \ No newline at end of file diff --git a/all_in_one_schedule_activity_management/doc/RELEASE_NOTES.md b/all_in_one_schedule_activity_management/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..77af4b896 --- /dev/null +++ b/all_in_one_schedule_activity_management/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 29.03.2024 +#### Version 17.0.1.0.0 +##### ADD +- Initial commit for All in one Schedule Activity Management diff --git a/all_in_one_schedule_activity_management/models/__init__.py b/all_in_one_schedule_activity_management/models/__init__.py new file mode 100644 index 000000000..6eed0a0fd --- /dev/null +++ b/all_in_one_schedule_activity_management/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import mail_activity +from . import activity_tag +from . import res_config_settings diff --git a/all_in_one_schedule_activity_management/models/activity_tag.py b/all_in_one_schedule_activity_management/models/activity_tag.py new file mode 100644 index 000000000..206fa649b --- /dev/null +++ b/all_in_one_schedule_activity_management/models/activity_tag.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models +from random import randint + + +class ActivityTag(models.Model): + """This class is used to create tags for activity""" + _name = "activity.tag" + _description = "Activity Tag" + + def _get_default_color(self): + """to get colors for the tag""" + return randint(1, 11) + + name = fields.Char('Tag Name', required=True, translate=True, + help="Tag name") + color = fields.Integer('Color', default=_get_default_color, + help="Tag color") + + _sql_constraints = [ + ('name_uniq', 'unique (name)', "Tag name already exists !"), + ] diff --git a/all_in_one_schedule_activity_management/models/mail_activity.py b/all_in_one_schedule_activity_management/models/mail_activity.py new file mode 100644 index 000000000..c2f34af12 --- /dev/null +++ b/all_in_one_schedule_activity_management/models/mail_activity.py @@ -0,0 +1,180 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from collections import defaultdict +from odoo import fields, models, _ +from odoo.exceptions import UserError + + +class MailActivity(models.Model): + """This class is used to inherit the mail.activity model""" + _inherit = "mail.activity" + + state = fields.Selection( + [ + ("overdue", "Overdue"), ("today", "Today"), ("planned", "Planned"), + ("done", "Done"), ("cancel", "Cancelled"),], + "State", compute="_compute_state", store=True, + help="state for the activity",) + active = fields.Boolean("Active", default=True, + help="The record make Active") + activity_type = fields.Many2many( + "activity.tag", string="Activity Type", + help="Activity type") + + def action_mail_on_due_date(self): + """This function is used to send mails on due date""" + activity_email = self.env["mail.activity"].search([]) + notification_on_date = ( + self.env["ir.config_parameter"].sudo().get_param("notify_on_due_date") + ) + notification_on_expiry = ( + self.env["ir.config_parameter"].sudo().get_param("notify_on_expiry") + ) + for rec in activity_email: + if notification_on_expiry: + if rec.date_deadline < fields.date.today(): + self.env["mail.mail"].sudo().create( + { + "email_from": self.env.company.email, + "author_id": self.env.user.partner_id.id, + "body_html": "Hello
You missed the %s activity for the document %s
" + % (rec.activity_type_id.name, rec.res_name), + "subject": "%s Activity missed" % rec.activity_type_id.name, + "email_to": rec.user_id.email, + } + ).send(auto_commit=False) + if notification_on_date: + if rec.date_deadline == fields.date.today(): + self.env["mail.mail"].sudo().create( + { + "email_from": self.env.company.email, + "author_id": self.env.user.partner_id.id, + "body_html": "Hello
Today is your %s activity for the document %s
" + % (rec.activity_type_id.name, rec.res_name), + "subject": "Today %s Activity" % rec.activity_type_id.name, + "email_to": rec.user_id.email, + } + ).send(auto_commit=False) + + def action_activity_cancel(self): + """cancel activity""" + for rec in self: + if rec.state == "cancel": + raise UserError(_("You Cant Cancelled this activity %s") % rec.res_name) + else: + rec.action_cancel() + + def action_activity_done(self): + """done activity""" + for rec in self: + if rec.state == "done": + raise UserError(_("You Cant Cancelled this activity %s") % rec.res_name) + else: + rec._action_done() + + def get_activity_count(self): + """get the activity count details""" + activity = self.env["mail.activity"] + all_activity = activity.search([]) + planned = activity.search([("state", "=", "planned")]) + overdue = activity.search([("state", "=", "overdue")]) + today = activity.search([("state", "=", "today")]) + done = activity.search([("state", "=", "done"), ("active", "=", False)]) + cancel = activity.search([("state", "=", "cancel")]) + return { + "len_all": len(all_activity), + "len_overdue": len(overdue), + "len_planned": len(planned), + "len_today": len(today), + "len_done": len(done), + "len_cancel": len(cancel), + } + + def get_activity(self, id): + """Function for to get the activity""" + activity = self.env["mail.activity"].search([("id", "=", id)]) + return {"model": activity.res_model, "res_id": activity.res_id} + + def _action_done(self, feedback=False, attachment_ids=None): + """action done function: rewrite the function""" + messages = self.env["mail.message"] + next_activities_values = [] + attachments = self.env["ir.attachment"].search_read( + [("res_model", "=", self._name), ("res_id", "in", self.ids)], + ["id", "res_id"]) + activity_attachments = defaultdict(list) + for attachment in attachments: + activity_id = attachment["res_id"] + activity_attachments[activity_id].append(attachment["id"]) + for activity in self: + if activity.chaining_type == "trigger": + vals = activity.with_context( + activity_previous_deadline=activity.date_deadline + )._prepare_next_activity_values() + next_activities_values.append(vals) + # post message on activity, before deleting it + records_sudo = self.env[activity.res_model].browse(activity.res_id) + records_sudo.message_post_with_source( + "mail.message_activity_done", + attachment_ids=attachment_ids, + author_id=self.env.user.partner_id.id, + render_values={ + "activity": activity, + "feedback": feedback, + "display_assignee": activity.user_id != self.env.user, + }, + mail_activity_type_id=activity.activity_type_id.id, + subtype_xmlid='mail.mt_activities', + ) + if activity.activity_type_id.keep_done: + attachment_ids = ( + attachment_ids or []) + activity_attachments.get( + activity.id, []) + if attachment_ids: + activity.attachment_ids = attachment_ids + activity_message = records_sudo.message_ids[0] + message_attachments = self.env["ir.attachment"].browse( + activity_attachments[activity.id] + ) + if message_attachments: + message_attachments.write( + { + "res_id": activity_message.id, + "res_model": activity_message._name, + } + ) + activity_message.attachment_ids = message_attachments + messages += activity_message + + next_activities = self.env['mail.activity'] + if next_activities_values: + next_activities = self.env['mail.activity'].create( + next_activities_values) + for rec in self: + rec.state = "done" + rec.active = False + return messages, next_activities + + def action_cancel(self): + """cancel activities""" + for rec in self: + rec.state = "cancel" diff --git a/all_in_one_schedule_activity_management/models/res_config_settings.py b/all_in_one_schedule_activity_management/models/res_config_settings.py new file mode 100644 index 000000000..c5f2a804e --- /dev/null +++ b/all_in_one_schedule_activity_management/models/res_config_settings.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + notify_on_due_date = fields.Boolean('Notify on Due Date', + help="Notify the due date", + config_parameter="notify_on_due_date") + notify_on_expiry = fields.Boolean('Notify on Expiry', + help="Notify the Expiry date", + config_parameter="notify_on_expiry") + + @api.model + def get_values(self): + """Returns a list of values for the given configuration fields""" + res = super(ResConfigSettings, self).get_values() + res['notify_on_due_date'] = self.env[ + 'ir.config_parameter'].sudo().get_param('notify_on_due_date') + res['notify_on_expiry'] = self.env[ + 'ir.config_parameter'].sudo().get_param('notify_on_expiry') + return res diff --git a/all_in_one_schedule_activity_management/security/all_in_one_schedule_activity_management_groups.xml b/all_in_one_schedule_activity_management/security/all_in_one_schedule_activity_management_groups.xml new file mode 100644 index 000000000..c987c0900 --- /dev/null +++ b/all_in_one_schedule_activity_management/security/all_in_one_schedule_activity_management_groups.xml @@ -0,0 +1,7 @@ + + + + + Schedule Management User + + diff --git a/all_in_one_schedule_activity_management/security/ir.model.access.csv b/all_in_one_schedule_activity_management/security/ir.model.access.csv new file mode 100644 index 000000000..2a23677d2 --- /dev/null +++ b/all_in_one_schedule_activity_management/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_activity_tag,activity.tag,model_activity_tag,base.group_user,1,1,1,1 +access_mail_access_mail_activity_all,access.mail.activity.all,model_mail_activity,,1,1,1,1 +access_mail_access_mail_activity_user,access.mail.activity.user,model_mail_activity,all_in_one_schedule_activity_management.group_schedule_management_user,1,1,1,1 diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/check.png b/all_in_one_schedule_activity_management/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/check.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/chevron.png b/all_in_one_schedule_activity_management/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/chevron.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/cogs.png b/all_in_one_schedule_activity_management/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/cogs.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/consultation.png b/all_in_one_schedule_activity_management/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/consultation.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/ecom-black.png b/all_in_one_schedule_activity_management/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/ecom-black.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/education-black.png b/all_in_one_schedule_activity_management/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/education-black.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/hotel-black.png b/all_in_one_schedule_activity_management/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/hotel-black.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/license.png b/all_in_one_schedule_activity_management/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/license.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/lifebuoy.png b/all_in_one_schedule_activity_management/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/lifebuoy.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/manufacturing-black.png b/all_in_one_schedule_activity_management/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/manufacturing-black.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/pos-black.png b/all_in_one_schedule_activity_management/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/pos-black.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/puzzle.png b/all_in_one_schedule_activity_management/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/puzzle.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/restaurant-black.png b/all_in_one_schedule_activity_management/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/restaurant-black.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/service-black.png b/all_in_one_schedule_activity_management/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/service-black.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/trading-black.png b/all_in_one_schedule_activity_management/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/trading-black.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/training.png b/all_in_one_schedule_activity_management/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/training.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/update.png b/all_in_one_schedule_activity_management/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/update.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/user.png b/all_in_one_schedule_activity_management/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/user.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/icons/wrench.png b/all_in_one_schedule_activity_management/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/icons/wrench.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/Cybrosys R.png b/all_in_one_schedule_activity_management/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/Cybrosys R.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/categories.png b/all_in_one_schedule_activity_management/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/categories.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/check-box.png b/all_in_one_schedule_activity_management/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/check-box.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/compass.png b/all_in_one_schedule_activity_management/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/compass.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/corporate.png b/all_in_one_schedule_activity_management/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/corporate.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/customer-support.png b/all_in_one_schedule_activity_management/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/customer-support.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/cybrosys-logo.png b/all_in_one_schedule_activity_management/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/cybrosys-logo.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/features.png b/all_in_one_schedule_activity_management/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/features.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/logo.png b/all_in_one_schedule_activity_management/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/logo.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/pictures.png b/all_in_one_schedule_activity_management/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/pictures.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/pie-chart.png b/all_in_one_schedule_activity_management/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/pie-chart.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/right-arrow.png b/all_in_one_schedule_activity_management/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/right-arrow.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/star.png b/all_in_one_schedule_activity_management/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/star.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/support.png b/all_in_one_schedule_activity_management/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/support.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/misc/whatsapp.png b/all_in_one_schedule_activity_management/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/misc/whatsapp.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/modules/1.jpg b/all_in_one_schedule_activity_management/static/description/assets/modules/1.jpg new file mode 100644 index 000000000..67c7f7062 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/modules/1.jpg differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/modules/2.jpg b/all_in_one_schedule_activity_management/static/description/assets/modules/2.jpg new file mode 100644 index 000000000..87c2bb2ba Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/modules/2.jpg differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/modules/3.png b/all_in_one_schedule_activity_management/static/description/assets/modules/3.png new file mode 100644 index 000000000..a5299d338 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/modules/3.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/modules/4.png b/all_in_one_schedule_activity_management/static/description/assets/modules/4.png new file mode 100644 index 000000000..a0ac2d840 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/modules/4.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/modules/5.jpg b/all_in_one_schedule_activity_management/static/description/assets/modules/5.jpg new file mode 100644 index 000000000..6a102f103 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/modules/5.jpg differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/modules/6.jpg b/all_in_one_schedule_activity_management/static/description/assets/modules/6.jpg new file mode 100644 index 000000000..eaf13fef5 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/modules/6.jpg differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/hero.gif b/all_in_one_schedule_activity_management/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..77c828a07 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/hero.gif differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot1.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot1.png new file mode 100644 index 000000000..3fda34a33 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot1.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot10.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot10.png new file mode 100644 index 000000000..9d44814c8 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot10.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot11.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot11.png new file mode 100644 index 000000000..531222ee6 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot11.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot12.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot12.png new file mode 100644 index 000000000..7c1c628f4 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot12.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot13.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot13.png new file mode 100644 index 000000000..a699e3953 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot13.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot14.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot14.png new file mode 100644 index 000000000..aa80090b9 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot14.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot15.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot15.png new file mode 100644 index 000000000..5a7e2c61c Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot15.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot16.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot16.png new file mode 100644 index 000000000..af9dbf899 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot16.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot17.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot17.png new file mode 100644 index 000000000..44ca94a5a Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot17.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot18.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot18.png new file mode 100644 index 000000000..0d9a0fdc2 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot18.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot19.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot19.png new file mode 100644 index 000000000..382a38b53 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot19.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot2.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot2.png new file mode 100644 index 000000000..82dac78e2 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot2.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot20.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot20.png new file mode 100644 index 000000000..25c4162ae Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot20.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot21.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot21.png new file mode 100644 index 000000000..0a3bb11a4 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot21.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot22.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot22.png new file mode 100644 index 000000000..9d6e19565 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot22.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot23.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot23.png new file mode 100644 index 000000000..227ac951b Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot23.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot3.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot3.png new file mode 100644 index 000000000..93ccae2be Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot3.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot4.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot4.png new file mode 100644 index 000000000..27b009909 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot4.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot5.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot5.png new file mode 100644 index 000000000..61f6a0320 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot5.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot6.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot6.png new file mode 100644 index 000000000..c3bedcbeb Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot6.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot7.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot7.png new file mode 100644 index 000000000..74ec08905 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot7.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot8.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot8.png new file mode 100644 index 000000000..499f0998b Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot8.png differ diff --git a/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot9.png b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot9.png new file mode 100644 index 000000000..c76ef11a1 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/assets/screenshots/screenshot9.png differ diff --git a/all_in_one_schedule_activity_management/static/description/banner.jpg b/all_in_one_schedule_activity_management/static/description/banner.jpg new file mode 100644 index 000000000..d77d46bf2 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/banner.jpg differ diff --git a/all_in_one_schedule_activity_management/static/description/icon.png b/all_in_one_schedule_activity_management/static/description/icon.png new file mode 100644 index 000000000..3c5775bf6 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/description/icon.png differ diff --git a/all_in_one_schedule_activity_management/static/description/index.html b/all_in_one_schedule_activity_management/static/description/index.html new file mode 100644 index 000000000..864602c86 --- /dev/null +++ b/all_in_one_schedule_activity_management/static/description/index.html @@ -0,0 +1,1003 @@ + + + + + + + Odoo App 3 Index + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+

+ All in one schedule Activity Management

+

+ Manage all the scheduled activities +

+
+ +
+
+
+
+
+

+ Key Highlights +

+
+
+
+
+
+ +
+
+

+ Schedule Management User

+

Set Schedule + management users +

+
+
+
+
+
+
+ +
+
+

+ All in one schedule Activity Management

+

This module + helps to handle all the activities. +

+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+

+ "In the settings menu, under 'User,' you'll find the option 'Schedule Management User.' Enabling it grants the user the role of schedule manager, allowing them to view and manage all activities.".

+
+
+
+
+
+
+ +
+
+

+ If the user is a schedule manager, they can view and access the activity management module

+
+
+
+
+
+
+ +
+
+ +
+
+

+ On clicking the button "Activities", a popup appears where we can create and schedule activities.

+
+
+
+
+
+
+ +
+
+

+ Created activities visible on the + corresponding record.

+
+
+
+
+
+
+ +
+
+

+ Activity dashboard displays count of the + total activities.

+
+
+
+
+
+
+ +
+
+

+ All activity list.While clicking on the + dashboard all activity card it will redirect + to all activity window.

+
+
+
+
+
+
+ +
+
+

+ Activity dashboard displays count of the + planned activities.

+
+
+
+
+
+
+ +
+
+

+ While clicking on the dashboard planned + activity card it will redirect to planned + activity window.

+
+
+
+
+
+
+ +
+
+

+ Planned activity and their details.

+
+
+
+
+
+
+ +
+
+

+ Menu for all activity.

+
+
+
+
+
+
+ +
+
+

+ Menu for MY activity.

+
+
+
+
+
+
+ +
+
+

+ Menu for activity tags..

+
+
+
+
+
+
+ +
+
+

+ Menu for activity reporting.

+
+
+
+
+
+
+ +
+
+

+ Menu for activity history.

+
+
+
+
+
+
+ +
+
+

+ Filter for late activity.

+
+
+
+
+
+
+ +
+
+

+ Filter for today activity.

+
+
+
+
+
+
+ +
+
+

+ Filter for future activity.

+
+
+
+
+
+
+ +
+
+

+ Filter for my activity.

+
+
+
+
+
+
+ +
+
+

+ Filter for next 7 days, next 30 days, next + 365 days, last 7 days, last 30 days and last + 365 days.

+
+
+
+
+
+
+ +
+
+

+ We can cancel the activity.

+
+
+
+
+
+
+ +
+
+

+ From the settings enable Notify on due + date , once the due date is reached, the + customer will receive an email.

+
+
+
+
+
+ +
+
+

+ From the settings enable Notify on + expiry, once the due date is + expired, the customer will receive an + email.

+
+
+
+ + +
+
+
+
    +
  • + Manage all the + activities. +
  • +
  • + Available in + Odoo 16.0 + Community and Enterprise. +
  • +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on:26th March 2024 +
+

+ Initial Commit for All in one schedule + Activity Management.

+
+
+
+
+
+
+
+

+ Related Products

+
+
+ +
+
+

+ Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire + Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo + Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Licensing Consultancy

+
+
+
+
+
+
+

+ Our Industries

+ +
+
+
+
+
+
+ +

Trading

+

Easily procure and sell your products

+
+
+
+
+ +

POS

+

Easy configuration and convivial experience

+
+
+
+
+ +

+ Education

+

A platform for educational management

+
+
+
+
+ +

+ Manufacturing

+

Plan, track and schedule your operations

+
+
+
+
+ +

E-commerce & + Website

+

Mobile friendly, awe-inspiring product pages

+
+
+
+
+ +

Service + Management

+

Keep track of services and invoice

+
+
+
+
+ +

+ Restaurant

+

Run your bar or restaurant methodically

+
+
+
+
+ +

Hotel + Management

+

An all-inclusive hotel management application

+
+
+
+
+
+
+

+ Support

+
+
+
+
+
+
+
+ +
+ Need + Help? +

Got + questions or need help? Get in + touch.

+
odoo@cybrosys.com +
+
+
+
+
+
+
+
+ +
+ WhatsApp +

Say hi + to + us on WhatsApp!

+
+91 + 99456767686 +
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/all_in_one_schedule_activity_management/static/src/css/dashboard.css b/all_in_one_schedule_activity_management/static/src/css/dashboard.css new file mode 100644 index 000000000..335e5831e --- /dev/null +++ b/all_in_one_schedule_activity_management/static/src/css/dashboard.css @@ -0,0 +1,34 @@ +p, span, a, ul, li, button { + font-size: inherit; + font-weight: inherit; + line-height: inherit; +} + +strong { + font-weight: 600; +} + +h1, h2, h3, h4, h5, h6 { + line-height: 1.5em; + font-weight: 300; +} + +strong { + font-weight: 400; +} + +.sub_title { + font-size: 14px; +} + +.sub_title div span { + font-weight: 600; +} + +.chart #canvas_graph { + height: 400px !important; +} + +.highcharts-background { + fill: none; +} \ No newline at end of file diff --git a/all_in_one_schedule_activity_management/static/src/css/material-gauge.css b/all_in_one_schedule_activity_management/static/src/css/material-gauge.css new file mode 100644 index 000000000..7f553df9a --- /dev/null +++ b/all_in_one_schedule_activity_management/static/src/css/material-gauge.css @@ -0,0 +1,194 @@ +/* + * #### Gauge Component + * + * The standard markup for the component is: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * No + * + * Yes + *
+ *
+ */ + +/* + * First define all of the relevant rules that aren't dependent + * on the size of the gauge. We want to collect the size-depenent + * rules in one place to make it easier to adjust the size. + */ + +.gauge { + position: relative; +} + +.gauge__container { + margin: 0; + padding: 0; + position: absolute; + left: 50%; + overflow: hidden; + text-align: center; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); +} + +.gauge__background { + z-index: 0; + position: absolute; + background-color: #d8f0de; + top: 0; + border-radius: 300px 300px 0 0; +} + +.gauge__data { + z-index: 1; + position: absolute; + background-color: #00c29d; + margin-left: auto; + margin-right: auto; + border-radius: 300px 300px 0 0; + -webkit-transform-origin: center bottom; + -moz-transform-origin: center bottom; + -ms-transform-origin: center bottom; + -o-transform-origin: center bottom; + transform-origin: center bottom; +} + +.gauge__center { + z-index: 2; + position: absolute; + background-color: #f9f9f9; + margin-right: auto; + border-radius: 300px 300px 0 0; +} + +.gauge__marker { + z-index: 3; + background-color: #fff; + position: absolute; + width: 1px; +} + +.gauge__needle { + z-index: 4; + background-color: #21242c; + height: 3px; + position: absolute; + -webkit-transform-origin: left center; + -moz-transform-origin: left center; + -ms-transform-origin: left center; + -o-transform-origin: left center; + transform-origin: left center; +} + +.gauge__labels { + display: table; + margin: 0 auto; + position: relative; +} + +.gauge__label--low { + display: table-cell; + text-align: center; + color: #00c29d; +} + +.gauge__label--spacer { + display: table-cell; +} + +.gauge__label--high { + display: table-cell; + text-align: center; + color: #979f99; +} + +/* + * Now define the rules that depend on the size of + * the gauge. We start with sizing for a small mobile + * device. + */ + +.gauge { height: calc(120px + 3em); } +.gauge__container { width: 240px; height: 120px; } +.gauge__marker { height: 120px; left: 119.5px; } +.gauge__background { width: 240px; height: 120px; } +.gauge__center { width: 144px; height: 72px; top: 48px; margin-left: 48px; } +.gauge__data { width: 240px; height: 120px; } +.gauge__needle { left: 120px; top: 117px; width: 120px; } +.gauge__labels { top: 120px; width: 240px; } +.gauge__label--low { width: 48px; } +.gauge__label--spacer { width: 144px; } +.gauge__label--high { width: 48px; } + +/* + * Increase the gauge size slightly on larger viewports. + */ + + @media only screen and (min-width: 400px) { + .gauge { height: calc(150px + 3em); } + .gauge__container { width: 300px; height: 150px; } + .gauge__marker { height: 150px; left: 149.5px; } + .gauge__background { width: 300px; height: 150px; } + .gauge__center { width: 180px; height: 90px; top: 60px; margin-left: 60px; } + .gauge__data { width: 300px; height: 150px; } + .gauge__needle { left: 150px; top: 147px; width: 150px; } + .gauge__labels { top: 160px; width: 300px; font-size: 20px;} + .gauge__label--low { width: 60px; } + .gauge__label--spacer { width: 180px; } + .gauge__label--high { width: 60px; } +} + +/* + * As an option, the `gauge--liveupdate` class can be added + * to the main gauge element. When this class is present, + * we add a transition that animates any changes to the gauge + * value. Currently, the app does not use this option because + * all the inputs that can change gauge values are present + * on tab panels that are different from the gauge itself. + * Therefore, users won't be able to see any gauge changes + * when they make input changes. The code is available, though, + * should this change. + */ + +.gauge--liveupdate .gauge__data, +.gauge--liveupdate .gauge__needle { + -webkit-transition: all 1s ease-in-out; + -moz-transition: all 1s ease-in-out; + -ms-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; +} + +/* + * For a given gauge value, x, ranging from 0.0 to 1.0, set + * the `transform: rotate()` property according to the + * following equation: `-0.5 + 0.5x turns` The default + * properties below represent an x value of 0. + */ + +.gauge__data { + -webkit-transform: rotate(-.50turn); + -moz-transform: rotate(-.50turn); + -ms-transform: rotate(-.50turn); + -o-transform: rotate(-.50turn); + transform: rotate(-.50turn); +} +.gauge__needle { + -webkit-transform: rotate(-.50turn); + -moz-transform: rotate(-.50turn); + -ms-transform: rotate(-.50turn); + -o-transform: rotate(-.50turn); + transform: rotate(-.50turn); +} diff --git a/all_in_one_schedule_activity_management/static/src/css/style.scss b/all_in_one_schedule_activity_management/static/src/css/style.scss new file mode 100644 index 000000000..d861d3e66 --- /dev/null +++ b/all_in_one_schedule_activity_management/static/src/css/style.scss @@ -0,0 +1,64 @@ +.o_action_manager { + direction: ltr; + webkit-box-flex: 1; + webkit-flex: 1 1 auto; + flex: 1 1 auto; + overflow: scroll !important; +} +.activity-dashboard-card { + border-radius: 0.3rem; + display: flex; + justify-content: center; + padding: 1.7rem 1.5rem 1.5rem 1.5rem; + margin: 1rem auto; + height: 100px; +} +.activity-dashboard-card__icon-container { + height: 50px; + width: 50px; + border-radius: 50%; +} +.my_activity { + background-color: #229db9; + border-radius: 10px; + font-size: 35px; +} +.all_activity{ + background: #88dfdf; + border-radius: 10px; + font-size: 35px; +} +.planned_activity { + background-color: #e8c5ac; + border-radius: 10px; + font-size: 35px; +} +.completed_activity{ + background: #a7a1f4;; + border-radius: 10px; + font-size: 35px; +} + +.today_activity{ + background: #f3bdf4; + border-radius: 10px; + font-size: 35px; +} +.overdue_activity { + background-color: #a2d2fb; + border-radius: 10px; + font-size: 35px; +} +.cancelled_activity{ + background: #beeecc; + border-radius: 10px; + font-size: 35px; +} +.activity_type { + background-color: #ecb9b9;; + border-radius: 10px; + font-size: 35px; +} +.dashboard_main_section { + margin: 20px; +} \ No newline at end of file diff --git a/all_in_one_schedule_activity_management/static/src/images/web_icon.jpg b/all_in_one_schedule_activity_management/static/src/images/web_icon.jpg new file mode 100644 index 000000000..da46edae5 Binary files /dev/null and b/all_in_one_schedule_activity_management/static/src/images/web_icon.jpg differ diff --git a/all_in_one_schedule_activity_management/static/src/js/activity_dashboard.js b/all_in_one_schedule_activity_management/static/src/js/activity_dashboard.js new file mode 100644 index 000000000..a605d0e9c --- /dev/null +++ b/all_in_one_schedule_activity_management/static/src/js/activity_dashboard.js @@ -0,0 +1,164 @@ +/** @odoo-module **/ +/** + * @module all_in_one_schedule_activity_management.activity_dashboard + * @description This module handles the scheduled activity management. + */ +import { Component, onWillStart} from "@odoo/owl"; +import { session } from "@web/session"; +import { registry } from "@web/core/registry"; +import { useService } from "@web/core/utils/hooks"; +import { jsonrpc } from "@web/core/network/rpc_service"; + +class ActivityDashboard extends Component { + static template = 'ActivityDashboard'; + setup() { + super.setup(); + this.orm = useService("orm"); + this.manage_activities = {} + this.dashboards_templates = ['LoginUser', 'ManageActivity', 'ActivityTable']; + onWillStart(this.willStart); + } + async willStart() { + this.title = 'Dashboard'; + await this.render_dashboards(); + } + async render_dashboards() { + this.manage_activities = await jsonrpc('/web/dataset/call_kw', { + model: 'mail.activity', + method : 'get_activity_count', + args: [[]], + kwargs: {}, + }); + this.manage_activities.done_activity = await this.orm.searchRead("mail.activity", [["state", "=", 'done'], ["active", "=", false]],); + this.manage_activities.planned_activity = await this.orm.searchRead("mail.activity",[["state", "=", 'planned']],) + this.manage_activities.today_activity = await this.orm.searchRead("mail.activity", [["state", "=", 'today']],) + this.manage_activities.overdue_activity = await this.orm.searchRead("mail.activity",[["state", "=", 'overdue']],) + } + + click_view(e) { + const id = e.target.value; + this.env.services.action.doAction({ + type: 'ir.actions.act_window', + name: 'All Activity', + res_model: 'mail.activity', + domain: ['|',['active', '=', false], ['active', '=', true],['id', '=', id]], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list,form', + target: 'current' + }); + } + + async click_origin_view(e) { + const id_ = e.target.value; + const result = await jsonrpc('/web/dataset/call_kw', { + model: 'mail.activity', + method : 'get_activity', + args: [[],parseInt(id_)], + kwargs: {}, + }); + this.env.services.action.doAction({ + type: 'ir.actions.act_window', + name: 'Activity Origin', + res_model: result.model, + domain: [['id', '=', result.res_id]], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list,form', + target: 'current' + }); + } + + all_activity(e) { + e.stopPropagation(); + e.preventDefault(); + this.env.services.action.doAction({ + type: 'ir.actions.act_window', + name: 'All Activity', + res_model: 'mail.activity', + domain: [], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + } + + planned_activity(e) { + e.stopPropagation(); + e.preventDefault(); + this.env.services.action.doAction({ + type: 'ir.actions.act_window', + name: 'Planned Activity', + res_model: 'mail.activity', + domain: [['state', '=', 'planned']], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + } + + completed_activity(e) { + e.stopPropagation(); + e.preventDefault(); + this.env.services.action.doAction({ + type: 'ir.actions.act_window', + name: 'Completed Activity', + res_model: 'mail.activity', + domain: [['state', '=', 'done'], ['active', '=', false]], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + } + today_activity(e) { + e.stopPropagation(); + e.preventDefault(); + this.env.services.action.doAction({ + type: 'ir.actions.act_window', + name: "Today's Activities", + res_model: 'mail.activity', + domain: [['state', '=', 'today']], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + } + overdue_activity(e) { + e.stopPropagation(); + e.preventDefault(); + this.env.services.action.doAction({ + type: 'ir.actions.act_window', + name: 'Overdue Activity', + res_model: 'mail.activity', + domain: [['state', '=', 'overdue']], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + } + cancelled_activity(e) { + e.stopPropagation(); + e.preventDefault(); + this.env.services.action.doAction({ + type: 'ir.actions.act_window', + name: "Today's Activity", + res_model: 'mail.activity', + domain: [['state', '=', 'cancel']], + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + } + activity_type(e) { + e.stopPropagation(); + e.preventDefault(); + this.env.services.action.doAction({ + type: 'ir.actions.act_window', + name: "Today's Activity", + res_model: 'mail.activity.type', + views: [[false, 'list'], [false, 'form']], + view_mode: 'list', + target: 'current' + }); + } +} +registry.category("actions").add("activity_dashboard", ActivityDashboard); +export default ActivityDashboard; diff --git a/all_in_one_schedule_activity_management/static/src/xml/activity_dashboard_view.xml b/all_in_one_schedule_activity_management/static/src/xml/activity_dashboard_view.xml new file mode 100644 index 000000000..6c9a104bc --- /dev/null +++ b/all_in_one_schedule_activity_management/static/src/xml/activity_dashboard_view.xml @@ -0,0 +1,420 @@ + + + + +
+
+

+ Activity Dashboard +

+
+
+
+
+
+
+
+ +
+
+ +
+
+
+ +
+
+
+ + +
+
+
+
+
+ +
+
+ +
+
+

+

All Activity

+

+
+
+
+
+
+
+ +
+ +
+ +
+
+

+ +
+
+
+
+ +

+

Planned Activity

+
+
+
+
+
+
+ +
+ +
+ +
+
+

+ +
+
+
+
+ +

+

+

Completed Activities

+

+
+
+
+ +
+
+
+ +
+
+ +
+
+

+ +
+
+
+
+ +

+

+

Today's Activities

+

+
+
+
+ +
+
+
+ +
+
+ +
+
+

+ +
+
+
+
+ +

+

+

Overdue Activities

+

+
+
+
+ +
+
+
+ +
+
+ +
+
+

+ +
+
+
+
+ +

+

+

Cancelled Activities

+

+
+
+
+ +
+
+
+ +
+
+

+

Activity Type

+

+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Planned Activities
No Data Available
NameActivity TypeAssigned toDead Line DateViewOrigin
+ + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Today's Activities
No Data Available
NameActivity TypeAssigned toDead Line DateViewOrigin
+ + + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Completed Activities
No Data Available
NameActivity TypeAssigned toDead Line DateView
+ + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Overdue Activities
No Data Available
NameActivity TypeAssigned toDead Line DateView
+ + + + + + + + + +
+
+
+
+ diff --git a/all_in_one_schedule_activity_management/views/activity_dashbord_views.xml b/all_in_one_schedule_activity_management/views/activity_dashbord_views.xml new file mode 100644 index 000000000..aea9ca2bf --- /dev/null +++ b/all_in_one_schedule_activity_management/views/activity_dashbord_views.xml @@ -0,0 +1,24 @@ + + + + + Cancel + + + code + + if records: + action = records.action_activity_cancel() + + + + Mark As Done + + + code + + if records: + action = records.action_activity_done() + + + diff --git a/all_in_one_schedule_activity_management/views/activity_history_views.xml b/all_in_one_schedule_activity_management/views/activity_history_views.xml new file mode 100644 index 000000000..5108af777 --- /dev/null +++ b/all_in_one_schedule_activity_management/views/activity_history_views.xml @@ -0,0 +1,11 @@ + + + + + Activity History + ir.actions.act_window + mail.activity + tree,form + [('date_deadline','<',context_today().strftime('%Y-%m-%d'))] + + diff --git a/all_in_one_schedule_activity_management/views/activity_tag_views.xml b/all_in_one_schedule_activity_management/views/activity_tag_views.xml new file mode 100644 index 000000000..dab235726 --- /dev/null +++ b/all_in_one_schedule_activity_management/views/activity_tag_views.xml @@ -0,0 +1,43 @@ + + + + + Tags + ir.actions.act_window + activity.tag + tree,form + + + activity.tag.view.form + activity.tag + +
+ +
+
+ + + + + +
+
+
+
+ + + activity.tag.view.tree + activity.tag + + + + + + + +
+ diff --git a/all_in_one_schedule_activity_management/views/mail_activity_views.xml b/all_in_one_schedule_activity_management/views/mail_activity_views.xml new file mode 100644 index 000000000..dd2e1cedd --- /dev/null +++ b/all_in_one_schedule_activity_management/views/mail_activity_views.xml @@ -0,0 +1,199 @@ + + + + + mail.activity.view.form + mail.activity + +
+
+
+ + + + + + + + + + + + + +
+ Recommended Activities + +
+
+ + + + + + + + + + + + + +
+
+
+
+ + + mail.activity.view.tree + mail.activity + + + + + + + + + + + + + + mail.activity.view.search + mail.activity + + + + + + + + + + + + + + + + + + + mail.activity.view.kanban + mail.activity + + + + + + + + +
+
+ Avatar +
+
+ + + +
+ +
+
+ +
+
+
+
+
+
+
+
+ + + mail.activity.view.pivot + mail.activity + + + + + + + + + mail.activity.view.graph + mail.activity + + + + + + + + + + All Activity + ir.actions.act_window + mail.activity + tree,form,calendar,kanban,pivot,graph + +
diff --git a/all_in_one_schedule_activity_management/views/menu_views.xml b/all_in_one_schedule_activity_management/views/menu_views.xml new file mode 100644 index 000000000..3eb19d7bc --- /dev/null +++ b/all_in_one_schedule_activity_management/views/menu_views.xml @@ -0,0 +1,46 @@ + + + + + Dashboard + activity_dashboard + current + + + + + + + + + + + diff --git a/all_in_one_schedule_activity_management/views/my_activity_views.xml b/all_in_one_schedule_activity_management/views/my_activity_views.xml new file mode 100644 index 000000000..ee1b4ba72 --- /dev/null +++ b/all_in_one_schedule_activity_management/views/my_activity_views.xml @@ -0,0 +1,12 @@ + + + + + My Activity + ir.actions.act_window + mail.activity + tree,form,calendar,kanban,pivot,graph + [('user_id','=',uid)] + + diff --git a/all_in_one_schedule_activity_management/views/reporting_activity_views.xml b/all_in_one_schedule_activity_management/views/reporting_activity_views.xml new file mode 100644 index 000000000..984b66ea2 --- /dev/null +++ b/all_in_one_schedule_activity_management/views/reporting_activity_views.xml @@ -0,0 +1,31 @@ + + + + + Activities + ir.actions.act_window + mail.activity + graph,pivot + + + mail.activity.pivot.report + mail.activity + + + + + + + + + mail.activity.graph.report + mail.activity + + + + + + + + diff --git a/all_in_one_schedule_activity_management/views/res_config_setting_views.xml b/all_in_one_schedule_activity_management/views/res_config_setting_views.xml new file mode 100644 index 000000000..f671deb9f --- /dev/null +++ b/all_in_one_schedule_activity_management/views/res_config_setting_views.xml @@ -0,0 +1,37 @@ + + + + + res.config.settings.view.form.inherited.all.in.one.schedule.activity.management + res.config.settings + + + + +

Due Activity Notification

+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+