Browse Source

Jul 19 : [ADD] Initial Commit 'odoo_zoom_meet_integration'

pull/280/head
AjmalCybro 2 years ago
parent
commit
893cf121a7
  1. 47
      odoo_zoom_meet_integration/README.rst
  2. 23
      odoo_zoom_meet_integration/__init__.py
  3. 44
      odoo_zoom_meet_integration/__manifest__.py
  4. 22
      odoo_zoom_meet_integration/controller/__init__.py
  5. 75
      odoo_zoom_meet_integration/controller/odoo_zoom_meet_integration.py
  6. 6
      odoo_zoom_meet_integration/doc/RELEASE_NOTES.md
  7. 23
      odoo_zoom_meet_integration/models/__init__.py
  8. 146
      odoo_zoom_meet_integration/models/calendar_event.py
  9. 110
      odoo_zoom_meet_integration/models/res_company.py
  10. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/check.png
  11. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/chevron.png
  12. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/cogs.png
  13. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/consultation.png
  14. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/ecom-black.png
  15. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/education-black.png
  16. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/hotel-black.png
  17. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/license.png
  18. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/lifebuoy.png
  19. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/logo.png
  20. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/manufacturing-black.png
  21. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/pos-black.png
  22. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/puzzle.png
  23. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/restaurant-black.png
  24. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/service-black.png
  25. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/trading-black.png
  26. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/training.png
  27. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/update.png
  28. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/user.png
  29. BIN
      odoo_zoom_meet_integration/static/description/assets/icons/wrench.png
  30. BIN
      odoo_zoom_meet_integration/static/description/assets/modules/budget_image.png
  31. BIN
      odoo_zoom_meet_integration/static/description/assets/modules/credit_image.png
  32. BIN
      odoo_zoom_meet_integration/static/description/assets/modules/employee_image.png
  33. BIN
      odoo_zoom_meet_integration/static/description/assets/modules/export_image.png
  34. BIN
      odoo_zoom_meet_integration/static/description/assets/modules/gantt_image.png
  35. BIN
      odoo_zoom_meet_integration/static/description/assets/modules/quotation_image.png
  36. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/Zoom5.png
  37. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/hero.gif
  38. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/zoom1.png
  39. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/zoom10.png
  40. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/zoom2.png
  41. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/zoom3.png
  42. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/zoom4.png
  43. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/zoom6.png
  44. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/zoom7.png
  45. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/zoom8.png
  46. BIN
      odoo_zoom_meet_integration/static/description/assets/screenshots/zoom9.png
  47. BIN
      odoo_zoom_meet_integration/static/description/banner.jpg
  48. BIN
      odoo_zoom_meet_integration/static/description/icon.png
  49. 761
      odoo_zoom_meet_integration/static/description/index.html
  50. 45
      odoo_zoom_meet_integration/views/calendar_event_views.xml
  51. 46
      odoo_zoom_meet_integration/views/res_company_views.xml

47
odoo_zoom_meet_integration/README.rst

@ -0,0 +1,47 @@
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
Odoo Zoom Meet Integration
===========================
* Integrates Odoo calender module with Zoom.
Installation
============
- www.odoo.com/documentation/15.0/setup/install.html
- Install our custom addon
License
-------
General Public License, Version 3 (LGPL v3).
(https://www.odoo.com/documentation/user/15.0/legal/licenses/licenses.html)
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
Developer: Version 15: Aswani @cybrosys
Contacts
--------
* Mail Contact : odoo@cybrosys.com
* Website : https://cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__

23
odoo_zoom_meet_integration/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import controller
from . import models

44
odoo_zoom_meet_integration/__manifest__.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': "Odoo Zoom Meet Integration",
'version': '15.0.1.0.0',
"category": 'Extra Tools',
'summary': """Integrates odoo calender module with Zoom.""",
'description': """Integrates odoo calender module with Zoom and helps to
create meetings from odoo in zoom.Allows sending meeting invitations and
removes deleted zoom meetings from Odoo""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'depends': ['base', 'contacts', 'calendar'],
'data': [
'views/calendar_event_views.xml',
'views/res_company_views.xml',
],
'images': ['static/description/banner.jpg'],
'license': "LGPL-3",
'installable': True,
'auto_install': False,
'application': False
}

22
odoo_zoom_meet_integration/controller/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import odoo_zoom_meet_integration

75
odoo_zoom_meet_integration/controller/odoo_zoom_meet_integration.py

@ -0,0 +1,75 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
import base64
import datetime
import requests
from odoo import http, _
from odoo.http import request
from odoo.exceptions import UserError
class ZoomMeetAuth(http.Controller):
""" This controller is responsible for the Authentication of
connection from Odoo to Zoom"""
@http.route('/zoom_meet_authentication', type="http", auth="public",
website=True)
def get_auth_code(self, **kw):
"""Authentication for connecting Odoo to Zoom"""
user_id = request.uid
company_id = http.request.env['res.users'].sudo().browse(
user_id).company_id
if kw.get('code'):
company_id.write(
{'zoom_company_authorization_code': kw.get('code')})
client_id = company_id.zoom_client
client_secret = company_id.zoom_client_secret
redirect_uri = company_id.zoom_redirect_uri
data = {
'code': kw.get('code'),
'redirect_uri': redirect_uri,
'grant_type': 'authorization_code'
}
b64 = str(
client_id + ":" + client_secret).encode(
'utf-8')
b64 = base64.b64encode(b64).decode('utf-8')
response = requests.post(
'https://zoom.us/oauth/token', data=data,
headers={
'Authorization': 'Basic ' + b64,
'content-type': 'application/x-www-form-urlencoded'})
if response.json() and response.json().get('access_token'):
company_id.write({
'zoom_company_access_token':
response.json().get('access_token'),
'zoom_company_access_token_expiry':
datetime.datetime.now() + datetime.timedelta(
seconds=response.json().get('expires_in')),
'zoom_company_refresh_token':
response.json().get('refresh_token'),
})
return "Authentication Success. You Can Close this window"
else:
raise UserError(
_('Something went wrong during the token generation.'
'Maybe your Authorization Code is invalid'))

6
odoo_zoom_meet_integration/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <odoo_zoom_meet_integration>
#### 14.07.2023
#### Version 15.0.1.0.0
#### ADD
- Initial commit for Odoo Zoom Meet Integration

23
odoo_zoom_meet_integration/models/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import calendar_event
from . import res_company

146
odoo_zoom_meet_integration/models/calendar_event.py

@ -0,0 +1,146 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
import json
import requests
from odoo import api, fields, models, _
from odoo.exceptions import UserError, ValidationError
class CalendarEvent(models.Model):
"""Inheriting Calendar events to create zoom meetings"""
_inherit = 'calendar.event'
is_zoom_meet = fields.Boolean(string='Zoom Meet',
help='Enable, if zoom meeting.')
zoom_meet_url = fields.Char(string='Zoom Meet URL',
help='To joining Meeting URL')
zoom_meet_code = fields.Char(string='Zoom Meet Code',
help='Joining Meeting Code')
zoom_event = fields.Char(string='Zoom Event ID',
help='Event ID of the zoom meet')
def action_zoom_meet_url(self):
"""Join zoom from Odoo"""
meet_url = self.zoom_meet_url
if meet_url:
url = self.zoom_meet_url
else:
url = 'https://api.zoom.us/v2/'
return {
'type': 'ir.actions.act_url',
'target': 'new',
'url': url,
}
@api.model_create_multi
def create(self, vals):
"""Supering for creating Zoom meetings"""
events = super(CalendarEvent, self).create(vals)
for event in events:
if event.is_zoom_meet:
self._create_zoom_meet(event)
return events
def write(self, vals):
"""Supering for enabling zoom meetings while editing"""
events = super(CalendarEvent, self).write(vals)
for event in self:
if event.is_zoom_meet:
if not event.zoom_event:
self._create_zoom_meet(event)
return events
def _create_zoom_meet(self, cal_event):
"""Creating Zoom meeting from odoo in Zoom"""
url = "https://api.zoom.us/v2/users/me/meetings"
current_uid = self._context.get('uid')
user_id = self.env['res.users'].browse(current_uid)
company_id = user_id.company_id
duration = cal_event.duration * 60
payload = json.dumps({
"start_time": cal_event.start.isoformat(),
"timezone": user_id.tz,
"topic": cal_event.name,
"duration": int(duration),
"settings": {
"email_notification": False,
"registrants_confirmation_email": False,
"registrants_email_notification": False,
"waiting_room": True,
"join_before_host": True,
"mute_participants_upon_entry": True
}
})
headers = {
'Authorization': 'Bearer %s' % company_id.zoom_company_access_token,
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
if response.json().get('code') == 124:
raise UserError(_("Token Expired, please refresh token"))
if response.json().get('start_url'):
cal_event.zoom_event = response.json()['id']
cal_event.zoom_meet_url = response.json()['join_url']
cal_event.zoom_meet_code = response.json()['id']
else:
raise ValidationError("Failed to create Zoom event,"
"Please check your authorization connection.")
@api.onchange("is_zoom_meet")
def _onchange_is_zoom_meet(self):
"""Delete a meeting from zoom """
if not self.is_zoom_meet:
event_id = self.zoom_event
if event_id:
current_uid = self._context.get('uid')
user_id = self.env['res.users'].browse(current_uid)
company_id = user_id.company_id
url = 'https://api.zoom.us/v2/meetings/%s' % event_id
header = {
'Authorization':
'Bearer %s' % company_id.zoom_company_access_token,
'Content-Type': 'application/json'}
response = requests.delete(url, headers=header)
if response.status_code == 401:
raise UserError(_("Token Expired, please refresh token"))
self.zoom_meet_url = ''
self.zoom_meet_code = ''
self.zoom_event = ''
def unlink(self):
"""Delete Zoom meet with unlink method"""
for event in self:
if event.is_zoom_meet and event.zoom_event:
current_uid = self._context.get('uid')
user_id = self.env['res.users'].browse(current_uid)
company_id = user_id.company_id
url = 'https://api.zoom.us/v2/meetings/%s' % event.zoom_event
header = {
'Authorization':
'Bearer %s' % company_id.zoom_company_access_token,
'Content-Type': 'application/json'}
response = requests.delete(url, headers=header)
if response.status_code == 401:
raise UserError(_("Token Expired, please refresh token"))
events = super(CalendarEvent, self).unlink()
return events

110
odoo_zoom_meet_integration/models/res_company.py

@ -0,0 +1,110 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
import base64
import requests
from odoo import fields, models, _
from odoo.exceptions import UserError, ValidationError
TIMEOUT = 20
class ResCompany(models.Model):
"""Inheriting company model for configuring zoom odoo connector"""
_inherit = "res.company"
zoom_client = fields.Char(
string="Client Id", help='Zoom Developer Console Client ID')
zoom_client_secret = fields.Char(
string="Client Secret", help='Zoom Developer Console Client Secret')
zoom_redirect_uri = fields.Char(
string="Authorized redirect URIs", default="http://localhost:8015"
"/zoom_meet_authentication",
help='Zoom Authorized redirect URIs')
zoom_company_access_token = fields.Char(string='Access Token',
copy=False,
help='Access token for '
'respective company')
zoom_company_access_token_expiry = fields.Datetime(
string='Token expiry', help='Access token expiration')
zoom_company_refresh_token = fields.Char(string='Refresh Token',
copy=False,
help='Refresh token for '
'respective company')
zoom_company_authorization_code = fields.Char(string="Authorization Code",
help='Authorization Code '
'for respective company')
def action_zoom_meet_company_authenticate(self):
"""Authentication for zoom"""
if not self.zoom_client:
raise ValidationError("Please Enter Client ID")
client_id = self.zoom_client
if not self.zoom_redirect_uri:
raise ValidationError("Please Enter Client Secret")
redirect_url = self.zoom_redirect_uri
url = (
"https://zoom.us/oauth/authorize?response_type=code"
"&client_id={}&redirect_uri={}"
).format(client_id, redirect_url)
return {
"type": 'ir.actions.act_url',
"url": url,
"target": "current"
}
def action_zoom_meet_company_refresh_token(self):
"""Generate refresh token"""
if not self.zoom_client:
raise UserError(
_('Client ID is not yet configured.'))
client_id = self.zoom_client
if not self.zoom_client_secret:
raise UserError(
_('Client Secret is not yet configured.'))
client_secret = self.zoom_client_secret
if not self.zoom_company_refresh_token:
raise UserError(
_('Refresh Token is not yet configured.'))
refresh_token = self.zoom_company_refresh_token
data = {
'refresh_token': refresh_token,
'grant_type': 'refresh_token',
}
b64 = str(
client_id + ":" + client_secret).encode(
'utf-8')
b64 = base64.b64encode(b64).decode('utf-8')
response = requests.post(
'https://zoom.us/oauth/token', data=data,
headers={
'Authorization': 'Basic ' + b64,
'content-type': 'application/x-www-form-urlencoded'},
timeout=TIMEOUT)
if response.json() and response.json().get('access_token'):
self.write({
'zoom_company_access_token':
response.json().get('access_token'),
})
else:
raise UserError(
_('Something went wrong during the token generation.'
' Please request again an authorization code.'))

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/modules/budget_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/modules/credit_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/modules/employee_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/modules/export_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/modules/gantt_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/modules/quotation_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/Zoom5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/zoom1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/zoom10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/zoom2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/zoom3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/zoom4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/zoom6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/zoom7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/zoom8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
odoo_zoom_meet_integration/static/description/assets/screenshots/zoom9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
odoo_zoom_meet_integration/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
odoo_zoom_meet_integration/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

761
odoo_zoom_meet_integration/static/description/index.html

@ -0,0 +1,761 @@
<div class="container"
style="padding: 1rem !important; margin-bottom: 1rem !important;">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between"
style="border-bottom: 1px solid #d5d5d5;">
<div class="my-3">
<img src="./assets/icons/logo.png"
style="width: auto !important; height: 40px !important;">
</div>
<div class="my-3 d-flex align-items-center">
<div
style="background-color: #7C7BAD !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Community
</div>
<div
style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
</div>
</div>
</div>
</div>
<div class="container" style="padding: 0rem 1.5rem 4rem !important">
<div class="row" style="height: 900px !important;">
<div class="col-sm-12 col-md-12 col-lg-12"
style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;">
<h1 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important; font-size: 3.5rem !important; text-align: center !important;">
Odoo Zoom Meet Integration</h1>
<p style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important; font-size: 1.4rem !important; text-align: center !important;">
This module integrates odoo calendar module with Zoom
</p>
<img src="./assets/screenshots/hero.gif" class="img-responsive"
width="100%" height="auto"/>
</div>
</div>
<div class="row">
<div class="col-md-12"
style="border-bottom: 1px solid #d5d5d5 !important; margin-bottom: 2rem !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-compass mr-2"></i>Explore this module
</h2>
<div class="row">
<div class="col-md-6">
<a href="#overview"
style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Overview</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
Learn more about this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right"
style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#features"
style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Features</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
View features of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right"
style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#configuration"
style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Configuration</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
View Configuration for this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right"
style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#screenshots"
style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Screenshots</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
See key screenshots of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right"
style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="row" id="overview">
<div class="col-md-12"
style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-pie-chart mr-2"></i>Overview
</h2>
</div>
<div class="col-mg-12 pl-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.6rem !important; line-height: 30px !important;">
The Zoom Meeting integration module helps you to create Zoom
Meets from Odoo Calendar.</p>
</div>
</p>
</div>
<div class="row" id="features">
<div class="col-md-12"
style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-star mr-2"></i>Features
</h2>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Zoom Meetings from Odoo Calendar</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Send a Zoom Meeting invitation email to event
attendees</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Join Zoom meeting from Zoom meet tab</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Delete Scheduled meetings in Zoom from Odoo</h4>
</div>
</div>
</div>
<div class="row" id="configuration">
<div class="col-md-12"
style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-pie-chart mr-2"></i>Configuration
</h2>
</div>
<div class="col-lg-12 my-2">
<h2 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.7rem !important;">
Steps to setup in Zoom</h2>
</div>
<div class="col-lg-12 my-2"
style="padding-top:20px; padding-bottom:30px;">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
1. Sign in with your Zoom Account. To create Zoom OAuth App ,
go to Zoom marketplace
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;(https://marketplace.zoom.us/develop/create).
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;create your OAuth app and get your
client id and client secret and set the redirect url.
</p>
<img src="assets/screenshots/zoom1.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
<img src="assets/screenshots/zoom10.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
</div>
</div>
<div class="row" id="screenshots">
<div class="col-md-12"
style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-image mr-2"></i>Screenshots
</h2>
</div>
<div class="col-lg-12 my-2">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Go to Settings-> Companies
Then click on the company name and select the Zoom Meeting tab.
Enter the Client id, Client secret and Redirect Url in
Credentials.
<br/>
After entering all the details click on Authenticate.
</p>
<img src="assets/screenshots/zoom2.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
</div>
<div class="col-lg-12 my-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
After successful authentication, now you can create Zoom
Meetings to your Odoo calendar.
</p>
<img src="assets/screenshots/zoom3.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
</div>
<div class="col-lg-12 my-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
When the Zoom Meet checkbox is enabled, a Zoom meeting link is
generated.
</p>
<img src="assets/screenshots/zoom4.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
</div>
<div class="col-lg-12 my-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
By clicking the Join Meeting button, you can also join a Zoom
Meeting.
</p>
<img src="assets/screenshots/Zoom5.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
</div>
<div class="col-lg-12 my-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
After you've created the meeting, you can view it in Zoom
calendar and scheduled meetings.
</p>
<img src="assets/screenshots/zoom6.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
<img src="assets/screenshots/zoom7.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
</div>
<div class="col-lg-12 my-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Email the meeting information to all event participants
</p>
<img src="assets/screenshots/zoom8.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
</div>
<div class="col-lg-12 my-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Disable the Zoom Meet checkbox or delete the calender event to
delete the meeting.
From Zoom also, the meeting will be removed.
</p>
<img src="assets/screenshots/zoom9.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto"/>
</div>
</div>
<!-- SUGGESTED PRODUCTS -->
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center"
style="text-align: center; padding: 2.5rem 1rem !important;">
<h2 style="color: #212529 !important;">Suggested Products</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/export_stockinfo_xls/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/export_image.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/custom_gantt_view/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/gantt_image.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/sales_credit_limit/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/credit_image.png">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/base_account_budget/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/budget_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/product_to_quotation/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/quotation_image.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/employee_documents_expiry/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/employee_image.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1"
data-slide="prev"
style="left:-25px;width: 35px;color: #000;">
<span class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span> </a>
<a class="carousel-control-next" href="#demo1"
data-slide="next"
style="right:-25px;width: 35px;color: #000;">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF SUGGESTED PRODUCTS -->
<!-- OUR SERVICES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Services</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
</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: #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>
</section>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Industries</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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>
</section>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- FOOTER -->
<!-- Footer Section -->
<section class="container" style="margin: 5rem auto 2rem;">
<div class="row" style="max-width:1540px;">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Need Help?</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center"
style="max-width:1540px; margin: 0 auto 2rem auto;">
<div class="col-lg-12"
style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
<div class="row mt-4">
<div class="col-lg-6">
<a href="mailto:odoo@cybrosys.com" target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
</div>
<div class="col-lg-6">
<a href="https://api.whatsapp.com/send?phone=918606827707"
target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
class="fa fa-whatsapp mr-2"></i>+91 86068 27707</a>
</div>
</div>
</div>
</div>
<!-- End of Contact Cards -->
</section>
<!-- Footer -->
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<div class="row"
style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center"
style="margin-top: 3rem;">
<img src="https://www.cybrosys.com/images/logo.png"
width="200px" height="auto"/>
</div>
<!-- End of Logo -->
<div class="col-lg-12">
<hr
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<!-- End of Footer Section -->
</div>
</div>
</section>
<!-- END OF FOOTER -->
</div>

45
odoo_zoom_meet_integration/views/calendar_event_views.xml

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Inherited calendar form view for scheduling Zoom meeting-->
<record id="view_calendar_event_form" model="ir.ui.view">
<field name="name">
calendar.event.view.form.inherit.odoo.zoom.meet.integration
</field>
<field name="model">calendar.event</field>
<field name="inherit_id" ref="calendar.view_calendar_event_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='categ_ids']" position="after">
<field name="is_zoom_meet" widget="boolean_toggle"/>
</xpath>
<xpath expr="//notebook" position="inside">
<page name="users_zoom_meet_integration"
string="Zoom Meet">
<group>
<group>
<field name="zoom_meet_url"
placeholder="https://us05web.zoom.us....."
widget="CopyClipboardChar" readonly="0"
class="mb-3 pl-3"/>
</group>
<group>
<button name="action_zoom_meet_url"
string="Join Meeting" type="object"
class="btn-primary"
style="margin-left: 200px;margin-top: -5px;"/>
</group>
</group>
<group>
<group>
<field name="zoom_meet_code"
widget="CopyClipboardChar" readonly="0"
class="mb-3 pl-3"/>
</group>
<group>
<field name="zoom_event" invisible="1"/>
</group>
</group>
</page>
</xpath>
</field>
</record>
</odoo>

46
odoo_zoom_meet_integration/views/res_company_views.xml

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Inherited company form view for adding zoom api settings-->
<record id="view_company_form" model="ir.ui.view">
<field name="name">
res.company.view.form.inherit.odoo.zoom.meet.integration
</field>
<field name="model">res.company</field>
<field name="inherit_id" ref="base.view_company_form"/>
<field name="arch" type="xml">
<xpath expr="//notebook/page[1]" position="after">
<page string="Zoom Meet">
<separator name="configuration"
string="Zoom Meet Configuration"/>
<notebook>
<page name="credentials" string="Credentials">
<group>
<field name="zoom_client"/>
<field name="zoom_client_secret"/>
<field name="zoom_redirect_uri"/>
</group>
<group>
<button string="Authenticate" type="object"
name="action_zoom_meet_company_authenticate"
class="oe_highlight"
icon="fa-plug"/>
<button string="Refresh Token" type="object"
name="action_zoom_meet_company_refresh_token"
class="oe_highlight"
icon="fa-refresh"/>
</group>
</page>
<page name="authentication" string="Authentication">
<group>
<field name="zoom_company_access_token"/>
<field name="zoom_company_access_token_expiry"/>
<field name="zoom_company_refresh_token"/>
<field name="zoom_company_authorization_code"/>
</group>
</page>
</notebook>
</page>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save