Browse Source

Sep 23: [RMV] Module Removed 'docusign_odoo_connector'

pull/332/merge
Cybrosys Technologies 10 months ago
parent
commit
6596c0ce89
  1. 39
      docusign_odoo_connector/README.rst
  2. 22
      docusign_odoo_connector/__init__.py
  3. 53
      docusign_odoo_connector/__manifest__.py
  4. 7
      docusign_odoo_connector/doc/RELEASE_NOTES.md
  5. 25
      docusign_odoo_connector/models/__init__.py
  6. 212
      docusign_odoo_connector/models/docusign.py
  7. 57
      docusign_odoo_connector/models/docusign_credentials.py
  8. 69
      docusign_odoo_connector/models/edit_document.py
  9. 122
      docusign_odoo_connector/models/sale_order.py
  10. 4
      docusign_odoo_connector/security/ir.model.access.csv
  11. BIN
      docusign_odoo_connector/static/description/assets/icons/check.png
  12. BIN
      docusign_odoo_connector/static/description/assets/icons/chevron.png
  13. BIN
      docusign_odoo_connector/static/description/assets/icons/cogs.png
  14. BIN
      docusign_odoo_connector/static/description/assets/icons/consultation.png
  15. BIN
      docusign_odoo_connector/static/description/assets/icons/ecom-black.png
  16. BIN
      docusign_odoo_connector/static/description/assets/icons/education-black.png
  17. BIN
      docusign_odoo_connector/static/description/assets/icons/hotel-black.png
  18. BIN
      docusign_odoo_connector/static/description/assets/icons/license.png
  19. BIN
      docusign_odoo_connector/static/description/assets/icons/lifebuoy.png
  20. BIN
      docusign_odoo_connector/static/description/assets/icons/manufacturing-black.png
  21. BIN
      docusign_odoo_connector/static/description/assets/icons/pos-black.png
  22. BIN
      docusign_odoo_connector/static/description/assets/icons/puzzle.png
  23. BIN
      docusign_odoo_connector/static/description/assets/icons/restaurant-black.png
  24. BIN
      docusign_odoo_connector/static/description/assets/icons/service-black.png
  25. BIN
      docusign_odoo_connector/static/description/assets/icons/trading-black.png
  26. BIN
      docusign_odoo_connector/static/description/assets/icons/training.png
  27. BIN
      docusign_odoo_connector/static/description/assets/icons/update.png
  28. BIN
      docusign_odoo_connector/static/description/assets/icons/user.png
  29. BIN
      docusign_odoo_connector/static/description/assets/icons/wrench.png
  30. 754
      docusign_odoo_connector/static/description/assets/index.html
  31. BIN
      docusign_odoo_connector/static/description/assets/misc/categories.png
  32. BIN
      docusign_odoo_connector/static/description/assets/misc/check-box.png
  33. BIN
      docusign_odoo_connector/static/description/assets/misc/compass.png
  34. BIN
      docusign_odoo_connector/static/description/assets/misc/corporate.png
  35. BIN
      docusign_odoo_connector/static/description/assets/misc/customer-support.png
  36. BIN
      docusign_odoo_connector/static/description/assets/misc/cybrosys-logo.png
  37. BIN
      docusign_odoo_connector/static/description/assets/misc/features.png
  38. BIN
      docusign_odoo_connector/static/description/assets/misc/logo.png
  39. BIN
      docusign_odoo_connector/static/description/assets/misc/pictures.png
  40. BIN
      docusign_odoo_connector/static/description/assets/misc/pie-chart.png
  41. BIN
      docusign_odoo_connector/static/description/assets/misc/right-arrow.png
  42. BIN
      docusign_odoo_connector/static/description/assets/misc/star.png
  43. BIN
      docusign_odoo_connector/static/description/assets/misc/support.png
  44. BIN
      docusign_odoo_connector/static/description/assets/misc/whatsapp.png
  45. BIN
      docusign_odoo_connector/static/description/assets/modules/1.png
  46. BIN
      docusign_odoo_connector/static/description/assets/modules/2.png
  47. BIN
      docusign_odoo_connector/static/description/assets/modules/3.png
  48. BIN
      docusign_odoo_connector/static/description/assets/modules/4.png
  49. BIN
      docusign_odoo_connector/static/description/assets/modules/5.png
  50. BIN
      docusign_odoo_connector/static/description/assets/modules/6.png
  51. BIN
      docusign_odoo_connector/static/description/assets/screenshots/1.png
  52. BIN
      docusign_odoo_connector/static/description/assets/screenshots/10.png
  53. BIN
      docusign_odoo_connector/static/description/assets/screenshots/11.png
  54. BIN
      docusign_odoo_connector/static/description/assets/screenshots/12.png
  55. BIN
      docusign_odoo_connector/static/description/assets/screenshots/13.png
  56. BIN
      docusign_odoo_connector/static/description/assets/screenshots/2.png
  57. BIN
      docusign_odoo_connector/static/description/assets/screenshots/3.png
  58. BIN
      docusign_odoo_connector/static/description/assets/screenshots/4.png
  59. BIN
      docusign_odoo_connector/static/description/assets/screenshots/5.png
  60. BIN
      docusign_odoo_connector/static/description/assets/screenshots/6.png
  61. BIN
      docusign_odoo_connector/static/description/assets/screenshots/7.png
  62. BIN
      docusign_odoo_connector/static/description/assets/screenshots/8.png
  63. BIN
      docusign_odoo_connector/static/description/assets/screenshots/9.png
  64. BIN
      docusign_odoo_connector/static/description/assets/screenshots/hero.gif
  65. BIN
      docusign_odoo_connector/static/description/banner.png
  66. BIN
      docusign_odoo_connector/static/description/icon.png
  67. 563
      docusign_odoo_connector/static/description/index.html
  68. 116
      docusign_odoo_connector/static/src/js/edit_document.js
  69. 48
      docusign_odoo_connector/static/src/xml/pdf_viewer_field.xml
  70. 49
      docusign_odoo_connector/views/docusign_credentials_views.xml
  71. 31
      docusign_odoo_connector/views/sale_order_views.xml
  72. 22
      docusign_odoo_connector/wizard/__init__.py
  73. 100
      docusign_odoo_connector/wizard/send_document.py
  74. 36
      docusign_odoo_connector/wizard/send_document_views.xml

39
docusign_odoo_connector/README.rst

@ -1,39 +0,0 @@
.. 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
Docusign Odoo Connector
=======================
Integrating Docusign application with odoo
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
Developer: (v15)Alvin,
(V16) Akhil Ashok,
Contact: odoo@cybrosys.com
Contacts
--------
* Mail Contact : odoo@cybrosys.com
* Website : https://cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
This module is maintained by Cybrosys Technologies.
For support and more information, please visit `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

22
docusign_odoo_connector/__init__.py

@ -1,22 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Akhil @ cybrosys,(odoo@cybrosys.com)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###############################################################################
from . import models, wizard

53
docusign_odoo_connector/__manifest__.py

@ -1,53 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Akhil @ cybrosys,(odoo@cybrosys.com)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###############################################################################
{
'name': 'Docusign Odoo Connector',
'version': '16.0.1.0.0',
'summary': 'Integrating Docusign application with odoo',
'description': """This module allows the odoo users Integration with DocuSign.
We email the sales order to the customer for signature.""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': 'http://www.cybrosys.com',
'depends': ['base', 'sale_management'],
'data': [
'security/ir.model.access.csv',
'views/docusign_credentials_views.xml',
'views/sale_order_views.xml',
'wizard/send_document_views.xml',
],
'assets': {
'web.assets_backend': [
'docusign_odoo_connector/static/src/js/edit_document.js',
'docusign_odoo_connector/static/src/xml/pdf_viewer_field.xml',
],
},
'images': ['static/description/banner.png'],
'external_dependencies': {
'python': ['docusign_esign']
},
'license': 'AGPL-3',
'application': False,
'installable': True,
'auto_install': False
}

7
docusign_odoo_connector/doc/RELEASE_NOTES.md

@ -1,7 +0,0 @@
## Module <docusign_odoo_connector>
#### 04.07.2024
#### Version 16.0.1.0.0
#### ADD
- Initial commit for Docusign Odoo Connector

25
docusign_odoo_connector/models/__init__.py

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Akhil @ cybrosys,(odoo@cybrosys.com)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###############################################################################
from . import docusign
from . import docusign_credentials
from . import edit_document
from . import sale_order

212
docusign_odoo_connector/models/docusign.py

@ -1,212 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Akhil @ cybrosys,(odoo@cybrosys.com)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###############################################################################
import base64
import os
import requests
from docusign_esign import ApiClient, ApiException, EnvelopeDefinition, \
Document, Recipients
from docusign_esign import EnvelopesApi
from datetime import datetime, timedelta
from odoo.exceptions import UserError, ValidationError
root_path = '.'
def action_login_docusign(user_id, account_id, integratorKey, privatekey):
"""
Logs into DocuSign using JWT authentication and retrieves the status code
of a GET request to fetch brands associated with the specified account.
"""
api_client = ApiClient()
api_client.host = 'https://demo.docusign.net/restapi'
SCOPES = ["signature"]
private_key = base64.b64decode(privatekey.datas)
try:
access_token = api_client.request_jwt_user_token(
client_id=integratorKey,
user_id=user_id,
oauth_host_name="account-d.docusign.com",
private_key_bytes=private_key,
expires_in=3600,
scopes=SCOPES
)
api_client.set_default_header(header_name="Authorization",
header_value=f"Bearer {access_token.access_token}")
envelope_api = EnvelopesApi(api_client)
from_date = (datetime.utcnow() - timedelta(days=30)).isoformat()
envelope_api.list_status_changes(
account_id=account_id,
from_date=from_date)
headers = {'Authorization': f"Bearer {access_token.access_token}",
'Accept': 'application/json'}
url = 'https://account-d.docusign.com/restapi/v2.1/accounts/' + account_id + '/brands'
response = requests.get(url=url, headers=headers)
status = response.status_code
return status
except ApiException as err:
raise UserError(err)
def action_send_docusign_file(user_id, account_id, integratorKey, privatekey,
filename,
fileContents, receiver_name, receiver_email,
tabs1):
""" Function to send document"""
signers_list = []
for i in range(0, len(receiver_email)):
a = tabs1[i]['signHereTabs']
for d in a:
d['yPosition'] -= 30
signer = {'email': receiver_email[i], 'name': receiver_name[i],
'recipientId': i + 1, 'tabs': tabs1[i]}
signers_list.append(signer)
api_client = ApiClient()
envelope_api = EnvelopesApi(api_client)
base64_file_content = fileContents.decode('ascii')
# Create the document model
document = Document( # create the DocuSign document object
document_base64=base64_file_content,
name=filename, # can be different from actual file name
file_extension='pdf', # many different document types are accepted
document_id=1 # a label used to reference the doc
)
envelope_definition = EnvelopeDefinition(
email_subject="Please sign this document",
documents=[document],
# The Recipients object wants arrays for each recipient type
recipients=Recipients(signers=signers_list),
status="sent")
api_client.host = 'https://demo.docusign.net/restapi'
SCOPES = ["signature"]
private_key = base64.b64decode(privatekey.datas)
try:
access_token = api_client.request_jwt_user_token(
client_id=integratorKey,
user_id=user_id,
oauth_host_name="account-d.docusign.com",
private_key_bytes=private_key,
expires_in=3600,
scopes=SCOPES
)
api_client.set_default_header(header_name="Authorization",
header_value=f"Bearer {access_token.access_token}")
response = envelope_api.create_envelope(
account_id=account_id,
envelope_definition=envelope_definition)
return response
# append "/envelopes" to the baseUrl and use in the request
except ApiException as err:
raise UserError(err)
def download_documents(integratorKey, envelopeId, privatekey, user_id,
account_id):
"""Function to download signed document"""
doc_status = get_status(integratorKey, envelopeId, privatekey, user_id,
account_id)
complete_path = ''
if doc_status != 'completed':
return doc_status, complete_path
api_client = ApiClient()
envelope_api = EnvelopesApi(api_client)
api_client.host = 'https://demo.docusign.net/restapi'
SCOPES = ["signature"]
private_key = base64.b64decode(privatekey.datas)
try:
access_token = api_client.request_jwt_user_token(
client_id=integratorKey,
user_id=user_id,
oauth_host_name="account-d.docusign.com",
private_key_bytes=private_key,
expires_in=3600,
scopes=SCOPES
)
api_client.set_default_header(header_name="Authorization",
header_value=f"Bearer {access_token.access_token}")
documents = envelope_api.list_documents(
account_id=account_id,
envelope_id=envelopeId)
temp_file = envelope_api.get_document(
account_id=account_id,
document_id=str(1),
envelope_id=envelopeId)
file = temp_file
directory_path = os.path.join(root_path, "files")
if not os.path.isdir(directory_path):
try:
os.mkdir(directory_path)
except ApiException as err:
raise ValidationError("Please provide access rights to module")
attach_file_name = documents.envelope_documents[0].name
file_path = os.path.join("files", attach_file_name)
complete_path = os.path.join(root_path, file_path)
with open(file, "rb") as input:
# Creating "gfg output file.txt" as output
# file in write mode
with open(complete_path, "wb") as text_file:
# Writing each line from input file to
# output file using loop
for line in input:
text_file.write(line)
text_file.close()
return doc_status, complete_path
except ApiException as err:
raise UserError(err)
def get_status(integratorKey, envelopeId, privatekey, user_id, account_id):
"""Get Envelope Recipient Status
append "/envelopes/" + envelopeId + "/recipients" to baseUrl and use in the
request"""
api_client = ApiClient()
envelope_api = EnvelopesApi(api_client)
api_client.host = 'https://demo.docusign.net/restapi'
SCOPES = ["signature"]
private_key = base64.b64decode(privatekey.datas)
try:
access_token = api_client.request_jwt_user_token(
client_id=integratorKey,
user_id=user_id,
oauth_host_name="account-d.docusign.com",
private_key_bytes=private_key,
expires_in=3600,
scopes=SCOPES
)
api_client.set_default_header(header_name="Authorization",
header_value=f"Bearer {access_token.access_token}")
results = envelope_api.get_envelope(
account_id, envelopeId)
return results.status
except ApiException as err:
raise UserError(err)

57
docusign_odoo_connector/models/docusign_credentials.py

@ -1,57 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Akhil @ cybrosys,(odoo@cybrosys.com)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###############################################################################
from . import docusign
from odoo import models, fields
from odoo.exceptions import UserError
class DocusignCredentials(models.Model):
""" To set up the Docusign account credentials for integrating with odoo"""
_name = 'docusign.credentials'
_description = "Docusign Credentials Setup"
name = fields.Char(string="Name", required=True, help="Name of record")
integrator_key = fields.Char(string="Docusign Integrator Key",
required=True, help="Docusign Integrator key")
account_id_data = fields.Char(string='Docusign Account Id', required=True,
help="Docusign user account ID")
user_id_data = fields.Char(string='Docusign User Id', required=True,
help="Docusign user ID")
private_key_ids = fields.Many2many('ir.attachment',
string='Private Key File',
required=True,
help="Private key attachment")
company_id = fields.Many2one('res.company', string="Operator",
default=lambda self: self.env.user.company_id,
help="company ID",
context={'user_preference': True})
def action_test_credentials(self):
""" Function to test whether the credentials are valid or not"""
status = docusign.action_login_docusign(self.user_id_data,
self.account_id_data,
self.integrator_key,
self.private_key_ids)
if status != 200:
raise UserError("Connection Failed!")
else:
raise UserError(" Connection Successful !")

69
docusign_odoo_connector/models/edit_document.py

@ -1,69 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Akhil @ cybrosys,(odoo@cybrosys.com)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###############################################################################
from odoo.fields import Field
class JSON(Field):
""" Encapsulates an :class:`int`. """
type = 'json'
column_type = ('jsonb', 'jsonb')
def convert_to_column(self, value, record, values=None, validate=True):
"""
Convert a value to its column form for database storage or usage.
"""
return str(value) or ""
def convert_to_record(self, value, record):
"""
Convert a value to its record form for storing or using in record
operations.
"""
return value or {}
def convert_to_read(self, value, record, use_name_get=True):
"""
Convert a value to its readable form for displaying or using in read
operations.
"""
# Integer values greater than 2^31-1 are not supported in pure XMLRPC,
# so we have to pass them as floats :-(
return value
def _update(self, records, value):
"""
Update records with a given value.
"""
# special case, when an integer field is used as inverse for a one2many
cache = records.env.cache
for record in records:
cache.set(record, self, value.id or 0)
def convert_to_export(self, value, record):
"""
Convert a value to its exportable form for a specific record.
"""
if value or value == "":
return value
return ''

122
docusign_odoo_connector/models/sale_order.py

@ -1,122 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Akhil @ cybrosys,(odoo@cybrosys.com)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###############################################################################
import base64
import os
import shutil
from ..models import docusign
from odoo import fields, models, _
from odoo.exceptions import UserError
class SaleOrder(models.Model):
""" Inheriting sale order to add button for sending documents"""
_inherit = 'sale.order'
docusign_line_ids = fields.One2many('docusign.lines', 'docusign_id',
readonly=True,
help="Details of sent documents")
credentials_id = fields.Many2one("docusign.credentials",
string="Docusign Credential",
help="Choose Credential")
def action_send_document(self):
""" Function to open the wizard for sending documents """
view_id = self.env.ref(
'docusign_odoo_connector.send_document_view_form').id
return {
'name': _("Send Documents"),
'view_mode': 'form',
'view_id': view_id,
'view_type': 'form',
'res_model': 'send.document',
'type': 'ir.actions.act_window',
'target': 'new',
'context': {
'default_email_id': self.partner_id.id,
'default_res_id': self.id,
}
}
def action_download_document(self):
"""
This method downloads documents associated with the current object's
DocuSign credentials and attaches them as binary data to the
corresponding record.
"""
if self.credentials_id:
credentials = self.credentials_id
for document in self.docusign_line_ids:
envelope_id = document.envelope_id
if envelope_id:
docu_status, complete_path = docusign.download_documents \
(credentials.integrator_key,
envelope_id, credentials.private_key_ids,
credentials.user_id_data,
credentials.account_id_data)
if complete_path != '':
path_split = complete_path.rsplit('/', 1)
attach_file_name = path_split[1]
folder_path = path_split[0]
with open(complete_path, "rb") as open_file:
encoded_string = base64.b64encode(
open_file.read())
values = {'name': attach_file_name,
'type': 'binary',
'res_id': self.id,
'res_model': 'crm.lead',
'datas': encoded_string,
'index_content': 'image',
'store_fname': attach_file_name,
}
attach_id = self.env['ir.attachment'].create(values)
if not document.signed_document:
document.signed_document = attach_id.datas
document.status = docu_status
os.remove(complete_path)
if os.path.exists(folder_path):
shutil.rmtree(folder_path)
self.env.cr.commit()
else:
raise UserError('No agreement documents are sent')
else:
raise UserError('Please select credential')
class DocusignLines(models.Model):
"""
Model for storing DocuSign lines for retrieving send data information.
This model stores information related to DocuSign lines, including the reference
to the associated sale order, the recipient to whom the document is sent, and
the status of the document. """
_name = 'docusign.lines'
_description = 'Docusign lines for retrieving send data information'
docusign_id = fields.Many2one('sale.order', string='Docusign Reference',
index=True,
help="Reference to the associated sale order.")
document = fields.Char(string="Document", help="attached document name")
send_to = fields.Char(string="Send To", help="Mail of receiver")
status = fields.Char(string="Status", help="Status of sent document")
envelope_id = fields.Char(string="Envelope ID", help="Envelope ID")
signed_document = fields.Binary(string="Signed Document", readonly=True,
help="Signed document to download")

4
docusign_odoo_connector/security/ir.model.access.csv

@ -1,4 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_docusign_credentials,access.docusign.credentials,model_docusign_credentials,,1,1,1,1
access_send_document,access.send.document,model_send_document,,1,1,1,1
access_docusign_lines,access.docusign.lines,model_docusign_lines,,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_docusign_credentials access.docusign.credentials model_docusign_credentials 1 1 1 1
3 access_send_document access.send.document model_send_document 1 1 1 1
4 access_docusign_lines access.docusign.lines model_docusign_lines 1 1 1 1

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

754
docusign_odoo_connector/static/description/assets/index.html

@ -1,754 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Odoo App 3 Index</title>
<!-- Bootstrap CSS -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css"
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous">
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap"
rel="stylesheet">
</head>
<body>
<section>
<div class="container"
style="font-family: 'Inter', sans-serif !important;background-color: #fff !important;">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between flex-wrap align-items-sm-center"
style="border-bottom:1px solid rgba(0, 0, 0, 0.22)">
<div class="my-3">
<img src="assets/misc/Cybrosys R.png"
style="width:auto !important; height:40px !important">
</div>
<div class="my-3 d-flex align-items-center">
<div class="text-center"
style="background-color:#017E84 !important;font-size: 0.8rem !important; color:#fff !important; font-weight:500 !important; padding:4px !important; margin:0 3px !important; border-radius:50px !important; min-width: 120px !important;">
Community
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 text-center d-flex align-items-center flex-column"
style="margin: 80px 0px !important;">
<h1 style="font-size: 2.8rem;font-weight: 700; color:
#1A202C;">
Docusign Odoo Connector</h1>
<p class="my-3 mb-4"
style="max-width: 80%; font-weight: 400 !important; line-height: 32px; color: #718096;">
This module allows the odoo users Integration with DocuSign.
We email the sales order to the customer for signature.
Once they sign it, we retrieve the signed document.
</p>
<div style="width: 80%; margin-top: 3rem;">
<img src="assets/screenshots/hero.gif"
class="img-responsive" width="100%" height="auto">
</div>
</div>
</div>
<div class="container mt-5 mb-5">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mt-4">
<p class="m-0" style="font-weight: 600; font-size: 24px; color:#714b67 !important">
Key Highlights
</p>
</div>
<div class="row py-4">
<div class="col-md-6 col-sm-12 p-3">
<div class="d-flex h-100" style="padding: 30px;border-radius: 12px;
background: #FFF;
box-shadow: 1px 2px 3px 0px rgba(0, 0, 0, 0.25); ">
<div style="width: 36px; height: 36px; border-radius: 50%; background: #714B67;
display: flex; justify-content: center; align-items: center;
margin-right: 10px; flex-shrink: 0;">
<i class="fa-solid fa-star " style="color: #fff;font-size:14px;"></i>
</div>
<div>
<p style="color: #1A202C;font-weight: 600;
font-size: 1.2rem; margin-bottom: 2px;">Integration with DocuSign.</p>
</div>
</div>
</div>
</div>
<div class="row py-4">
<div class="col-md-6 col-sm-12 p-3">
<div class="d-flex h-100" style="padding: 30px;border-radius: 12px;
background: #FFF;
box-shadow: 1px 2px 3px 0px rgba(0, 0, 0, 0.25); ">
<div style="width: 36px; height: 36px; border-radius: 50%; background: #714B67;
display: flex; justify-content: center; align-items: center;
margin-right: 10px; flex-shrink: 0;">
<i class="fa-solid fa-star " style="color: #fff;font-size:14px;"></i>
</div>
<div>
<p style="color: #1A202C;font-weight: 600;
font-size: 1.2rem; margin-bottom: 2px;">Send document(Sale order) to the customer.</p>
</div>
</div>
</div>
</div>
<div class="row py-4">
<div class="col-md-6 col-sm-12 p-3">
<div class="d-flex h-100" style="padding: 30px;border-radius: 12px;
background: #FFF;
box-shadow: 1px 2px 3px 0px rgba(0, 0, 0, 0.25); ">
<div style="width: 36px; height: 36px; border-radius: 50%; background: #714B67;
display: flex; justify-content: center; align-items: center;
margin-right: 10px; flex-shrink: 0;">
<i class="fa-solid fa-star " style="color: #fff;font-size:14px;"></i>
</div>
<div>
<p style="color: #1A202C;font-weight: 600;
font-size: 1.2rem; margin-bottom: 2px;">Retrieve the signed document.</p>
</div>
</div>
</div>
</div>
<div class="row py-4">
<div class="col-md-6 col-sm-12 p-3">
<div class="d-flex h-100" style="padding: 30px;border-radius: 12px;
background: #FFF;
box-shadow: 1px 2px 3px 0px rgba(0, 0, 0, 0.25); ">
<div style="width: 36px; height: 36px; border-radius: 50%; background: #714B67;
display: flex; justify-content: center; align-items: center;
margin-right: 10px; flex-shrink: 0;">
<i class="fa-solid fa-star " style="color: #fff;font-size:14px;"></i>
</div>
<div>
<p style="color: #1A202C;font-weight: 600;
font-size: 1.2rem; margin-bottom: 2px;">Pdf edit option.</p>
</div>
</div>
</div>
</div>
</div>
<div class="container rounded">
<ul class="nav nav-tabs d-flex"
style="width: fit-content;margin: 0 auto;gap: 1rem;">
<li class="col text-center py-2 text-nowrap "
style="color: #fff; background-color: #714B67;border-radius: 6px 6px 0px 0px;">
<a
class="active show" data-toggle="tab" href="#tab1"
style="color: #fff;font-weight: 500; background-color: #714B67; text-decoration: none;">
<i class="fa-regular fa-image pr-2"
style="color: #fff;"></i>
Screenshots</a></li>
<li class="col text-center py-2 text-nowrap "
style="color: #fff; background-color: #714B67;border-radius: 6px 6px 0px 0px;">
<a
data-toggle="tab" href="#tab2"
style="color: #fff;font-weight: 500; text-decoration: none;"><i
class="fa-solid fa-star pr-2"
style="color: #fff;"></i>Features</a></li>
<li class="col text-center py-2 text-nowrap "
style="color: #fff; background-color: #714B67;border-radius: 6px 6px 0px 0px;">
<a
data-toggle="tab" href="#tab3"
style="color: #fff;font-weight: 500; text-decoration: none; background-color: #714B67;"><i
class="fa-solid fa-book-open pr-2"
style="color: #fff;"></i>Released Notes</a></li>
</ul>
<div class="tab-content"
style="background-color: rgba(121, 113, 119, 0.04);">
<div id="tab1" class="tab-pane fade in active show">
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/1.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
Add new Apps and Integration Keys</h4>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/2.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
Generate new RSA Key and save.</h4>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/3.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
Fill-up App Credentials</h4>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/4.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
Click on the send document button.</h4>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/5.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
Choose Document</h4>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/6.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
Add fields to the PDF by double click.</h4>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/7.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
Partner will get a mail notification for Sign Document. Click on
"Review document" button..</h4>
</div>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/8.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
Sign the document.</h4>
</div>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/11.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
Click on update status.We can see the current status of the document.</h4>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/12.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
We can download the signed the document.</h4>
</div>
</div>
</div>
<div class="col-lg-12 py-2" style="padding: 1rem 4rem !important;">
<div
style="border: 1px solid #d8d6d6; border-radius: 4px; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="row justify-content-center p-3 w-100 m-0">
<img src="assets/screenshots/13.png" class="img-responsive" width="100%" height="auto">
</div>
<div class="px-3">
<h4 class="mt-2"
style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important">
signed document.</h4>
</div>
</div>
</div>
</div>
<div id="tab2" class="tab-pane fade">
<div class="col-mg-12" style="padding: 1rem 4rem;">
<ul style="list-style: none; padding: 1rem 0;font-weight: 500;">
<li class="py-3"
style="font-weight: 500;background-color: #fff; border-radius: 4px; padding: 1rem; margin-bottom: 1rem; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<span style="margin-right: 12px;"><img src="assets/misc/star (1) 2.svg" alt=""
width="16px"></span>Docusign Odoo integration.
</li>
</ul>
</div>
<div class="col-mg-12" style="padding: 1rem 4rem;">
<ul style="list-style: none; padding: 1rem 0;font-weight: 500;">
<li class="py-3"
style="font-weight: 500;background-color: #fff; border-radius: 4px; padding: 1rem; margin-bottom: 1rem; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<span style="margin-right: 12px;"><img src="assets/misc/star (1) 2.svg" alt=""
width="16px"></span>Pdf edit option.
</li>
</ul>
</div>
</div>
<div id="tab3" class="tab-pane fade">
<div class="col-mg-12 active" style="padding: 1rem 4rem;">
<div class="py-3"
style="font-weight: 500;background-color: #fff; border-radius: 4px; padding: 1rem; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);">
<div class="d-flex mb-3"
style="font-size: 0.8rem; font-weight: 500;"><span>Version
17.0.1.0.0</span><span
class="px-2">|</span><span
style="color: #714B67;font-weight: 600;">Released on:2nd July 2024</span>
</div>
<p class="m-0"
style=" color:#718096!important; font-size:1rem !important;line-height: 28px;">
Initial commit for Docusign Odoo Connector.</p>
</div>
</div>
</div>
</div>
<div class="container mt-5">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mt-5">
<p class="m-0"
style="font-weight: 600; font-size: 24px; color:#000 !important">
Related Products</p>
</div>
</div>
<div id="myCarousel" class="carousel slide py-3" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="row p-4">
<div class="col">
<div class="p-3">
<a href="https://apps.odoo.com/apps/modules/17.0/base_accounting_kit/" style="color: #000; text-decoration: none;">
<div style="border:1px solid #CBCBCB !important;border-radius: 4px;">
<div style="width: 300px; ">
<img src="assets/modules/1.gif" alt="" width="100%" height="auto">
</div>
<p class="text-center pt-2 text-black font-weight-bold">Odoo 17 Full Accounting Kit</p>
</div>
</a>
</div>
</div>
<div class="col">
<div class="p-3">
<a href="https://apps.odoo.com/apps/modules/17.0/invoice_format_editor/" style="color: #000; text-decoration: none;">
<div style="border:1px solid #CBCBCB !important;border-radius: 4px;">
<div style="width: 300px; ">
<img src="assets/modules/2.png" alt="" width="100%" height="auto">
</div>
<p class="text-center pt-2 text-black font-weight-bold">Invoice Format Editor</p>
</div>
</a>
</div>
</div>
<div class="col">
<div class="p-3">
<a href="https://apps.odoo.com/apps/modules/17.0/inventory_barcode_scanning/" style="color: #000; text-decoration: none;">
<div style="border:1px solid #CBCBCB !important;border-radius: 4px;">
<div style="width: 300px; ">
<img src="assets/modules/3.png" alt="" width="100%" height="auto">
</div>
<p class="text-center pt-2 text-black font-weight-bold">Barcode scanning in Inventory</p>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row p-4">
<div class="col">
<div class="p-3">
<a href="https://apps.odoo.com/apps/modules/17.0/whatsapp_redirect/" style="color: #000; text-decoration: none;">
<div style="border:1px solid #CBCBCB !important;border-radius: 4px;">
<div style="width: 300px; ">
<img src="assets/modules/4.jpg" alt="" width="100%" height="auto">
</div>
<p class="text-center pt-2 text-black font-weight-bold">Send Whatsapp Message</p>
</div>
</a>
</div>
</div>
<div class="col">
<div class="p-3">
<a href="https://apps.odoo.com/apps/modules/17.0/base_account_budget/" style="color: #000; text-decoration: none;">
<div style="border:1px solid #CBCBCB !important;border-radius: 4px;">
<div style="width: 300px;">
<img src="assets/modules/5.jpg" alt="" width="100%" height="auto">
</div>
<p class="text-center pt-2 text-black font-weight-bold">Budget Management</p>
</div>
</a>
</div>
</div>
<div class="col">
<div class="p-3">
<a href="https://apps.odoo.com/apps/modules/17.0/product_barcode/" style="color: #000; text-decoration: none;">
<div style="border:1px solid #CBCBCB !important;border-radius: 4px;">
<div style="width: 300px;">
<img src="assets/modules/6.png" alt="" width="100%" height="auto">
</div>
<p class="text-center pt-2 text-black font-weight-bold">Product Barcode Generator</p>
</div>
</a>
</div>
</div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#myCarousel" 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="#myCarousel" 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 class="container mt-5">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mt-4">
<p class="m-0"
style="font-weight: 600; font-size: 24px; color:#000 !important">
Our Services</p>
</div>
</div>
<div class="container my-5">
<div class="row py-3">
<div class="col-md-4 col-sm-6 px-4 py-4">
<div
style="background-color: #fff; padding: 25px; text-align: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px; position: relative;border-radius: 4px;">
<div style="position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%);">
<div style="background-color:#13EA36 ; border-radius: 50%; padding: 15px; width: 68px;
height: 68px; display: inline-block; box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);">
<img src="assets/icons/cogs.png"
alt="service-icon" width="38px"
height="auto">
</div>
</div>
<p style="margin-top: 20px; font-weight: bold;">Odoo
Customization</p>
</div>
</div>
<div class="col-md-4 col-sm-6 px-4 py-4">
<div
style="background-color: #fff; padding: 25px; text-align: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px; position: relative;border-radius: 4px;">
<div style="position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%);">
<div style="background-color:#DBC711; border-radius: 50%; padding: 15px; width: 68px;
height: 68px; display: inline-block; box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);">
<img src="assets/icons/wrench.png"
alt="service-icon" width="38px"
height="auto">
</div>
</div>
<p style="margin-top: 20px; font-weight: bold;">Odoo
Implementation</p>
</div>
</div>
<div class="col-md-4 col-sm-6 px-4 py-4">
<div
style="background-color: #fff; padding: 25px; text-align: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px; position: relative; border-radius: 4px;">
<div style="position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%);">
<div style="background-color:#FF6B6B ; border-radius: 50%; padding: 15px; width: 68px;
height: 68px; display: inline-block; box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);">
<img src="assets/icons/lifebuoy.png"
alt="service-icon" width="38px"
height="auto">
</div>
</div>
<p style="margin-top: 20px; font-weight: bold;">Odoo
Support</p>
</div>
</div>
<div class="col-md-4 col-sm-6 px-4 py-4">
<div
style="background-color: #fff; padding: 25px; text-align: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px; position: relative; border-radius: 4px;">
<div style="position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%);">
<div style="background-color:#FFA801 ; border-radius: 50%; padding: 15px; width: 68px;
height: 68px; display: inline-block; box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);">
<img src="assets/icons/user.png"
alt="service-icon" width="38px"
height="auto">
</div>
</div>
<p style="margin-top: 20px; font-weight: bold;">Hire
Odoo Developer</p>
</div>
</div>
<div class="col-md-4 col-sm-6 px-4 py-4">
<div
style="background-color: #fff; padding: 25px; text-align: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px; position: relative; border-radius: 4px;">
<div style="position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%);">
<div style="background-color:#54A0FF; border-radius: 50%; padding: 15px; width: 68px;
height: 68px; display: inline-block; box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);">
<img src="assets/icons/puzzle.png"
alt="service-icon" width="38px"
height="auto">
</div>
</div>
<p style="margin-top: 20px; font-weight: bold;">Odoo
Integration</p>
</div>
</div>
<div class="col-md-4 col-sm-6 px-4 py-4">
<div
style="background-color: #fff; padding: 25px; text-align: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px; position: relative;border-radius: 4px;">
<div style="position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%);">
<div style="background-color:#6D7680 ; border-radius: 50%; padding: 15px; width: 68px;
height: 68px; display: inline-block; box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);">
<img src="assets/icons/update.png"
alt="service-icon" width="38px"
height="auto">
</div>
</div>
<p style="margin-top: 20px; font-weight: bold;">Odoo
Migration</p>
</div>
</div>
<div class="col-md-4 col-sm-6 px-4 py-4">
<div
style="background-color: #fff; padding: 25px; text-align: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px; position: relative;border-radius: 4px;">
<div style="position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%);">
<div style="background-color:#786FA6 ; border-radius: 50%; padding: 15px; width: 68px;
height: 68px; display: inline-block; box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);">
<img src="assets/icons/consultation.png"
alt="service-icon" width="38px"
height="auto">
</div>
</div>
<p style="margin-top: 20px; font-weight: bold;">Odoo
Consultancy</p>
</div>
</div>
<div class="col-md-4 col-sm-6 px-4 py-4">
<div
style="background-color: #fff; padding: 25px; text-align: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px;position: relative;border-radius: 4px;">
<div style="position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%);">
<div style="background-color:#F8A5C2 ; border-radius: 50%; padding: 15px; width: 68px;
height: 68px; display: inline-block; box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);">
<img src="assets/icons/training.png"
alt="service-icon" width="38px"
height="auto">
</div>
</div>
<p style="margin-top: 20px; font-weight: bold;">Odoo
Implementation</p>
</div>
</div>
<div class="col-md-4 col-sm-6 px-4 py-4">
<div
style="background-color: #fff; padding: 25px; text-align: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.06) 0px 1px 2px 0px; position: relative;border-radius: 4px;">
<div style="position: absolute; top: 0%; left: 50%; transform: translate(-50%, -50%);">
<div style="background-color:#E6BE26; border-radius: 50%; padding: 15px; width: 68px;
height: 68px; display: inline-block; box-shadow:0px 4px 4px rgba(0, 0, 0, 0.25);">
<img src="assets/icons/license.png"
alt="service-icon" width="38px"
height="auto">
</div>
</div>
<p style="margin-top: 20px; font-weight: bold;">Odoo
Licensing Consultancy</p>
</div>
</div>
</div>
</div>
<div class="container mt-5">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mt-4">
<p class="m-0"
style="font-weight: 600; font-size: 24px; color:#000 !important">
Our Industries</p>
</div>
</div>
<div class="container">
<div class="row my-5 py-4">
<div class="col-md-3 col-sm-6 p-0">
<div class="d-flex flex-column h-100 "
style="border-right: 1px solid rgb(209, 209, 209); border-bottom: 1px solid rgb(209, 209, 209); padding: 30px; box-shadow: 6px 0 10px rgba(228, 227, 227, 0.373);">
<img src="assets/icons/trading-black.png" width="42px"
height="auto" alt="">
<p style="color: #714B67;font-weight: 600; margin-top: 10px;
font-size: 1.2rem; margin-bottom: 2px;">Trading</p>
<p>Easily procure and sell your products</p>
</div>
</div>
<div class="col-md-3 col-sm-6 p-0">
<div class="d-flex flex-column h-100"
style="border-right: 1px solid rgb(209, 209, 209);border-bottom: 1px solid rgb(209, 209, 209); padding: 30px;">
<img src="assets/icons/pos-black.png" width="42px"
height="auto" alt="">
<p style="color: #714B67;font-weight: 600; margin-top: 10px;
font-size: 1.2rem; margin-bottom: 2px;">POS</p>
<p>Easy configuration and convivial experience</p>
</div>
</div>
<div class="col-md-3 col-sm-6 p-0">
<div class="d-flex flex-column h-100"
style="border-right: 1px solid rgb(209, 209, 209);border-bottom: 1px solid rgba(0, 0, 0, 0.2); padding: 30px; box-shadow: 0 5px 10px rgba(228, 227, 227, 0.373)">
<img src="assets/icons/education-black.png" width="42px"
height="auto" alt="">
<p style="color: #714B67;font-weight: 600; margin-top: 10px;
font-size: 1.2rem; margin-bottom: 2px;">
Education</p>
<p>A platform for educational management</p>
</div>
</div>
<div class="col-md-3 col-sm-6 p-0">
<div class="d-flex flex-column h-100"
style="border-bottom: 1px solid rgb(209, 209, 209); padding: 30px; ">
<img src="assets/icons/manufacturing-black.png"
width="42px" height="auto" alt="">
<p style="color: #714B67;font-weight: 600; margin-top: 10px;
font-size: 1.2rem; margin-bottom: 2px;">
Manufacturing</p>
<p>Plan, track and schedule your operations</p>
</div>
</div>
<div class="col-md-3 col-sm-6 p-0">
<div class="d-flex flex-column h-100"
style="border-right: 1px solid rgb(209, 209, 209); padding: 30px;">
<img src="assets/icons/ecom-black.png" width="42px"
height="auto" alt="">
<p style="color: #714B67;font-weight: 600; margin-top: 10px;
font-size: 1.2rem; margin-bottom: 2px;">E-commerce &
Website</p>
<p>Mobile friendly, awe-inspiring product pages</p>
</div>
</div>
<div class="col-md-3 col-sm-6 p-0">
<div class="d-flex flex-column h-100"
style="border-right: 1px solid rgb(209, 209, 209); padding: 30px;box-shadow: 0 -5px 10px rgba(228, 227, 227, 0.373);">
<img src="assets/icons/service-black.png" width="42px"
height="auto" alt="">
<p style="color: #714B67;font-weight: 600; margin-top: 10px;
font-size: 1.2rem; margin-bottom: 2px;">Service
Management</p>
<p>Keep track of services and invoice</p>
</div>
</div>
<div class="col-md-3 col-sm-6 p-0">
<div class="d-flex flex-column h-100"
style="border-right: 1px solid rgb(209, 209, 209); padding: 30px; ">
<img src="assets/icons/restaurant-black.png"
width="42px" height="auto" alt="">
<p style="color: #714B67;font-weight: 600; margin-top: 10px;
font-size: 1.2rem; margin-bottom: 2px;">
Restaurant</p>
<p>Run your bar or restaurant methodically</p>
</div>
</div>
<div class="col-md-3 col-sm-6 p-0">
<div class="d-flex flex-column h-100"
style=" padding: 30px;box-shadow: -5px 0 10px rgba(228, 227, 227, 0.373);">
<img src="assets/icons/hotel-black.png" width="42px"
height="auto" alt="">
<p style="color: #714B67;font-weight: 600; margin-top: 10px;
font-size: 1.2rem; margin-bottom: 2px;">Hotel
Management</p>
<p>An all-inclusive hotel management application</p>
</div>
</div>
</div>
</div>
<div class="container mt-5">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mt-5">
<p class="m-0"
style="font-weight: 600; font-size: 24px; color:#000 !important">
Support</p>
</div>
</div>
<div class="container my-5">
<div class="row" style="background-color: #FFFAFE;">
<div class="col-md-6 pb-4 d-flex align-items-center justify-content-center"
style="border-right: 1px solid #D9D9D9;">
<div style="padding: 30px;">
<div class="d-flex align-items-center">
<img src="assets/misc/support (1) 1.svg" alt=""
width="60px" style="margin-right: 12px;">
<div style="padding: 0px 8px;">
<span
style="color: #714B67;font-size: 24px;font-weight: 600;padding-bottom: 1rem;">Need
Help?</span>
<p class="m-0" style="color:#718096;">Got
questions or need help? Get in touch.</p>
<div style="font-weight: 400;"><span><img
src="assets/misc/support-email.svg"
alt=""
width="18px"
style="filter: invert(1);margin-right: 0.8rem;"></span>odoo@cybrosys.com
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 pb-4 d-flex align-items-center justify-content-center">
<div style="padding: 30px;">
<div class="d-flex align-items-center">
<img src="assets/misc/whatsapp 1.svg" alt=""
width="60px" style="margin-right: 12px;">
<div>
<span style="color: #714B67;font-size: 24px;font-weight: 600;">WhatsApp</span>
<p class="m-0" style="color:#718096;">Say hi to
us on WhatsApp!</p>
<div style="font-weight: 400; font-size: 16px;"><span><img
src="assets/misc/phone.svg"
alt="" width="14px"
style="filter: invert(1); margin-right: 0.8rem;"></span>+91
99456767686
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 589 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 967 B

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

BIN
docusign_odoo_connector/static/description/assets/screenshots/10.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

BIN
docusign_odoo_connector/static/description/assets/screenshots/11.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

BIN
docusign_odoo_connector/static/description/assets/screenshots/12.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

BIN
docusign_odoo_connector/static/description/assets/screenshots/13.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

BIN
docusign_odoo_connector/static/description/assets/screenshots/4.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

BIN
docusign_odoo_connector/static/description/assets/screenshots/6.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 KiB

BIN
docusign_odoo_connector/static/description/banner.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

BIN
docusign_odoo_connector/static/description/icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

563
docusign_odoo_connector/static/description/index.html

@ -1,563 +0,0 @@
<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>
</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;">
Docusign Odoo Connector
</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">This module allows the odoo users Integration with DocuSign.
We email the sales order to the customer for signature.
Once they sign it, we retrieve the signed document.</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;" />
</div>
</div>
</div>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Explore This
Module</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
features of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
screenshots for this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Overview
</h2>
</div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
This module allows the odoo users Integration with DocuSign.
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features
</h2>
</div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Integration with DocuSign.</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Send document(Sale order) to the customer.</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Retrieve the signed document.</span>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Add new Apps and Integration Keys.
</h3>
<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;">Generate new RSA Key and save.
</h3>
<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;"> Fill-up App Credentials
</h3>
<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;">Click on the send document button.
</h3>
<img src="assets/screenshots/4.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;">Choose Document
</h3>
<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;">Add fields to the PDF by double click.
</h3>
<img src="assets/screenshots/6.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;">Partner will get a mail notification for Sign Document. Click on
"Review document" button.
</h3>
<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;">Sign the document.
</h3>
<img src="assets/screenshots/9.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Click on update status.We can see the current status of the document.
</h3>
<img src="assets/screenshots/12.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;"> We can download the signed the document.
</h3>
<img src="assets/screenshots/13.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/16.0/base_account_budget/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/1.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/project_report_pdf/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/2.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/hr_payroll_community/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/3.png">
</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/16.0/barcode_scanning_sale_purchase/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/4.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/invoice_stock_move/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/5.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/account_partner_ledger_filter/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/6.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="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 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 END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48" style="width: 42px; height: 42px;" />
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help? Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52" style="width: 52px; height: 52px;" />
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31" style="width:144px; height: 31px; margin-top: 40px;" />
</div>
</div>
</div>
<!-- END OF SUPPORT -->

116
docusign_odoo_connector/static/src/js/edit_document.js

@ -1,116 +0,0 @@
/** @odoo-module **/
import { useService } from "@web/core/utils/hooks";
import { registry } from "@web/core/registry";
import { PdfViewerField } from '@web/views/fields/pdf_viewer/pdf_viewer_field';
import { useRef } from "@odoo/owl";
export class EditPdfViewerField extends PdfViewerField {
setup() {
super.setup();
this.iframePdf = useRef("iframePdf")
this.tabs1=[]
this.count = 0;
this.orm = useService("orm");
}
onLoadSuccess(){
var email_count = []
var add_email_count = []
var self = this
if(this.props.record.data.email_id){
email_count.push(this.props.record.data.email_id[1])}
var $iFrame = $(this.iframePdf.el.contentWindow.document)
$(this.iframePdf.el.contentWindow.document).find('*').css('user-select', 'none')
$(this.iframePdf.el.contentWindow.document).find('#viewer').on('dblclick', function(e){
this.count ++;
var pageno;
var rect_doc;
if($(e.target.parentNode).attr('class') == 'textLayer'){
pageno = $(e.target.parentNode.parentNode).data('pageNumber');
rect_doc = e.target.parentNode.getBoundingClientRect();
}
else{
pageno = $(e.target.parentNode).data('pageNumber');
rect_doc = e.target.getBoundingClientRect();
}
var values = ["<Select Fields>", "FullName", "Email", "Company", "Signature", "Text"];
var select = document.createElement("select");
select.name = "fields";
var data = {}
var rect;
var rect = e.currentTarget.getBoundingClientRect();
var recipients_list = []
for(var j=0; j<email_count.length;j++){
recipients_list.push(email_count[j])}
for (let i = 0; i < email_count.length; i++){
self.tabs1.push({fullNameTabs:[],signHereTabs:[],emailTabs:[],companyTabs:[],textTabs:[],dateSignedTabs:[]})
for (const val of values)
{
var option = document.createElement("option");
option.value = val + ' by ' + recipients_list[i];
option.text = val + ' by ' + recipients_list[i];
option.id = i+1;
select.appendChild(option);
}
}
var option_date = document.createElement("option");
option_date.value = 'Date';
option_date.text = 'Date';
select.appendChild(option_date);
select.setAttribute("style", "width:130px; position:absolute; z-index: 999");
var z = e.clientX - rect.x;
var y = e.clientY - rect.y;
var z_doc = e.clientX - rect_doc.x;
var y_doc = e.clientY - rect_doc.y;
select.style.left = z + 'px';
select.style.top = y + 'px';
$(select).on('change', function(event){
var x_extra = (z_doc * 1.34) - z_doc;
var y_extra = (y_doc * 1.34) - y_doc;
var doc_x = z_doc - x_extra;
var doc_y = y_doc - y_extra;
var data = {"xPosition":parseInt(doc_x),"yPosition":parseInt(doc_y),"tabLabel":parseInt(doc_x+doc_y),"documentId":"1","pageNumber":pageno}
for(var li of self.tabs1){
for(var dict in li){
var arr = li[dict];
for(var value in arr){
if(JSON.stringify(arr[value]) == JSON.stringify(data)){
li[dict].splice(value, 1);
}
}
}
}
var whole_string = select.value;
var split_string = whole_string.split(' by ')
for (let i = 0; i <email_count.length; i++){
if(select.value == 'Date'){
self.tabs1[i].dateSignedTabs.push(data);
}
if (recipients_list[i] == split_string[1]){
if(select.value == 'FullName' + ' by ' + recipients_list[i]){
self.tabs1[i].fullNameTabs.push(data);
}
else if(select.value == 'Signature' + ' by ' + recipients_list[i]){
self.tabs1[i].signHereTabs.push(data);
}
else if(select.value == 'Email' + ' by ' + recipients_list[i]){
self.tabs1[i].emailTabs.push(data);
}
else if(select.value == 'Company' + ' by ' + recipients_list[i]){
self.tabs1[i].companyTabs.push(data);
}
else if(select.value == 'Text' + ' by ' + recipients_list[i]){
self.tabs1[i].textTabs.push(data);
}
}
}
var id = self.props.record.data.id
self.orm.call("send.document", "get_json_data", ["",self.tabs1,id], {
})
});
$iFrame.contents().find("#viewer").append(select);
})
}
}
registry.category("fields").add('edit_pdf_viewer', EditPdfViewerField);

48
docusign_odoo_connector/static/src/xml/pdf_viewer_field.xml

@ -1,48 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="web.PdfViewerField" owl="1">
<t t-if="!props.readonly">
<div class="o_form_pdf_controls">
<t t-if="props.value">
<FileUploader
acceptedFileExtensions="'.pdf'"
file="{ data: props.value, name: fileName }"
onUploaded.bind="onFileUploaded">
<t t-set-slot="toggler">
<button
class="btn btn-secondary fa fa-pencil o_select_file_button"
data-tooltip="Edit"
aria-label="Edit"/>
</t>
<button
class="btn btn-secondary fa fa-trash o_clear_file_button"
data-tooltip="Clear"
aria-label="Clear"
t-on-click="onFileRemove"/>
</FileUploader>
</t>
<t t-else="">
<label class="o_select_file_button btn btn-primary">
<FileUploader
acceptedFileExtensions="'.pdf'"
onUploaded.bind="onFileUploaded">
<t t-set-slot="toggler">
Upload your file
</t>
</FileUploader>
</label>
</t>
</div>
</t>
<t t-if="props.value">
<iframe class="o_pdfview_iframe"
style="width: 100%; height:500px"
alt="PDF file"
t-att-src="url"
t-att-name="props.name"
t-on-error="onLoadFailed"
t-ref="iframePdf"
t-on-load="onLoadSuccess"/>
</t>
</t>
</templates>

49
docusign_odoo_connector/views/docusign_credentials_views.xml

@ -1,49 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!--form view of docusign.credentials model-->
<record id="docusign_setup_view_form" model="ir.ui.view">
<field name="name">docusign.setup.view.form</field>
<field name="model">docusign.credentials</field>
<field name="arch" type="xml">
<form string="DocuSign Credentials Form">
<sheet>
<group>
<field name="name"/>
<field name="integrator_key"/>
<field name="user_id_data"/>
<field name="account_id_data"/>
<field name="private_key_ids" widget="many2many_binary"/>
<field name="company_id" invisible="1"/>
<button name="action_test_credentials" type="object" string="Test Credentials" class="oe_highlight"/>
</group>
</sheet>
</form>
</field>
</record>
<!--tree view of docusign.credentials model-->
<record id="docusign_setup_view_tree" model="ir.ui.view">
<field name="name">docusign.setup.view.tree</field>
<field name="model">docusign.credentials</field>
<field name="arch" type="xml">
<tree string="DocuSign Credentials">
<field name="name"/>
<field name="integrator_key"/>
<field name="company_id" invisible="1"/>
</tree>
</field>
</record>
<!--action for viewing docusign.credentials form and tree-->
<record id="action_docusign_credentials" model="ir.actions.act_window">
<field name="name">DocuSign Credentials</field>
<field name="res_model">docusign.credentials</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">tree,form</field>
</record>
<!--menu items in docusign.credentials model-->
<menuitem id="main_docusign_menu_root" name="DocuSign" sequence="10"/>
<menuitem name="Docusign Setup" id="docusign_setup_menu" parent="main_docusign_menu_root"
action="action_docusign_credentials" sequence="20"/>
</odoo>

31
docusign_odoo_connector/views/sale_order_views.xml

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!--inherited view of sale order for adding button model-->
<record id="view_order_form" model="ir.ui.view">
<field name="name">sale.order.form.inherit.docusign.odoo</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//form//header//button[@name='action_draft']" position="after">
<button name="action_send_document" type="object" string="Send Document" class="oe_highlight"/>
</xpath>
<xpath expr="//page[@name='other_information']" position="after">
<page string="Docusign" name="docusign_details">
<button name="action_download_document" type="object" string="Update Status" class="oe_highlight"/>
<group>
<field name="credentials_id" string="Credential"/>
</group>
<field name="docusign_line_ids">
<tree editable="bottom">
<field name="document"/>
<field name="send_to"/>
<field name="status"/>
<field name="envelope_id" invisible="1"/>
<field name="signed_document"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
</odoo>

22
docusign_odoo_connector/wizard/__init__.py

@ -1,22 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Akhil @ cybrosys,(odoo@cybrosys.com)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###############################################################################
from . import send_document

100
docusign_odoo_connector/wizard/send_document.py

@ -1,100 +0,0 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Akhil @ cybrosys,(odoo@cybrosys.com)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###############################################################################
import json
from ..models import docusign
from ..models.edit_document import JSON
from odoo import api, fields, models, _
from odoo.exceptions import UserError
class SendDocument(models.TransientModel):
""" To set up a wizard for uploading pdf and send document."""
_name = 'send.document'
_description = "Pdf upload and send Setup wizard"
email_id = fields.Many2one('res.partner', string='Customer',
help="Email Id of customer")
file = fields.Binary('Preview Document',
help="To Preview Document")
file_name = fields.Char('File Name')
account_id = fields.Many2one('docusign.credentials', 'DocuSign Account',
help="Docusign Account Id")
data = JSON('Data', help="Field to store json data")
check = fields.Boolean('checkbox', help="To check attachment added or not")
res_id = fields.Many2one("sale.order", string="Source")
@api.onchange('file')
def _onchange_check(self):
""" Function to check whether attachments are uploaded or not """
if self.file:
self.check = True
else:
self.check = False
def action_edit_documents(self):
""" Function to edit documents by inserting fields """
if self.file:
raise UserError('Preview')
else:
raise UserError('No attachments are added')
def get_json_data(self, tabs1, res_id):
""" Function to retrieve the json data """
wiz = self.browse(res_id)
wiz.data = json.dumps(tabs1)
def action_send_documents(self):
""" Function to send Documents """
if self.data:
if self.email_id.email:
receiver_email = [self.email_id.email]
receiver_name = [self.email_id.name]
else:
raise UserError(
'Please add recipients email address')
account_id = self.env['docusign.credentials'].sudo().search([],
limit=1)
self.account_id = account_id
if not account_id:
raise UserError('You need to setup docusign credentials !!!!')
response = docusign.action_send_docusign_file(account_id.user_id_data,
account_id.account_id_data,
account_id.integrator_key,
account_id.private_key_ids,
self.file_name,
self.file,
receiver_name,
receiver_email,
self.data)
sale_order = self.env['sale.order'].browse(self.res_id.id)
sale_order.docusign_line_ids = [(0, 0, {
'document': self.file_name,
'send_to': receiver_email[0],
'status': response.status,
'envelope_id': response.envelope_id
})]
else:
raise UserError('You need to add fields in the document !!!!'
' In the document displayed, by double clicking you can insert fields anywhere in the document')

36
docusign_odoo_connector/wizard/send_document_views.xml

@ -1,36 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!--wizard view of send.document model-->
<record id="send_document_view_form" model="ir.ui.view">
<field name="name">send.document.view.form</field>
<field name="model">send.document</field>
<field name="arch" type="xml">
<form>
<group>
<field name="email_id" string="Customer"/>
<field name="check" id='check' invisible="1"/>
<field name="file"
string="" widget="edit_pdf_viewer" filename="file_name"/>
<field name="file_name"
invisible="1" />
</group>
<footer>
<button name="action_send_documents" type="object"
context="{'key': 0}"
attrs="{'invisible':[('check', '=', False)]}"
string="Send Documents"
class="oe_highlight"/>
</footer>
</form>
</field>
</record>
<!--action for viewing send.document model-->
<record id="action_send_document" model="ir.actions.act_window">
<field name="name">send document view action</field>
<field name="res_model">send.document</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">form</field>
</record>
</odoo>
Loading…
Cancel
Save