Browse Source

July 20: [ADD] Initial commit 'calendar_meeting_checklist'

pull/254/merge
RisvanaCybro 9 months ago
parent
commit
5b55d6ad33
  1. 52
      calendar_meeting_checklist/README.rst
  2. 22
      calendar_meeting_checklist/__init__.py
  3. 49
      calendar_meeting_checklist/__manifest__.py
  4. 6
      calendar_meeting_checklist/doc/RELEASE_NOTES.md
  5. 24
      calendar_meeting_checklist/models/__init__.py
  6. 54
      calendar_meeting_checklist/models/calendar_checklist_lines.py
  7. 67
      calendar_meeting_checklist/models/calendar_event.py
  8. 36
      calendar_meeting_checklist/models/checklist_template.py
  9. 32
      calendar_meeting_checklist/models/meeting_checklist.py
  10. 5
      calendar_meeting_checklist/security/ir.model.access.csv
  11. BIN
      calendar_meeting_checklist/static/description/assets/icons/check.png
  12. BIN
      calendar_meeting_checklist/static/description/assets/icons/chevron.png
  13. BIN
      calendar_meeting_checklist/static/description/assets/icons/cogs.png
  14. BIN
      calendar_meeting_checklist/static/description/assets/icons/consultation.png
  15. BIN
      calendar_meeting_checklist/static/description/assets/icons/ecom-black.png
  16. BIN
      calendar_meeting_checklist/static/description/assets/icons/education-black.png
  17. BIN
      calendar_meeting_checklist/static/description/assets/icons/hotel-black.png
  18. BIN
      calendar_meeting_checklist/static/description/assets/icons/license.png
  19. BIN
      calendar_meeting_checklist/static/description/assets/icons/lifebuoy.png
  20. BIN
      calendar_meeting_checklist/static/description/assets/icons/manufacturing-black.png
  21. BIN
      calendar_meeting_checklist/static/description/assets/icons/pos-black.png
  22. BIN
      calendar_meeting_checklist/static/description/assets/icons/puzzle.png
  23. BIN
      calendar_meeting_checklist/static/description/assets/icons/restaurant-black.png
  24. BIN
      calendar_meeting_checklist/static/description/assets/icons/service-black.png
  25. BIN
      calendar_meeting_checklist/static/description/assets/icons/trading-black.png
  26. BIN
      calendar_meeting_checklist/static/description/assets/icons/training.png
  27. BIN
      calendar_meeting_checklist/static/description/assets/icons/update.png
  28. BIN
      calendar_meeting_checklist/static/description/assets/icons/user.png
  29. BIN
      calendar_meeting_checklist/static/description/assets/icons/wrench.png
  30. BIN
      calendar_meeting_checklist/static/description/assets/misc/categories.png
  31. BIN
      calendar_meeting_checklist/static/description/assets/misc/check-box.png
  32. BIN
      calendar_meeting_checklist/static/description/assets/misc/compass.png
  33. BIN
      calendar_meeting_checklist/static/description/assets/misc/corporate.png
  34. BIN
      calendar_meeting_checklist/static/description/assets/misc/customer-support.png
  35. BIN
      calendar_meeting_checklist/static/description/assets/misc/cybrosys-logo.png
  36. BIN
      calendar_meeting_checklist/static/description/assets/misc/features.png
  37. BIN
      calendar_meeting_checklist/static/description/assets/misc/logo.png
  38. BIN
      calendar_meeting_checklist/static/description/assets/misc/pictures.png
  39. BIN
      calendar_meeting_checklist/static/description/assets/misc/pie-chart.png
  40. BIN
      calendar_meeting_checklist/static/description/assets/misc/right-arrow.png
  41. BIN
      calendar_meeting_checklist/static/description/assets/misc/star.png
  42. BIN
      calendar_meeting_checklist/static/description/assets/misc/support.png
  43. BIN
      calendar_meeting_checklist/static/description/assets/misc/whatsapp.png
  44. BIN
      calendar_meeting_checklist/static/description/assets/modules/1.png
  45. BIN
      calendar_meeting_checklist/static/description/assets/modules/2.png
  46. BIN
      calendar_meeting_checklist/static/description/assets/modules/3.png
  47. BIN
      calendar_meeting_checklist/static/description/assets/modules/4.png
  48. BIN
      calendar_meeting_checklist/static/description/assets/modules/5.png
  49. BIN
      calendar_meeting_checklist/static/description/assets/modules/6.png
  50. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot1.png
  51. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot10.png
  52. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot11.png
  53. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot12.png
  54. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot13.png
  55. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot2.png
  56. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot3.png
  57. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot4.png
  58. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot5.png
  59. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot6.png
  60. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot7.png
  61. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot8.png
  62. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/Screenshot9.png
  63. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/hero.gif
  64. 5
      calendar_meeting_checklist/static/description/assets/screenshots/meeting_checklist_sample_csv.csv
  65. BIN
      calendar_meeting_checklist/static/description/assets/screenshots/meeting_checklist_sample_xlx.xlsx
  66. BIN
      calendar_meeting_checklist/static/description/banner.png
  67. BIN
      calendar_meeting_checklist/static/description/icon.png
  68. 659
      calendar_meeting_checklist/static/description/index.html
  69. 68
      calendar_meeting_checklist/views/calendar_event_views.xml
  70. 39
      calendar_meeting_checklist/views/checklist_template_views.xml
  71. 38
      calendar_meeting_checklist/views/meeting_checklist_views.xml
  72. 21
      calendar_meeting_checklist/wizard/__init__.py
  73. 103
      calendar_meeting_checklist/wizard/import_meeting_checklist.py
  74. 44
      calendar_meeting_checklist/wizard/import_meeting_checklist.xml

52
calendar_meeting_checklist/README.rst

@ -0,0 +1,52 @@
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Calendar Meeting Checklist
==========================
This module helps to enhance your meeting preparation and management
process. It is useful to list required items, things to be done, or
points to be considered, used as a reminder in the calendar module form
view
Configuration
=============
* Sample csv and xlsx files are kept in folder screenshots.
License
-------
Affero General Public License v3.0 (AGPL v3)
(https://www.gnu.org/licenses/agpl-3.0-standalone.html)
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developer:
(V15) Ranjith R,
(V16) Anagha S,
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 <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

22
calendar_meeting_checklist/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ranjith R(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
###############################################################################
from . import models
from . import wizard

49
calendar_meeting_checklist/__manifest__.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ranjith R(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
###############################################################################
{
'name': "Calendar Meeting Checklist",
'version': '15.0.1.0.0',
'category': 'Discuss',
'summary': 'Enhance Meeting Preparation and Management With Checklist.',
'description': """This module helps to enhance your meeting preparation and
management process. It is useful to list required items, things to be done
or points to be considered, used as a reminder in the calendar module form
view""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['calendar', 'mail'],
'data': [
'security/ir.model.access.csv',
'views/meeting_checklist_views.xml',
'views/checklist_template_views.xml',
'views/calendar_event_views.xml',
'wizard/import_meeting_checklist.xml',
],
'images': [
'static/description/banner.png',
],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

6
calendar_meeting_checklist/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <calendar_meeting_checklist>
#### 20.07.2024
#### Version 15.0.1.0.0
#### ADD
- Initial commit for Calendar Meeting Checklist

24
calendar_meeting_checklist/models/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ranjith R(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
###############################################################################
from . import calendar_checklist_lines
from . import calendar_event
from . import checklist_template
from . import meeting_checklist

54
calendar_meeting_checklist/models/calendar_checklist_lines.py

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ranjith R(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
###############################################################################
from odoo import fields, models
class CalendarChecklistLines(models.Model):
""" This class is used to store checklist items associated with calendar
events. Each checklist item can be marked as complete or canceled,
allowing users to track tasks or actions related to specific calendar
events."""
_name = 'calendar.checklist.lines'
_description = 'Checklists lines'
_order = "sequence asc"
event_id = fields.Many2one(comodel_name='calendar.event', string="Event",
required=True, ondelete='cascade',
copy=False, index=True,
help='Each record in this model can be linked '
'to a single calendar event record.')
sequence = fields.Integer(string='Sequence',
help='Used to order checklists.')
checklist_id = fields.Many2one(comodel_name='meeting.checklist',
string='Checklist',
help='Checklist for the calendar event.')
stage = fields.Selection(
selection=[('new', 'New'), ('completed', 'Completed'),
('canceled', 'Canceled')], string='Stage', default='new',
readonly='True', help='State of checklist.')
def action_complete(self):
"""Set the checklist's status to 'completed'."""
self.stage = 'completed'
def action_cancel(self):
"""Set the checklist's status to 'cancelled'."""
self.stage = 'canceled'

67
calendar_meeting_checklist/models/calendar_event.py

@ -0,0 +1,67 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ranjith R(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
###############################################################################
from odoo import api, fields, models
class CalendarEvent(models.Model):
"""Calendar event inherited model"""
_inherit = 'calendar.event'
checklist_template_ids = fields.Many2many(
'checklist.template', string='Checklist Template',
help="Select one or more checklist templates to associate with this "
"record.")
checklist_line_ids = fields.One2many(
comodel_name='calendar.checklist.lines', inverse_name='event_id',
string='Checklists', copy=True, auto_delete=True,
help='Checklists for calendar event.')
checklist_progress = fields.Integer(compute='_compute_checklist_progress',
help='Progress of checklist.')
completed_checklist = fields.Boolean(default=False,
string='Completed all checklists',
help='True when all checklists are'
'completed.')
def _compute_checklist_progress(self):
""" Calculates the completion progress of a checklist associated with a
calendar event. It counts the number of checklist items associated with
the event and the number of completed checklist items. The progress is
calculated as a percentage based on the ratio of completed items to
total items."""
for rec in self:
count = rec.checklist_line_ids.search_count(
[('event_id', '=', rec.id)])
completed = rec.checklist_line_ids.search_count(
[('event_id', '=', rec.id), ('stage', '=', 'completed')])
rec.checklist_progress = (completed / count) * 100 if count != 0 \
else 0
rec.completed_checklist = rec.checklist_progress == 100
@api.onchange('checklist_template_ids')
def _onchange_checklist_template_ids(self):
"""This method is triggered when the `checklist_template_ids` field is
modified. It automatically generates checklist lines for the current
record based on the selected checklist templates."""
checklist_line_data = [fields.Command.clear()]
checklist_line_data += [
fields.Command.create({'checklist_id': line.id, 'stage': 'new'})
for line in self.checklist_template_ids.checklist_ids]
self.checklist_line_ids = checklist_line_data

36
calendar_meeting_checklist/models/checklist_template.py

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ranjith R(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
###############################################################################
from odoo import fields, models
class ChecklistTemplate(models.Model):
"""Checklist template model."""
_name = 'checklist.template'
_description = 'Checklist Template'
_inherit = 'mail.thread'
name = fields.Char(string="Template name",
help='Name for checklist template.')
checklist_ids = fields.Many2many("meeting.checklist",
string="Checklist",
help="Allows you to associate multiple "
"checklist records with single "
"checklist template.")

32
calendar_meeting_checklist/models/meeting_checklist.py

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ranjith R(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
###############################################################################
from odoo import fields, models
class MeetingChecklist(models.Model):
"""Meeting checklist model."""
_name = 'meeting.checklist'
_description = 'Meeting Checklist'
_inherit = 'mail.thread'
name = fields.Char(string="Name", help="Name of checklist.", tracking=1)
description = fields.Char(string="Description",
help="Description for checklist.")

5
calendar_meeting_checklist/security/ir.model.access.csv

@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_meeting_checklist_user,access.meeting.checklist.user,model_meeting_checklist,base.group_user,1,1,1,1
access_checklist_template_user,access.checklist.template.user,model_checklist_template,base.group_user,1,1,1,1
access_calendar_checklist_lines_user,access.calendar.checklist.lines.user,model_calendar_checklist_lines,base.group_user,1,1,1,1
access_import_meeting_checklist_user,access.import.meeting.checklist.user,model_import_meeting_checklist,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_meeting_checklist_user access.meeting.checklist.user model_meeting_checklist base.group_user 1 1 1 1
3 access_checklist_template_user access.checklist.template.user model_checklist_template base.group_user 1 1 1 1
4 access_calendar_checklist_lines_user access.calendar.checklist.lines.user model_calendar_checklist_lines base.group_user 1 1 1 1
5 access_import_meeting_checklist_user access.import.meeting.checklist.user model_import_meeting_checklist base.group_user 1 1 1 1

BIN
calendar_meeting_checklist/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
calendar_meeting_checklist/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
calendar_meeting_checklist/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
calendar_meeting_checklist/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
calendar_meeting_checklist/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
calendar_meeting_checklist/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
calendar_meeting_checklist/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
calendar_meeting_checklist/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
calendar_meeting_checklist/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
calendar_meeting_checklist/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
calendar_meeting_checklist/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
calendar_meeting_checklist/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
calendar_meeting_checklist/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
calendar_meeting_checklist/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
calendar_meeting_checklist/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
calendar_meeting_checklist/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
calendar_meeting_checklist/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
calendar_meeting_checklist/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
calendar_meeting_checklist/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/cybrosys-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
calendar_meeting_checklist/static/description/assets/misc/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
calendar_meeting_checklist/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
calendar_meeting_checklist/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
calendar_meeting_checklist/static/description/assets/modules/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
calendar_meeting_checklist/static/description/assets/modules/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
calendar_meeting_checklist/static/description/assets/modules/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
calendar_meeting_checklist/static/description/assets/modules/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
calendar_meeting_checklist/static/description/assets/modules/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
calendar_meeting_checklist/static/description/assets/modules/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/Screenshot9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

BIN
calendar_meeting_checklist/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

5
calendar_meeting_checklist/static/description/assets/screenshots/meeting_checklist_sample_csv.csv

@ -0,0 +1,5 @@
Name,Description
Summary,A brief recap of key results
Interpretations,Give your interpretations
Limitations,acknowledge the limitations
Recommendations,Share each teammate's advice.
1 Name Description
2 Summary A brief recap of key results
3 Interpretations Give your interpretations
4 Limitations acknowledge the limitations
5 Recommendations Share each teammate's advice.

BIN
calendar_meeting_checklist/static/description/assets/screenshots/meeting_checklist_sample_xlx.xlsx

Binary file not shown.

BIN
calendar_meeting_checklist/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
calendar_meeting_checklist/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

659
calendar_meeting_checklist/static/description/index.html

@ -0,0 +1,659 @@
<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/cybrosys-logo.png" width="42" height="42"
style="width: 42px; height: 42px;"/>
<div>
<div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Community
</div>
<div style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
<div style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Odoo.sh
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Calendar Meeting Checklist</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
This Module Helps to List Required Items, Things
to be Done
or Points to be Considered, used as a Reminder in the
Calendar Module
form view
</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;"/>
</div>
</div>
</div>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Explore This
Module</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
features of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
screenshots for this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Overview
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4"> This module helps to enhance your meeting
preparation and management process. It is useful to list required items,
things to be done or points to be considered, used as a reminder in the
calendar module form view
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Features
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Can create a checklist template and fill checklists using the template.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Easy to make a custom checklist</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Checklist completed percentage on the list view.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Can filter checklists by completed checklist or incomplete checklists</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Can import checklists through csv and xlsx files.</span>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Go to Calendar -> Configuration -> Checklist
</h3>
<img src="assets/screenshots/Screenshot1.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Create Meeting checklist
</h3>
<img src="assets/screenshots/Screenshot2.png"
class="img-thumbnail">
</div>
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
From Calendar -> Configuration -> Checklist Template,
Create templates for the checklist and add checklists. .
</h3>
<div style="display: block; margin: 30px auto;">
<img src="assets/screenshots/Screenshot3.png"
class="img-thumbnail">
<img src="assets/screenshots/Screenshot4.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
From Calendar -> configuration -> Import checklist can import
checklist through csv or xlsx files
</h3>
<img src="assets/screenshots/Screenshot5.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Select the file type. And click on 'Import' to import checklists
</h3>
<img src="assets/screenshots/Screenshot6.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Meeting checklist will be created.
</h3>
<img src="assets/screenshots/Screenshot7.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Select or create check list template from the calendar form
view. Meeting checklist with state new will be created
automatically.
</h3>
<img src="assets/screenshots/Screenshot8.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Click on Check Icon To Complete Checklist & Cancel Icon to
Cancel Checklist. Progress of completed checklist can be seen.
</h3>
<img src="assets/screenshots/Screenshot9.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Checklist completed percentage on the list view.
</h3>
<img src="assets/screenshots/Screenshot10.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Can filter Events by Completed or Incomplete checklists.
</h3>
<img src="assets/screenshots/Screenshot11.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Can filter Events by Completed or Incomplete checklists.
</h3>
<img src="assets/screenshots/Screenshot12.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Can filter Events by Completed or Incomplete checklists.
</h3>
<img src="assets/screenshots/Screenshot13.png"
class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Related Products
</h2>
</div>
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center"
style="text-align: center; padding: 2.5rem 1rem !important;">
<hr style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/pos_product_addons/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/1.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/pos_credit_limit/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/2.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/product_arabic/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/calculator_in_pos/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/4.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/dashboard_pos/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/5.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/product_return_pos/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/6.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="left:-25px;width: 35px;color: #000;">
<span class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span> </a>
<a class="carousel-control-next" href="#demo1" data-slide="next"
style="right:-25px;width: 35px;color: #000;">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right" style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire Odoo Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Licensing Consultancy</h6>
</div>
</div>
</div>
<!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure and sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Easy configuration and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Plan, track and schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Mobile friendly, awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</div>
<!-- END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48"
style="width: 42px; height: 42px;"/>
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help?
Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52"
style="width: 52px; height: 52px;"/>
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;"/>
</div>
</div>
</div>
<!-- END OF SUPPORT -->

68
calendar_meeting_checklist/views/calendar_event_views.xml

@ -0,0 +1,68 @@
<?xml version="1.0"?>
<odoo>
<!-- Calendar form view-->
<record id="view_calendar_event_form" model="ir.ui.view">
<field name="name">calendar.event.view.form.calendar.meeting.checklist</field>
<field name="model">calendar.event</field>
<field name="inherit_id" ref="calendar.view_calendar_event_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='page_invitations']" position="after">
<page name="checklist" string="Checklist">
<label for="checklist_template_ids"
string="Checklist Template"/>
<field name="checklist_template_ids" widget="many2many_tags"
string="Checklist Template"/>
<field name="checklist_progress" string="Completed"
widget="percentpie"
attrs="{'invisible': [('checklist_progress', '=', 0)]}"/>
<field name="checklist_line_ids" widget="one2many"
mode="tree">
<tree string="Checklists" editable="bottom" create="true"
delete="true">
<field name="sequence" widget="handle"/>
<field name="checklist_id"/>
<field name="stage"/>
<button name="action_complete" string="Complete"
type="object"
icon="fa-check text-success"
attrs="{'invisible': [('stage', '!=', 'new')]}"/>
<button name="action_cancel" string="Cancel"
type="object"
icon="fa-times-circle text-danger"
attrs="{'invisible': [('stage', '!=', 'new')]}"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
<!--Calendar tree view-->
<record id="view_calendar_event_tree" model="ir.ui.view">
<field name="name">calendar.event.view.tree.calendar.meeting.checklist
</field>
<field name="model">calendar.event</field>
<field name="inherit_id" ref="calendar.view_calendar_event_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='duration']" position="after">
<field name="checklist_progress" string="Completed checklists"
widget="progressbar"/>
</xpath>
</field>
</record>
<!-- Calendar Search view-->
<record id="view_calendar_event_search" model="ir.ui.view">
<field name="name">calendar.event.view.search.inherit.calendar.meeting.checklist</field>
<field name="model">calendar.event</field>
<field name="inherit_id" ref="calendar.view_calendar_event_search"/>
<field name="arch" type="xml">
<xpath expr="//filter[@name='inactive']" position="after">
<separator/>
<filter string="Completed Checklist" name="completed_checklist"
domain="[('completed_checklist', '=', True)]"/>
<filter string="Incomplete Checklist"
name="not_completed_checklist"
domain="[('completed_checklist', '=', False)]"/>
</xpath>
</field>
</record>
</odoo>

39
calendar_meeting_checklist/views/checklist_template_views.xml

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!--Checklist template Form view-->
<record id="checklist_template_view_form" model="ir.ui.view">
<field name="name">checklist.template.view.form</field>
<field name="model">checklist.template</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="checklist_ids" widget="many2many_tags"/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<!-- Action for checklist template menu -->
<record id="action_calendar_checklist_template"
model="ir.actions.act_window">
<field name="name">Checklist Template</field>
<field name="res_model">checklist.template</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new Template for checklist !
</p>
</field>
</record>
<!-- Menu item for meeting checklist template-->
<menuitem id="menu_calendar_checklist_template" name="Checklist Template"
parent="calendar.calendar_menu_config"
action="action_calendar_checklist_template"
sequence="2"/>
</odoo>

38
calendar_meeting_checklist/views/meeting_checklist_views.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!--Checklist Form View -->
<record id="meeting_checklist_view_form" model="ir.ui.view">
<field name="name">meeting.checklist.view.form</field>
<field name="model">meeting.checklist</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="description"/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<!-- Action for Meeting checklist menu -->
<record id="action_calendar_checklist" model="ir.actions.act_window">
<field name="name">Meeting Checklist</field>
<field name="res_model">meeting.checklist</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create checklist !
</p>
</field>
</record>
<!-- Menu item for Meeting Checklists -->
<menuitem id="menu_calendar_checklist" name="Checklist"
parent="calendar.calendar_menu_config"
action="action_calendar_checklist"
sequence="2"/>
</odoo>

21
calendar_meeting_checklist/wizard/__init__.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ranjith R(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
###############################################################################
from . import import_meeting_checklist

103
calendar_meeting_checklist/wizard/import_meeting_checklist.py

@ -0,0 +1,103 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ranjith R(odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
###############################################################################
import base64
import csv
import io
import xlrd
from odoo import fields, models, _
from odoo.exceptions import UserError
class ImportMeetingChecklist(models.TransientModel):
"""To import calendar meeting checklist,
here we can upload the files in csv or xlsx format."""
_name = 'import.meeting.checklist'
_description = 'Import Meeting checklist from excel and csv.'
file_type = fields.Selection(
[('csv', 'CSV File'), ('xls', 'EXCEL File')],
string='Import File Type', default='csv',
help="Choose the type of the file.")
file_content = fields.Binary(string='File Content', attachment=True,
help="Upload the file.")
filename = fields.Char(string='File Name', required=True,
help="File name of uploaded file content.")
def action_import_meeting_checklist_xlsx(self):
"""To import meeting checklist in xlsx format,
it will create a new checklist from this file."""
try:
book = xlrd.open_workbook(
file_contents=base64.decodebytes(self.file_content))
except xlrd.biffh.XLRDError as exc:
raise UserError(_('Only excel files are supported.')) from exc
for sheet in book.sheets():
for row in range(sheet.nrows):
if row >= 1:
row_values = sheet.row_values(row)
main = self.env['meeting.checklist'].sudo().search(
[('name', '=', row_values[0])])
name = main.mapped('name')
if row_values[0] not in name:
self.env['meeting.checklist'].sudo().create({
'name': row_values[0],
'description': row_values[1]})
return {
'type': 'ir.actions.client',
'tag': 'display_notification',
'params': {
'message': _("Successfully Imported!"),
'type': 'success',
'sticky': False,
'next': {'type': 'ir.actions.act_window_close'},
}
}
def action_import_meeting_checklist_csv(self):
"""To import task checklist in csv format,
it will create a new checklist from this file"""
try:
file = base64.b64decode(self.file_content)
data = io.StringIO(file.decode("utf-8"))
data.seek(0)
file_reader = []
csv_reader = csv.reader(data, delimiter=',')
file_reader.extend(csv_reader)
file_reader.pop(0)
for row in file_reader:
main = self.env['meeting.checklist'].sudo().search(
[('name', '=', row[0])])
name = main.mapped('name')
if row[0] not in name:
self.env['meeting.checklist'].sudo().create({
'name': row[0], 'description': row[1]})
except Exception as exc:
raise UserError(_('Only csv files are supported.')) from exc
return {
'type': 'ir.actions.client',
'tag': 'display_notification',
'params': {
'message': _("Successfully Imported!"),
'type': 'success',
'sticky': False,
'next': {'type': 'ir.actions.act_window_close'},
}
}

44
calendar_meeting_checklist/wizard/import_meeting_checklist.xml

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- View for importing checklists -->
<record id="import_meeting_checklist_view_form" model="ir.ui.view">
<field name="name">import.meeting.checklist.view.form</field>
<field name="model">import.meeting.checklist</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="file_type" widget="radio"/>
</group>
<group>
<field name="file_content" filename="filename"/>
<field name="filename" invisible="1"/>
</group>
</group>
</sheet>
<footer>
<button name="action_import_meeting_checklist_xlsx"
string="Import" type="object" class="btn-primary"
attrs="{'invisible':[('file_type','=','csv')]}"/>
<button name="action_import_meeting_checklist_csv"
string="Import" type="object" class="btn-primary"
attrs="{'invisible':[('file_type','=','xls')]}"/>
<button name="action_cancel" class="btn-secondary"
string="Cancel" special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- Action for the wizard -->
<record id="action_import_meeting_checklist" model="ir.actions.act_window">
<field name="name">Import Meeting Checklist</field>
<field name="res_model">import.meeting.checklist</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<!-- Menu item for importing meeting checklist -->
<menuitem id="import_meeting_checklist_menu" name="Import Meeting Checklist"
parent="calendar.calendar_menu_config"
action="action_import_meeting_checklist" sequence="8"/>
</odoo>
Loading…
Cancel
Save