Browse Source

Sep 26 : [ADD] Initial Commit 'event_management'

pull/254/merge
RisvanaCybro 2 years ago
parent
commit
dae249ec8a
  1. 64
      event_management/README.rst
  2. 25
      event_management/__init__.py
  3. 54
      event_management/__manifest__.py
  4. 22
      event_management/controllers/__init__.py
  5. 54
      event_management/controllers/event_management.py
  6. 50
      event_management/data/event_management_type_data.xml
  7. 5
      event_management/doc/RELEASE_NOTES.md
  8. 24
      event_management/models/__init__.py
  9. 205
      event_management/models/event_management.py
  10. 63
      event_management/models/event_management_type.py
  11. 69
      event_management/models/event_service_line.py
  12. 22
      event_management/reports/__init__.py
  13. 73
      event_management/reports/event_management_reports.py
  14. 11
      event_management/reports/event_management_reports.xml
  15. 97
      event_management/reports/pdf_report_templates.xml
  16. 26
      event_management/security/event_management_security.xml
  17. 5
      event_management/security/ir.model.access.csv
  18. BIN
      event_management/static/description/assets/icons/check.png
  19. BIN
      event_management/static/description/assets/icons/chevron.png
  20. BIN
      event_management/static/description/assets/icons/cogs.png
  21. BIN
      event_management/static/description/assets/icons/consultation.png
  22. BIN
      event_management/static/description/assets/icons/ecom-black.png
  23. BIN
      event_management/static/description/assets/icons/education-black.png
  24. BIN
      event_management/static/description/assets/icons/hotel-black.png
  25. BIN
      event_management/static/description/assets/icons/license.png
  26. BIN
      event_management/static/description/assets/icons/lifebuoy.png
  27. BIN
      event_management/static/description/assets/icons/logo.png
  28. BIN
      event_management/static/description/assets/icons/manufacturing-black.png
  29. BIN
      event_management/static/description/assets/icons/pos-black.png
  30. BIN
      event_management/static/description/assets/icons/puzzle.png
  31. BIN
      event_management/static/description/assets/icons/restaurant-black.png
  32. BIN
      event_management/static/description/assets/icons/service-black.png
  33. BIN
      event_management/static/description/assets/icons/trading-black.png
  34. BIN
      event_management/static/description/assets/icons/training.png
  35. BIN
      event_management/static/description/assets/icons/update.png
  36. BIN
      event_management/static/description/assets/icons/user.png
  37. BIN
      event_management/static/description/assets/icons/wrench.png
  38. BIN
      event_management/static/description/assets/misc/categories.png
  39. BIN
      event_management/static/description/assets/misc/check-box.png
  40. BIN
      event_management/static/description/assets/misc/compass.png
  41. BIN
      event_management/static/description/assets/misc/corporate.png
  42. BIN
      event_management/static/description/assets/misc/customer-support.png
  43. BIN
      event_management/static/description/assets/misc/cybrosys-logo.png
  44. BIN
      event_management/static/description/assets/misc/features.png
  45. BIN
      event_management/static/description/assets/misc/logo.png
  46. BIN
      event_management/static/description/assets/misc/pictures.png
  47. BIN
      event_management/static/description/assets/misc/pie-chart.png
  48. BIN
      event_management/static/description/assets/misc/right-arrow.png
  49. BIN
      event_management/static/description/assets/misc/star.png
  50. BIN
      event_management/static/description/assets/misc/support.png
  51. BIN
      event_management/static/description/assets/misc/whatsapp.png
  52. BIN
      event_management/static/description/assets/modules/fleet_car_workshop.jpg
  53. BIN
      event_management/static/description/assets/modules/fleet_rental.png
  54. BIN
      event_management/static/description/assets/modules/front_office_management.png
  55. BIN
      event_management/static/description/assets/modules/insurance_management_cybro.png
  56. BIN
      event_management/static/description/assets/modules/medical_lab_management.png
  57. BIN
      event_management/static/description/assets/modules/salon_management.png
  58. BIN
      event_management/static/description/assets/screenshots/1.png
  59. BIN
      event_management/static/description/assets/screenshots/2.png
  60. BIN
      event_management/static/description/assets/screenshots/3.png
  61. BIN
      event_management/static/description/assets/screenshots/5.png
  62. BIN
      event_management/static/description/assets/screenshots/7.png
  63. BIN
      event_management/static/description/assets/screenshots/8.png
  64. BIN
      event_management/static/description/assets/screenshots/9.png
  65. BIN
      event_management/static/description/assets/screenshots/evnt_catrng.png
  66. BIN
      event_management/static/description/assets/screenshots/hero.gif
  67. BIN
      event_management/static/description/assets/screenshots/img4.png
  68. BIN
      event_management/static/description/assets/screenshots/inv.png
  69. BIN
      event_management/static/description/assets/screenshots/inv2.png
  70. BIN
      event_management/static/description/assets/screenshots/pdf report.png
  71. BIN
      event_management/static/description/assets/screenshots/services.png
  72. BIN
      event_management/static/description/banner.png
  73. BIN
      event_management/static/description/icon.png
  74. 803
      event_management/static/description/index.html
  75. BIN
      event_management/static/img/event_type_image1.jpg
  76. BIN
      event_management/static/img/event_type_image2.jpeg
  77. BIN
      event_management/static/img/event_type_image3.jpeg
  78. BIN
      event_management/static/img/event_type_image4.jpeg
  79. BIN
      event_management/static/img/event_type_image5.jpeg
  80. BIN
      event_management/static/img/event_type_image6.jpeg
  81. BIN
      event_management/static/img/event_type_image7.png
  82. 12
      event_management/static/src/css/event_dashboard.css
  83. 19
      event_management/static/src/js/action_manager.js
  84. 124
      event_management/views/event_management_type_views.xml
  85. 221
      event_management/views/event_management_views.xml
  86. 22
      event_management/wizards/__init__.py
  87. 194
      event_management/wizards/event_management_report.py
  88. 51
      event_management/wizards/event_management_report_views.xml

64
event_management/README.rst

@ -0,0 +1,64 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Event Management
================
Event management is a core module which can manage any type of events.
The user can selectively download and install different service modules to extend the scope of this module.
The new service will be automatically get attached to this core Event management module.
It is different from Odoo's event module.
Here you can manage different types of events and allocate services to different users.
Note: Presently we have released the service “Event Catering” under this module. New services are being developed by our team.
Configuration
=============
* No additional configuration required
Features
========
* Event order creation.
* Automatically creates service orders.
* Allocate the services to different users.
* Integrated with Accounting module.
* Simple Workflow.
* Attractive Design.
Installation
============
- www.odoo.com/documentation/15.0/setup/install.html
- Install our custom addon
License
-------
General Public License, Version 3 (AGPL v3).
(https://www.gnu.org/licenses/agpl-3.0-standalone.html)
Company
-------
`Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
============
* Developer: (V15) Mohammed Dilshad Tk , Contact: odoo@cybrosys.com
Contacts
--------
* Mail Contact : odoo@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 https://www.cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__

25
event_management/__init__.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from . import controllers
from . import models
from . import reports
from . import wizards

54
event_management/__manifest__.py

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
{
'name': 'Event Management',
'version': '15.0.1.0.0',
"category": "Industries",
'summary': """Event Management module for manage events.""",
'description': """Event management module is a core module for managing
different types of events""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['product', 'account'],
'data': ['security/event_management_security.xml',
'security/ir.model.access.csv',
'data/event_management_type_data.xml',
'reports/pdf_report_templates.xml',
'reports/event_management_reports.xml',
'views/event_management_views.xml',
'views/event_management_type_views.xml',
'wizards/event_management_report_views.xml',
],
'assets': {
'web.assets_backend': [
"event_management/static/src/css/event_dashboard.css",
"event_management/static/src/js/action_manager.js"
],
},
'images': ['static/description/banner.png'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': True,
}

22
event_management/controllers/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from . import event_management

54
event_management/controllers/event_management.py

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
import json
from odoo import http
from odoo.http import content_disposition, request
from odoo.http import serialize_exception as _serialize_exception
from odoo.tools import html_escape
class XlsxReportController(http.Controller):
"""Controller Class for xlsx report"""
@http.route('/xlsx_reports', type='http', auth='user', methods=['POST'],
csrf=False)
def get_report_xlsx(self, model, options, output_format, report_name):
"""Method for passing data to xlsx report"""
uid = request.session.uid
report_obj = request.env[model].with_user(uid)
options = json.loads(options)
try:
if output_format == 'xlsx':
response = request.make_response(
None,
headers=[('Content-Type', 'application/vnd.ms-excel'), (
'Content-Disposition',
content_disposition(report_name + '.xlsx'))])
report_obj.get_xlsx_report(options, response)
return response
except Exception as err:
exception = _serialize_exception(err)
error = {
'code': 200,
'message': 'Odoo Server Error',
'data': exception
}
return request.make_response(html_escape(json.dumps(error)))

50
event_management/data/event_management_type_data.xml

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Default event management type (Wedding)-->
<record id="event_management_type_wedding" model="event.management.type">
<field name="name">Wedding</field>
<field name="image" type="base64"
file="event_management/static/img/event_type_image1.jpg"/>
</record>
<!-- Default event management type (Birthday)-->
<record id="event_management_type_birthday" model="event.management.type">
<field name="name">Birthday</field>
<field name="image" type="base64"
file="event_management/static/img/event_type_image2.jpeg"/>
</record>
<!-- Default event management type (Family Events)-->
<record id="event_management_type_family_events" model="event.management.type">
<field name="name">Family Events</field>
<field name="image" type="base64"
file="event_management/static/img/event_type_image3.jpeg"/>
</record>
<!-- Default event management type (Press Conference)-->
<record id="event_management_type_press_conference" model="event.management.type">
<field name="name">Press Conference</field>
<field name="image" type="base64"
file="event_management/static/img/event_type_image4.jpeg"/>
</record>
<!-- Default event management type (Seminars)-->
<record id="event_management_type_seminars" model="event.management.type">
<field name="name">Seminars</field>
<field name="image" type="base64"
file="event_management/static/img/event_type_image5.jpeg"/>
</record>
<!-- Default event management type (Conferences)-->
<record id="event_management_type_conferences" model="event.management.type">
<field name="name">Conferences</field>
<field name="image" type="base64"
file="event_management/static/img/event_type_image6.jpeg"/>
</record>
<!-- Event sequence order -->
<record id="sequence_event_order" model="ir.sequence">
<field name="name">Event Order</field>
<field name="code">event.order.sequence</field>
<field name="suffix">%(day)s/%(month)s/%(year)s</field>
<field name="prefix">EVE-</field>
<field name="number_increment">1</field>
<field name="padding">2</field>
</record>
</data>
</odoo>

5
event_management/doc/RELEASE_NOTES.md

@ -0,0 +1,5 @@
## Module <event_management>
#### 19.09.2023
#### Version 15.0.1.0.0
#### Add
- Initial commit for Event Management

24
event_management/models/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from . import event_management
from . import event_management_type
from . import event_service_line

205
event_management/models/event_management.py

@ -0,0 +1,205 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from odoo import api, fields, models, _
from odoo.exceptions import UserError, ValidationError
class EventManagement(models.Model):
"""Model for managing different event kind of events"""
_name = 'event.management'
_description = "Event Management"
name = fields.Char(string='Name', readonly=True, copy=False,
help="Show combined name of the event")
reference = fields.Char(string='Reference', readonly=True,
help="Reference of the event")
type_of_event_id = fields.Many2one('event.management.type',
string="Type",
required=True,
help="Different types of events")
partner_id = fields.Many2one('res.partner', string="Customer",
required=True,
help="Select customers for the event.")
date = fields.Date(string="Date", default=fields.Date.today, required=True,
help="Date of event creating")
start_date = fields.Datetime(string="Start Date",
default=lambda self: fields.datetime.now(),
required=True, help="Start date of event")
end_date = fields.Datetime(string="End Date", required=True,
help="End date of the event")
service_line_ids = fields.One2many('event.service.line',
'event_id',
string="Services", help="Event services")
state = fields.Selection([('draft', 'Draft'), ('confirm', 'Confirmed'),
('invoice', 'Invoiced'),
('close', 'Close'), ('cancel', 'Canceled')],
string="State", default="draft",
help="States of the Event management record")
note = fields.Text(string='Terms and Conditions', help="Notes")
price_subtotal = fields.Float(string='Total',
compute='_compute_price_subtotal',
readonly=True, store=True,
help="Total price of services in service"
" lines")
image = fields.Binary(string="Image", attachment=True,
help="This field holds the image used as image for "
"the event, limited to 1080x720px.")
currency_id = fields.Many2one('res.currency', string='Currency',
readonly=True,
default=lambda self:
self.env.user.company_id.currency_id,
help="Default currency of company")
invoice_count = fields.Integer(string='Count of Invoices',
help="Count of total invoices for the event")
invoice_ids = fields.Many2many("account.move",
string='Invoices', copy=False,
help="Invoices created for each event")
pending_invoice = fields.Boolean(string="In Voice Pending",
compute='_compute_pending_invoice',
help="Does any pending invoice.")
@api.depends('service_line_ids', 'service_line_ids.state')
def _compute_pending_invoice(self):
""" Computes pending invoices """
pending = 0
for lines in self.service_line_ids:
if lines.invoiced is False and lines.state == "done":
pending = 1
self.pending_invoice = True if pending == 1 else False
@api.depends('service_line_ids', 'service_line_ids.amount')
def _compute_price_subtotal(self):
""" Computes price total """
total = 0
for items in self.service_line_ids:
total += items.amount
self.price_subtotal = total
@api.model
def create(self, values):
"""Create method for sequencing and checking dates while creating"""
if values['start_date'] >= values['end_date']:
raise UserError(_('Start date must be less than End date'))
name = '%s-%s-%s' % (self.env['res.partner'].browse(values['partner_id']
).name,
self.env['event.management.type'].browse(
values['type_of_event_id']).name,
values['date'])
values['name'] = name
sequence_number = self.env['ir.sequence'].next_by_code(
'event.order.sequence')
values['reference'] = sequence_number
res = super(EventManagement, self).create(values)
return res
def action_event_confirm(self):
"""Button action to confirm"""
self.state = "confirm"
def action_event_cancel(self):
"""Button action to cancel"""
self.state = "cancel"
def action_event_close(self):
"""Button action to close"""
pending = 0
for lines in self.service_line_ids:
if lines.invoiced is False:
pending = 1
if pending == 1:
raise ValidationError(_('You can close an event only when all '
'services is Done and Invoiced'))
else:
self.state = "close"
def action_view_invoice_event(self):
"""Button action to View the related invoice"""
invoices = self.mapped('invoice_ids')
action = self.env.ref(
'account.action_move_out_invoice_type').sudo().read()[0]
if len(invoices) > 1:
action['domain'] = [('id', 'in', invoices.ids)]
elif len(invoices) == 1:
action['views'] = [
(self.env.ref('account.view_move_form').id, 'form')]
action['res_id'] = invoices.ids[0]
else:
action = {'type': 'ir.actions.act_window_close'}
return action
def action_event_invoice_create(self):
"""Button action to create related invoice"""
product_line = []
payment_list = []
for line in self.service_line_ids:
if line.invoiced is False and line.state == "done":
product_line.append({'product_id': line.related_product_id,
'price_unit': line.amount})
line.invoiced = True
if len(product_line) > 0:
partner = self.partner_id
for records in product_line:
product_id = records['product_id']
if product_id.property_account_income_id.id:
income_account = product_id.property_account_income_id.id
elif product_id.categ_id.property_account_income_categ_id.id:
income_account = product_id.categ_id. \
property_account_income_categ_id.id
else:
raise UserError(
_('Please define income account for'
' this product: "%s" (id:%d).') % (
product_id.name, product_id.id))
inv_line_data = {
'name': self.name,
'account_id': income_account,
'price_unit': records['price_unit'],
'quantity': 1,
'product_id': product_id.id,
'product_uom_id': product_id.uom_id.id,
}
payment_list.append((0, 0, inv_line_data))
inv_data = {
'move_type': 'out_invoice',
'ref': self.name,
'bank_partner_id': partner.property_account_payable_id.id,
'partner_id': partner.id,
'payment_reference': self.name,
'company_id': self.env.user.company_id.id,
'invoice_line_ids': payment_list,
}
inv_id = self.env['account.move'].create(inv_data)
result = {
'view_type': 'form',
'res_model': 'account.move',
'res_id': inv_id.id,
'view_id': False,
'view_mode': 'form',
'type': 'ir.actions.act_window'
}
self.state = "invoice"
all_invoice_ids = self.invoice_ids.ids
all_invoice_ids.append(inv_id.id)
self.update({'invoice_ids': all_invoice_ids,
'invoice_count': self.invoice_count + 1})
return result

63
event_management/models/event_management_type.py

@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from ast import literal_eval
from odoo import fields, models
class EventManagementType(models.Model):
"""Model for managing the Event types"""
_name = 'event.management.type'
_description = "Event Management Type"
name = fields.Char(string="Name", help="Name of the event type")
image = fields.Binary(string="Image", attachment=True,
help="This field holds the image used as "
"image for the event, limited to 1080x720px.")
event_count = fields.Integer(string="Count of Events",
compute='_compute_event_count',
help="Count of total events")
def _compute_event_count(self):
""" Compute event count """
for records in self:
events = self.env['event.management'].search_count([
('type_of_event_id', '=', records.id)])
records.event_count = events
def _get_action(self, action_xml_id):
""" Pass values to Event management kanban """
action = self.env['ir.actions.actions']._for_xml_id(action_xml_id)
if self:
action['display_name'] = self.display_name
context = {
'search_default_type_of_event_id': [self.id],
'default_type_of_event_id': self.id,
}
action_context = literal_eval(action['context'])
context = {**action_context, **context}
action['context'] = context
return action
def get_event_type_action_event(self):
"""Event management action """
return self._get_action(
'event_management.event_management_action')

69
event_management/models/event_service_line.py

@ -0,0 +1,69 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class EventServiceLine(models.Model):
"""Model to manage the service lines of the event management"""
_name = 'event.service.line'
_description = "Event Management Line"
service = fields.Selection(
[('', '')], string="Services", required=True,
help="List of the service that automatically adds to selection while"
" install service modules")
event_id = fields.Many2one('event.management', string="Event",
help="Name of the event")
date_from = fields.Datetime(string="Start Date", required=True,
help="Start date of service")
date_to = fields.Datetime(string="Date to", required=True, help="End date"
" of service")
amount = fields.Float(string="Amount", readonly=True, help="Amount")
state = fields.Selection([('done', 'Done'), ('pending', 'Pending')],
string="State", default="pending",
readonly=True, help="States of the each"
" service in service line")
currency_id = fields.Many2one('res.currency', string='Currency',
readonly=True, default=lambda self:
self.env.user.company_id.currency_id,
help="Default currency of the company")
invoiced = fields.Boolean(string="Invoiced", readonly=True,
help="Is this service invoiced")
related_product_id = fields.Many2one('product.product',
string="Related Product",
help="Select the related service "
"product")
_sql_constraints = [('event_supplier_unique', 'unique(event_id, service)',
'Duplication Of Service In The Service Lines '
'Is not Allowed')]
@api.constrains('date_from', 'date_to')
def _check_date_to_date_from(self):
""" Checking if end date less than start date
if yes: Show a validation error"""
for rec in self:
if rec.date_to < rec.date_from:
raise ValidationError(_('"Date to" cannot be set before '
'"Date from".\n\n'
'Check the "Date from" and "Date to" '
'of the "%s" service' % rec.service))

22
event_management/reports/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from . import event_management_reports

73
event_management/reports/event_management_reports.py

@ -0,0 +1,73 @@
"""Module for pdf data fetching and carry off pdf report data"""
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
import pytz
from odoo import api, fields, models
from odoo.exceptions import ValidationError
class ReportHotelManagement(models.AbstractModel):
"""Class for fetch and carry off pdf data to template"""
_name = "report.event_management.report_event_management"
_description = "Event Management Report"
@api.model
def _get_report_values(self, docids, data=None):
""" Get values for the report"""
form_data = data['form']
where = '1=1'
if form_data['date_from'] and form_data['date_to'] \
and form_data['date_from'] > form_data['date_to']:
raise ValidationError('From Date must be less than To Date')
if form_data["partner_id"]:
where += """AND e.partner_id = '%s'""" % \
(form_data['partner_id'][0])
if form_data['date_from']:
where += """AND e.date>='%s'""" % (form_data['date_from'])
if form_data['date_to']:
where += """AND e.date <= '%s'""" % (form_data['date_to'])
if form_data['type_event_ids']:
event_list = data['event_types']
event_ids = f"({event_list[0]})" if len(event_list) == 1 else tuple(
event_list)
where += """AND e.type_of_event_id IN {}""".format(event_ids)
if form_data['event_state']:
where += """AND e.state = '%s'""" % (form_data['event_state'])
self.env.cr.execute("""
SELECT e.name as event, t.name as type, r.name as partner,
e.state, e.date,
e.start_date, e.end_date
from event_management e inner join
res_partner r on e.partner_id = r.id
inner join event_management_type t on
e.type_of_event_id = t.id
where %s order by e.date""" % where)
rec = self.env.cr.dictfetchall()
return {
'docs': rec,
'docs2': form_data,
'today_date': fields.datetime.strftime(
pytz.UTC.localize(fields.datetime.
now()).astimezone(pytz.timezone(self.env.
user.tz)),
"%d-%m-%Y %H:%M:%S")
}

11
event_management/reports/event_management_reports.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Event management report action-->
<record id="report_event_management_action" model="ir.actions.report">
<field name="name">Event Management Report</field>
<field name="model">event.management</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">event_management.report_event_management</field>
<field name="report_file">event_management.report_event_management</field>
</record>
</odoo>

97
event_management/reports/pdf_report_templates.xml

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Pdf report template-->
<template id="report_event_management">
<t t-call="web.html_container">
<t t-call="web.external_layout">
<div class="page">
<div class="oe_structure"/>
<div class="row">
<div class="col-md-12">
<h2>
<span>
<center>Event Report</center>
</span>
</h2>
</div>
</div>
<br/>
<br/>
<div>
<span>Date:</span>
<span t-esc="today_date"/>
</div>
<br/>
<div>
<span t-if="docs2['date_from']">
<b>From:</b>
<span style="margin-left:3px;margin-right:17px;margin-bottom:3px"
t-esc="docs2['date_from']"/>
</span>
<span t-if="docs2['date_to']">
<b>To:</b>
<span style="margin-left:3px;margin-right:17px;margin-bottom:3px"
t-esc="docs2['date_to']"/>
</span>
<span t-if="docs2['partner_id']">
<b>Customer:</b>
<span style="margin-left:3px;margin-bottom:3px"
t-esc="docs2['partner_id'][1]"/>
</span>
</div>
<br/>
<div class="row">
<div class="col-md-12">
<table class="table table-sm">
<thead>
<tr>
<th>Sl.no</th>
<th>Name</th>
<th>Type</th>
<th>Customer</th>
<th>Register Date</th>
<th>Start Date</th>
<th>End Date</th>
<th>State</th>
</tr>
</thead>
<tbody>
<t t-foreach="docs" t-as="l">
<tr>
<td>
<t t-esc="l_index + 1"/>
</td>
<td>
<span t-esc="l['event']"/>
</td>
<td>
<span t-esc="l['type']"/>
</td>
<td>
<span t-esc="l['partner']"/>
</td>
<td>
<span t-esc="l['date']"/>
</td>
<td>
<span t-esc="l['start_date']"/>
</td>
<td>
<span t-esc="l['end_date']"/>
</td>
<td>
<span t-esc="{'draft': 'Draft', 'confirm': 'Confirmed', 'cancel': 'Cancelled', 'invoice': 'Invoiced', 'close': 'Closed'}
[l['state']]"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</div>
<div class="oe_structure"/>
</div>
</t>
</t>
</template>
</odoo>

26
event_management/security/event_management_security.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Category event management-->
<record id="event_management.module_category_event_management"
model="ir.module.category">
<field name="name">Event Management</field>
<field name="sequence">19</field>
</record>
<!-- Admin user group re groups-->
<record id="group_event_manager" model="res.groups">
<field name="name">Event Manager</field>
<field name="category_id"
ref="event_management.module_category_event_management"/>
<field name="users"
eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
<!-- Manager see all events rule -->
<record id="event_mngr_see_all_events" model="ir.rule">
<field name="name">Event Manager see all Events</field>
<field name="model_id"
ref="event_management.model_event_management"/>
<field name="domain_force">[]</field>
<field name="groups"
eval="[(4, ref('event_management.group_event_manager'))]"/>
</record>
</odoo>

5
event_management/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_event_management_event_manager,access.event.management.event.manager,event_management.model_event_management,event_management.group_event_manager,1,1,1,1
access_event_service_line_event_manager,access.event.service.line.event.manager,event_management.model_event_service_line,event_management.group_event_manager,1,1,1,1
access_event_management_type_event_manager,access.event.management.type.event.manager,event_management.model_event_management_type,event_management.group_event_manager,1,1,1,1
access_event_management_report_event_manager,access.event.management.report.event.manager,event_management.model_event_management_report,event_management.group_event_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_event_management_event_manager access.event.management.event.manager event_management.model_event_management event_management.group_event_manager 1 1 1 1
3 access_event_service_line_event_manager access.event.service.line.event.manager event_management.model_event_service_line event_management.group_event_manager 1 1 1 1
4 access_event_management_type_event_manager access.event.management.type.event.manager event_management.model_event_management_type event_management.group_event_manager 1 1 1 1
5 access_event_management_report_event_manager access.event.management.report.event.manager event_management.model_event_management_report event_management.group_event_manager 1 1 1 1

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
event_management/static/description/assets/icons/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
event_management/static/description/assets/modules/fleet_car_workshop.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
event_management/static/description/assets/modules/fleet_rental.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
event_management/static/description/assets/modules/front_office_management.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
event_management/static/description/assets/modules/insurance_management_cybro.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
event_management/static/description/assets/modules/medical_lab_management.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
event_management/static/description/assets/modules/salon_management.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
event_management/static/description/assets/screenshots/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

BIN
event_management/static/description/assets/screenshots/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

BIN
event_management/static/description/assets/screenshots/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

BIN
event_management/static/description/assets/screenshots/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

BIN
event_management/static/description/assets/screenshots/7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
event_management/static/description/assets/screenshots/8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 KiB

BIN
event_management/static/description/assets/screenshots/9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
event_management/static/description/assets/screenshots/evnt_catrng.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

BIN
event_management/static/description/assets/screenshots/img4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
event_management/static/description/assets/screenshots/inv.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
event_management/static/description/assets/screenshots/inv2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
event_management/static/description/assets/screenshots/pdf report.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
event_management/static/description/assets/screenshots/services.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
event_management/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
event_management/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

803
event_management/static/description/index.html

@ -0,0 +1,803 @@
<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;">
Event Management
</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Core Module for Managing Different Types Of Events
</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif"
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; margin-top: 8%; top: 45%; left: 12%; 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">
Event management is a core module which can manage any type of events.
The user can selectively download and install different service modules
to extend the scope of this module. The new service will be
automatically
get attached to this core Event management module. It is different from
Odoo's event module. Here you can manage different types of events and
allocate services to different users. Note: Presently we have released
the service 'Event Catering' under this module. New services are being
developed by our team.
</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-start"
style="margin-top: 40px; margin-bottom: 40px">
<img src="./assets/misc/check-box.png" class="mr-2"/>
<div>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Event Order.
</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 12px;">
Can create new Event management orders.
</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 40px; margin-bottom: 40px">
<img src="./assets/misc/check-box.png" class="mr-2"/>
<div>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Automatically Service Orders.
</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 12px;">
Service orders are automatically created on confirming event orders.
</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 40px; margin-bottom: 40px">
<img src="./assets/misc/check-box.png" class="mr-2"/>
<div>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Integrated with Accounting Module.
</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 12px;">
Can create and view invoices based on services.
</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 40px; margin-bottom: 40px">
<img src="./assets/misc/check-box.png" class="mr-2"/>
<div>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Informative Dashboard
</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 12px;">
Event type related order count is visible and can see the event order
related to each type on clicking the type from Dashboard.
</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 40px; margin-bottom: 40px">
<img src="./assets/misc/check-box.png" class="mr-2"/>
<div>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Event Types.
</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 12px;">
User can configure new Event types and can delete the old ones.
Can configure types from the Dashboard itself.
</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 40px; margin-bottom: 40px">
<img src="./assets/misc/check-box.png" class="mr-2"/>
<div>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Reports
</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 12px;">
Event Management Report in Pdf and Xlsx is available.
</span>
</div>
</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;">
Event Management Dashboard View
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Dashboard view with all the event types and related order counts
</p>
<img src="./assets/screenshots/1.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;">
Event Order Kanban view
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Kanban view with Event Type image and Event Reference.
</p>
<img src="./assets/screenshots/2.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;">
Event Order Tree view
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Several details including Customer, Start Date and End Date,
State etc.
</p>
<img src="./assets/screenshots/3.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;">
Install Event Modules
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Install our event modules (event_catering) from odoo
app store to add option to service line.
</p>
<img src="./assets/screenshots/evnt_catrng.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;">
Event Order Form view
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
In form view user can add the details of order and the services
to be provided.
Add services by clicking smart the button(Pending and Done
services
showing smart button).
</p>
<img src="./assets/screenshots/img4.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;">
Services of Events
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Add services by clicking pending works showing smart button.
</p>
<img src="./assets/screenshots/services.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 Invoice
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Can create invoices after the services are done by clicking
CREATE INVOICE button.
</p>
<img src="./assets/screenshots/inv.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
A Draft Invoice will be created for total amount in service
line.
</p>
<img src="./assets/screenshots/inv2.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;">
Event Management Report
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Can print pdf and xlsx report with several details including
Customer, Event type,
State and also based on Dates.
</p>
<img src="./assets/screenshots/5.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;">
Pdf Report
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Pdf report with the Event order details based on the details
from Report.
</p>
<img src="./assets/screenshots/pdf report.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;">
Excel Report
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Excel report with the Event order details based on the details
from Report.
</p>
<img src="./assets/screenshots/7.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;">
Event Type Form view
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Configure different Event type with name and Image.
</p>
<img src="./assets/screenshots/8.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;">
Event Type Tree view
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Tree view of Event type.
</p>
<img src="./assets/screenshots/9.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-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<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/fleet_rental/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/fleet_rental.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/salon_management/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/salon_management.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/fleet_car_workshop/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/fleet_car_workshop.jpg">
</div>
</a>
</div>
</div>
<div class="carousel-item active"
style="min-height: 198.656px;">
<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/medical_lab_management/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/medical_lab_management.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/front_office_management/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/front_office_management.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/insurance_management_cybro/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/insurance_management_cybro.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="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="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"
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"
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 -->

BIN
event_management/static/img/event_type_image1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

BIN
event_management/static/img/event_type_image2.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
event_management/static/img/event_type_image3.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
event_management/static/img/event_type_image4.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
event_management/static/img/event_type_image5.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
event_management/static/img/event_type_image6.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
event_management/static/img/event_type_image7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

12
event_management/static/src/css/event_dashboard.css

@ -0,0 +1,12 @@
.style_event {
text-align: center;
flex: none !important;
background: none !important;
box-shadow: none !important;
}
.style_event_type {
text-align: center;
flex: none !important;
background: none !important;
box-shadow: none !important;
}

19
event_management/static/src/js/action_manager.js

@ -0,0 +1,19 @@
/** @odoo-module **/
import {registry} from "@web/core/registry";
import framework from 'web.framework';
import session from 'web.session';
//Excel report handler
registry.category("ir.actions.report handlers").add("xlsx_handler", async (action) => {
if (action.report_type === 'xlsx') {
framework.blockUI();
var def = $.Deferred();
session.get_file({
url: '/xlsx_reports',
data: action.data,
success: def.resolve.bind(def),
error: (error) => this.call('crash_manager', 'rpc_error', error),
complete: framework.unblockUI,
});
return def;
}
});

124
event_management/views/event_management_type_views.xml

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Event management type view kanban-->
<record id="event_management_type_view_kanban" model="ir.ui.view">
<field name="name">event.management.type.view.kanban</field>
<field name="model">event.management.type</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban class="oe_background_grey o_kanban_dashboard" create="0">
<field name="name"/>
<field name="event_count"/>
<field name="id"/>
<templates>
<t t-name="kanban-box">
<div class="col-md-12 oe_kanban_card">
<div>
<button type="edit" string="Settings"
class="button_background"
groups="event_management.group_event_manager"
style="float: right;margin-top: 2px;background: none !important;border: none !IMPORTANT;FONT-SIZE: 16px;">
<i class="fa fa-cog" title="setting"/>
</button>
</div>
<div class="o_primary style_event_type col-md-12"
style="padding-bottom: 4%;">
<div class="col-md-10">
<a type="object"
name="get_event_type_action_event">
<h2 style="text-align:left;">
<field name="name"/>
</h2>
</a>
</div>
<div class="col-md-12">
<img t-att-src="kanban_image('event.management.type', 'image', record.id.raw_value)"
alt="Image"
style="width:100%; border-radius: 13px;height:150px;"/>
</div>
<div class="col-md-12">
<span style="margin-top: 20%;margin-bottom: 2%;font-size: 18px;">
<span class=" o_primary"
style="float: left;margin-top:2px;">
Total Orders :
</span>
<field name="event_count"/>
</span>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!-- Event management type view kanban action-->
<record id="event_management_type_kanban_action"
model="ir.actions.act_window">
<field name="name">Dashboard</field>
<field name="res_model">event.management.type</field>
<field name="view_mode">kanban,form</field>
<field name="context">{}</field>
</record>
<!-- Event management dashboard menu-->
<menuitem id="event_management_dashboard_menu"
parent="event_management.event_management_menu_root"
action="event_management_type_kanban_action" sequence="1"/>
<!-- Dashboard client actions-->
<record id="action_event_dashboard" model="ir.actions.client">
<field name="name">Event Types</field>
<field name="tag">event_type</field>
</record>
<!-- Event management type view tree-->
<record id="event_management_type_view_tree" model="ir.ui.view">
<field name="name">event.management.type.view.tree</field>
<field name="model">event.management.type</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
</tree>
</field>
</record>
<!-- Event management type view form-->
<record id="event_management_type_view_form" model="ir.ui.view">
<field name="name">event.management.type.view.form</field>
<field name="model">event.management.type</field>
<field name="arch" type="xml">
<form>
<sheet>
<div style="text-align:center;padding-top:20px;">
<field name="image" widget='image'
style="box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);"/>
</div>
<h1 style="text-align: center;margin-top: 20px;">
<field name="name" required="1"/>
</h1>
</sheet>
</form>
</field>
</record>
<!-- Event management type action-->
<record id="event_management_type_action"
model="ir.actions.act_window">
<field name="name">Event type</field>
<field name="res_model">event.management.type</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add an event type.
</p>
<p>
Here you can create different types of events.
</p>
</field>
</record>
<!-- Event management configuration menu-->
<menuitem id="event_management_configuration_menu" name="Configuration"
parent="event_management_menu_root"
groups="event_management.group_event_manager"/>
<!-- Event management type menu-->
<menuitem id="event_management_type_menu" name="Event Type"
parent="event_management_configuration_menu"
action="event_management_type_action"/>
</odoo>

221
event_management/views/event_management_views.xml

@ -0,0 +1,221 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Event management view tree -->
<record id="event_management_view_tree" model="ir.ui.view">
<field name="name">event.management.view.tree</field>
<field name="model">event.management</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="type_of_event_id"/>
<field name="partner_id"/>
<field name="date"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="state"/>
</tree>
</field>
</record>
<!-- Event management view kanban -->
<record id="event_management_view_kanban" model="ir.ui.view">
<field name="name">event.management.view.kanban</field>
<field name="model">event.management</field>
<field name="arch" type="xml">
<kanban quick_create="false">
<field name="type_of_event_id"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click col-md-2 style_event">
<div class="o_kanban_image"
style="width:100%; ">
<t>
<img t-att-src="kanban_image('event.management.type', 'image', record.type_of_event_id.raw_value)"
alt="type"
style="width:100%; border-radius: 23px;"/>
</t>
</div>
<div class="oe_kanban_content"
style="padding-left: 0px !important;">
<div style="text-align: center;;font-size:15px;">
<strong>
<field name="name"/>
</strong>
</div>
</div>
<div class="oe_clear"/>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!-- Event management view form -->
<record id="event_management_view_form" model="ir.ui.view">
<field name="name">event.management.view.form</field>
<field name="model">event.management</field>
<field name="arch" type="xml">
<form>
<header>
<button name="action_event_confirm" string="Confirm"
type="object" class="oe_highlight"
states="draft"/>
<button name="action_event_invoice_create"
string="Create Invoice" type="object"
class="oe_highlight"
attrs="{'invisible': ['|', ('state', 'not in', ['invoice', 'confirm']), ('pending_invoice', '=', False)]}"/>
<button name="action_event_cancel" string="Cancel"
type="object" states="draft"/>
<button name="action_event_close" string="Close"
type="object" states="invoice"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,confirm,invoice,close"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="action_view_invoice_event"
type="object"
class="oe_stat_button"
icon="fa-pencil-square-o"
attrs="{'invisible': [('state', 'not in', ['invoice', 'close'])]}">
<field name="invoice_count" widget="statinfo"
string="Invoices"/>
</button>
</div>
<h1 class="mt0">
<field name="name" readonly="1"/>
</h1>
<group>
<group>
<field name="type_of_event_id"
attrs="{'readonly': [('state', 'not in', ['draft'])]}"/>
<field name="partner_id"
attrs="{'readonly': [('state', 'not in', ['draft'])]}"/>
<field name="reference" readonly="1"/>
</group>
<group>
<field name="date"
attrs="{'readonly': [('state', 'not in', ['draft'])]}"/>
<field name="start_date"
attrs="{'readonly': [('state', 'not in', ['draft'])]}"/>
<field name="end_date"
attrs="{'readonly': [('state', 'not in', ['draft'])]}"/>
<field name="currency_id" invisible="1"/>
<field name="pending_invoice" invisible="1"/>
</group>
</group>
<notebook>
<page string="Service Lines">
<field name="service_line_ids" mode="tree"
attrs="{'readonly': [('state', 'not in', ['draft'])]}">
<tree string="Service Lines Tree"
editable="bottom">
<field name="service"/>
<field name="date_from"/>
<field name="date_to"/>
<field name="state" readonly="1"/>
<field name="invoiced" readonly="1"/>
<field name="currency_id"
invisible="1"/>
<field name="related_product_id"
invisible="1"/>
<field name="invoiced" invisible="1"/>
<field name="amount" widget="monetary"
options="{'currency_field': 'currency_id'}"/>
</tree>
</field>
<group class="oe_subtotal_footer oe_right"
colspan="2" name="event_total">
<div class="oe_subtotal_footer_separator oe_inline o_td_label">
<label for="price_subtotal"/>
</div>
<field name="price_subtotal" nolabel="1"
class="oe_subtotal_footer_separator"
widget="monetary"
options="{'currency_field': 'currency_id'}"/>
</group>
<field name="note" class="oe_inline"
placeholder="Setup default terms and conditions in your company settings."
attrs="{'readonly': [('state', 'not in', ['draft'])]}"/>
<div class="oe_clear"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!-- Event management search view -->
<record id="event_management_view_search" model="ir.ui.view">
<field name="name">event.management.view.search</field>
<field name="model">event.management</field>
<field name="arch" type="xml">
<search string="Event Management">
<field name="reference"/>
<field name="type_of_event_id"/>
<field name="partner_id"/>
<field name="service_line_ids"/>
<group expand="0" string="Group By">
<filter string="Event Type" name="group_by_event"
domain="[]"
context="{'group_by':'type_of_event_id'}"/>
<filter string="State" name="group_by_state" domain="[]"
context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
<!-- Event management calendar view -->
<record id="event_management_view_calender" model="ir.ui.view">
<field name="name">event.management.view.calendar</field>
<field name="model">event.management</field>
<field name="arch" type="xml">
<calendar string="Event Orders" date_start="start_date"
date_stop="end_date" color="type_of_event_id">
<field name="name"/>
<field name="partner_id"/>
<field name="state"/>
</calendar>
</field>
</record>
<!-- Event management graph view -->
<record id="event_management_view_graph" model="ir.ui.view">
<field name="name">event.management.view.graph</field>
<field name="model">event.management</field>
<field name="arch" type="xml">
<graph string="Event Orders">
<field name="partner_id"/>
<field name="type_of_event_id"/>
<field name="price_subtotal" type="measure"/>
</graph>
</field>
</record>
<!-- Event management kanban view window action-->
<record id="event_management_action"
model="ir.actions.act_window">
<field name="name">Event Management</field>
<field name="res_model">event.management</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">kanban,tree,form,calendar,graph</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add an event order.
</p>
<p>
Here you can create and manage your events.
</p>
</field>
</record>
<!-- Event management root menu-->
<menuitem id="event_management_menu_root" name="Event Management"
web_icon="event_management,static/description/icon.png"/>
<!-- Event management sub menu 1-->
<menuitem id="event_management_menu" name="Event Management"
parent="event_management_menu_root"
sequence="5"/>
<!-- Event management sub menu 2-->
<menuitem id="event_management_menu_sub" name="Event Management"
parent="event_management_menu"
action="event_management_action" sequence="2"/>
<!-- Event management service menu -->
<menuitem id="event_management_service_menu" name="Service"
parent="event_management_menu" sequence="4"/>
</odoo>

22
event_management/wizards/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from . import event_management_report

194
event_management/wizards/event_management_report.py

@ -0,0 +1,194 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: MOHAMMED DILSHAD TK (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.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
import json
import pytz
from odoo import fields, models
from odoo.exceptions import ValidationError
from odoo.tools import date_utils, io, xlsxwriter
class EventManagementReport(models.TransientModel):
"""Creates for event management report"""
_name = 'event.management.report'
_description = 'Event Management Report'
date_from = fields.Date(string="From", help="Start date event")
date_to = fields.Date(string="To", help="End date of event")
partner_id = fields.Many2one('res.partner', string='Customer',
help="Choose a partner whose associated events"
" are to be displayed.")
type_event_ids = fields.Many2many('event.management.type', 'event_type_rel',
'report_id', 'type_id', string="Type",
help="Type of event management")
event_state = fields.Selection(
[('draft', 'Draft'), ('confirm', 'Confirmed'), ('invoice', 'Invoiced'),
('close', 'Close'), ('cancel', 'Canceled')], string="State",
help="Choose a state of the event")
def action_print_pdf_report(self):
"""Method for printing pdf report"""
type_select = self.type_event_ids.ids
data = {
'model': 'event.management.report',
'form': self.read()[0],
'event_types': type_select
}
return self.env.ref(
'event_management.report_event_management_action').report_action(
self, data=data)
def action_print_xls_report(self):
"""Method of button for printing xlsx report"""
rec = self.env.user.sudo().company_id
if self.date_from and self.date_to and self.date_from > self.date_to:
raise ValidationError('From Date must be less than To Date')
current = pytz.UTC.localize(fields.datetime.now()).astimezone(pytz.
timezone(self.env.user.tz))
data = {
'event_type': self.type_event_ids.ids,
'date_from': self.date_from,
'date_to': self.date_to,
'customer': self.partner_id.id,
'state': self.event_state,
'today_date': current,
'company': [rec.partner_id.name, rec.street, rec.favicon]
}
return {
'type': 'ir.actions.report',
'report_type': 'xlsx',
'data': {'model': 'event.management.report',
'output_format': 'xlsx',
'options': json.dumps(data,
default=date_utils.json_default),
'report_name': 'Event Management Report', },
}
def get_xlsx_report(self, data, response):
"""Method for fetching data and printing xlsx report from controller"""
output = io.BytesIO()
workbook = xlsxwriter.Workbook(output, {'in_memory': True})
sheet = workbook.add_worksheet()
head = workbook.add_format({'align': 'center',
'bold': True, 'font_size': '20px'})
cell_head_format = workbook.add_format({'font_size': '12px'})
cell_data_format = workbook.add_format({'font_size': '10px'})
txt_head = workbook.add_format({'font_size': '10px', 'border': 2})
txt = workbook.add_format({'font_size': '10px', 'border': 2})
sheet.merge_range('F2:M3', 'EVENT MANAGEMENT REPORT', head)
sheet.merge_range('B4:E4', data['company'][0], cell_head_format)
sheet.merge_range('B5:E5', data['company'][1], cell_head_format)
sheet.write('B6', 'Date:', cell_head_format)
sheet.merge_range('C6:E6', data['today_date'], cell_data_format)
if data['date_from'] and data['date_to'] and data['customer']:
customer_name = self.env['res.partner'].browse(int(
data['customer'])).name
sheet.write('B8', 'From:', cell_head_format)
sheet.merge_range('C8:D8', data['date_from'], cell_data_format)
sheet.write('F8', 'To:', cell_head_format)
sheet.merge_range('G8:H8', data['date_to'], cell_data_format)
sheet.merge_range('J8:K8', 'Customer:', cell_head_format)
sheet.merge_range('L8:N8', customer_name, cell_data_format)
elif data['date_from'] and data['date_to']:
sheet.write('B8', 'From:', cell_head_format)
sheet.merge_range('C8:D8', data['date_from'],
cell_data_format)
sheet.write('F8', 'To:', cell_head_format)
sheet.merge_range('G8:H8', data['date_to'], cell_data_format)
elif data['date_from'] and data['customer']:
customer_name = self.env['res.partner'].browse(int(
data['customer'])).name
sheet.write('B8', 'From:', cell_head_format)
sheet.merge_range('C8:D8', data['date_from'], cell_data_format)
sheet.merge_range('F8:G8', 'Customer:', cell_head_format)
sheet.merge_range('H8:J8', customer_name, cell_data_format)
elif data['customer'] and data['date_to']:
customer_name = self.env['res.partner'].browse(int(
data['customer'])).name
sheet.write('B8', 'To:', cell_head_format)
sheet.merge_range('C8:D8', data['date_to'], cell_data_format)
sheet.merge_range('F8:G8', 'Customer:', cell_head_format)
sheet.merge_range('H8:J8', customer_name, cell_data_format)
elif data['date_from']:
sheet.write('B8', 'From:', cell_head_format)
sheet.merge_range('C8:D8', data['date_from'], cell_data_format)
elif data['date_to']:
sheet.write('B8', 'To:', cell_head_format)
sheet.merge_range('C8:D8', data['date_to'], cell_data_format)
elif data['customer']:
customer_name = self.env['res.partner'].browse(int(
data['customer'])).name
sheet.merge_range('B8:C8', 'Customer:', cell_head_format)
sheet.merge_range('D8:E8', customer_name, cell_data_format)
sheet.write(10, 0, 'Sl.no', txt_head)
sheet.merge_range('B11:E11', 'Name', txt_head)
sheet.merge_range('F11:H11', 'Type', txt_head)
sheet.merge_range('I11:K11', 'Customer', txt_head)
sheet.merge_range('L11:M11', 'Register Date', txt_head)
sheet.merge_range('N11:O11', 'Start Date', txt_head)
sheet.merge_range('P11:Q11', 'End Date', txt_head)
sheet.write(10, 17, 'State', txt_head)
where = '1=1'
if data["customer"]:
where += """AND e.partner_id = %s""" % int(data['customer'])
if data['date_from']:
where += """AND e.date>='%s'""" % (data['date_from'])
if data['date_to']:
where += """AND e.date <= '%s'""" % (data['date_to'])
if data['event_type']:
event_list = data['event_type']
event_ids = f"({event_list[0]})" if len(
event_list) == 1 else tuple(event_list)
where += """AND e.type_of_event_id IN {}""".format(event_ids)
if data['state']:
where += """AND e.state = '%s'""" % (data['state'])
self.env.cr.execute("""
SELECT e.name as event, t.name as type, r.name as partner,
e.state, e.date,
e.start_date, e.end_date
from event_management e inner join
res_partner r on e.partner_id = r.id
inner join event_management_type t on
e.type_of_event_id = t.id
where %s order by e.date""" % where)
datas = self.env.cr.fetchall()
row = 11
col = 1
for i in range(0, len(datas)):
sheet.write(row, 0, col, txt)
sheet.merge_range('B%d:E%d' % (row + 1, row + 1), datas[i][0], txt)
sheet.merge_range('F%d:H%d' % (row + 1, row + 1), datas[i][1], txt)
sheet.merge_range('I%d:K%d' % (row + 1, row + 1), datas[i][2], txt)
sheet.merge_range('L%d:M%d' % (row + 1, row + 1),
fields.Date.to_string(datas[i][4]), txt)
sheet.merge_range('N%d:O%d' % (row + 1, row + 1),
fields.Datetime.to_string(datas[i][5]), txt)
sheet.merge_range('P%d:Q%d' % (row + 1, row + 1),
fields.Datetime.to_string(datas[i][6]), txt)
sheet.write(row, 17,
dict(self.env['event.management']._fields[
'state'].selection).get(datas[i][3]), txt)
row += 1
col += 1
workbook.close()
output.seek(0)
response.stream.write(output.read())
output.close()

51
event_management/wizards/event_management_report_views.xml

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Event management report view form-->
<record id="event_management_report_view_form" model="ir.ui.view">
<field name="name">event.management.report.view.form</field>
<field name="model">event.management.report</field>
<field name="arch" type="xml">
<form string="Wizard">
<group>
<group>
<field name="partner_id"/>
<field name="type_event_ids" widget="many2many_tags"/>
<field name="event_state"/>
</group>
<group>
<field name="date_from"/>
<field name="date_to"/>
</group>
</group>
<footer>
<button name="action_print_pdf_report" type="object"
class="oe_highlight" string="Print PDF"/>
<button name="action_print_xls_report" type="object"
class="oe_highlight" string="Print Excel"/>
<button string="Cancel" class="btn-secondary"
special="cancel" data-hotkey="z"/>
</footer>
</form>
</field>
</record>
<!-- Event management report action-->
<record id="event_management_report_action"
model="ir.actions.act_window">
<field name="name">Event Management Report</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">event.management.report</field>
<field name="view_mode">form</field>
<field name="view_id" ref="event_management_report_view_form"/>
<field name="target">new</field>
</record>
<!-- Event management report menu-->
<menuitem id="event_management_report_menu" name="Reporting"
parent="event_management.event_management_menu_root" sequence="5">
<menuitem id="event_managements_reports_menu"
name="Event Management Report">
<menuitem id="event_management_report_menu_do_stuff"
name="Event Management Report" sequence="1"
action="event_management_report_action"/>
</menuitem>
</menuitem>
</odoo>
Loading…
Cancel
Save