@ -0,0 +1,56 @@ | 
				
			|||||
 | 
					.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg | 
				
			||||
 | 
					    :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html | 
				
			||||
 | 
					    :alt: License: LGPL-3 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Advanced HR-LinkedIn Integration | 
				
			||||
 | 
					================================ | 
				
			||||
 | 
					* Advanced HR-LinkedIn Integration module for Odoo 17. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Installation | 
				
			||||
 | 
					============ | 
				
			||||
 | 
					* Install external python packages python-linkedin and mechanize. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Configuration | 
				
			||||
 | 
					============= | 
				
			||||
 | 
					* Mention the LinkedIn username and password in the section | 
				
			||||
 | 
					  LinkedIn Credentials under the recruitment configurations. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Company | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					License | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					General Public License, Version 3 (LGPL v3). | 
				
			||||
 | 
					(https://www.odoo.com/documentation/17.0/legal/licenses.html) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Credits | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					* Developer: Nilmar Shereef, | 
				
			||||
 | 
					             Jesni Banu, | 
				
			||||
 | 
					             (V11 & V12) Milind Mohan, | 
				
			||||
 | 
					             (V16) Gayathri V, | 
				
			||||
 | 
					             (V17) Kailas Krishna | 
				
			||||
 | 
					  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>`__ | 
				
			||||
@ -0,0 +1,23 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					from . import controller | 
				
			||||
 | 
					from . import models | 
				
			||||
@ -0,0 +1,52 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    'name': 'Advanced HR-LinkedIn Integration', | 
				
			||||
 | 
					    'summary': "Basic module for LnkedIn-HR Recruitment connector", | 
				
			||||
 | 
					    'description': """The LinkedIn-HR Recruitment Connector Basic Module is | 
				
			||||
 | 
					    designed to optimize your recruitment workflow, offering a comprehensive  | 
				
			||||
 | 
					    suite of features to enhance candidate sourcing and selection.""", | 
				
			||||
 | 
					    'category': 'Generic Modules/Human Resources', | 
				
			||||
 | 
					    'version': "17.0.1.0.0", | 
				
			||||
 | 
					    'depends': ['hr_recruitment', 'auth_oauth'], | 
				
			||||
 | 
					    'author': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'company': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'maintainer': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'website': "https://www.cybrosys.com", | 
				
			||||
 | 
					    'data': [ | 
				
			||||
 | 
					        'data/auth_linkedin_data.xml', | 
				
			||||
 | 
					        'security/ir.model.access.csv', | 
				
			||||
 | 
					        'views/recruitment_config_settings.xml', | 
				
			||||
 | 
					        'views/hr_job_linkedin_likes_comments_views.xml', | 
				
			||||
 | 
					        'views/linkedin_comments_views.xml', | 
				
			||||
 | 
					        'views/oauth_views.xml', | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    'external_dependencies': | 
				
			||||
 | 
					        { | 
				
			||||
 | 
					        'python': ['mechanize', 'linkedin'], | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					    'images': ['static/description/banner.jpg'], | 
				
			||||
 | 
					    'license': 'LGPL-3', | 
				
			||||
 | 
					    'installable': True, | 
				
			||||
 | 
					    'auto_install': False, | 
				
			||||
 | 
					    'application': False, | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,22 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					from . import hr_linkedin_recruitment | 
				
			||||
@ -0,0 +1,176 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					import logging | 
				
			||||
 | 
					from werkzeug import urls | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					_logger = logging.getLogger(__name__) | 
				
			||||
 | 
					try: | 
				
			||||
 | 
					    import mechanize | 
				
			||||
 | 
					    from linkedin_v2 import linkedin | 
				
			||||
 | 
					    from urllib.request import HTTPRedirectHandler as MechanizeRedirectHandler | 
				
			||||
 | 
					except ImportError: | 
				
			||||
 | 
					    _logger.error('Odoo module hr_linkedin_recruitment depends on the several ' | 
				
			||||
 | 
					                  'external python package Please read the doc/requirement.txt ' | 
				
			||||
 | 
					                  'file inside the module.') | 
				
			||||
 | 
					import json | 
				
			||||
 | 
					import requests | 
				
			||||
 | 
					from odoo.exceptions import ValidationError | 
				
			||||
 | 
					from odoo import http, _ | 
				
			||||
 | 
					from odoo.http import request | 
				
			||||
 | 
					from urllib.parse import urlparse | 
				
			||||
 | 
					from urllib.parse import parse_qs | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class LinkedinSocial(http.Controller): | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @http.route('/linkedin/redirect', type='http', website=True, auth='public') | 
				
			||||
 | 
					    def social_linkedin_callbacks(self): | 
				
			||||
 | 
					        """shares post on linkedin""" | 
				
			||||
 | 
					        url = request.httprequest.url | 
				
			||||
 | 
					        parsed_url = urlparse(url) | 
				
			||||
 | 
					        code = parse_qs(parsed_url.query)['code'][0] | 
				
			||||
 | 
					        state = parse_qs(parsed_url.query)['state'][0] | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        linkedin_auth_provider = request.env.ref( | 
				
			||||
 | 
					            'hr_linkedin_recruitment.provider_linkedin') | 
				
			||||
 | 
					        linked_in_url = request.env['hr.job'].browse(int(state)) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        recruitment = request.env['hr.job'] | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        access_token = requests.post( | 
				
			||||
 | 
					            'https://www.linkedin.com/oauth/v2/accessToken', | 
				
			||||
 | 
					            params={ | 
				
			||||
 | 
					                'Content-Type': 'x-www-form-urlencoded', | 
				
			||||
 | 
					                'grant_type': 'authorization_code', | 
				
			||||
 | 
					                # This is code obtained on previous step by Python script. | 
				
			||||
 | 
					                'code': code, | 
				
			||||
 | 
					                # Client ID of your created application | 
				
			||||
 | 
					                'client_id': linkedin_auth_provider.client_id, | 
				
			||||
 | 
					                # # Client Secret of your created application | 
				
			||||
 | 
					                'client_secret': linkedin_auth_provider.client_secret, | 
				
			||||
 | 
					                # This should be same as 'redirect_uri' field value of previous Python script. | 
				
			||||
 | 
					                'redirect_uri': linked_in_url._get_linkedin_post_redirect_uri(), | 
				
			||||
 | 
					            }, | 
				
			||||
 | 
					        ).json()['access_token'] | 
				
			||||
 | 
					        li_credential = {} | 
				
			||||
 | 
					        linkedin_auth_provider = request.env.ref( | 
				
			||||
 | 
					            'hr_linkedin_recruitment.provider_linkedin') | 
				
			||||
 | 
					        if (linkedin_auth_provider.client_id and | 
				
			||||
 | 
					                linkedin_auth_provider.client_secret): | 
				
			||||
 | 
					            li_credential['api_key'] = linkedin_auth_provider.client_id | 
				
			||||
 | 
					            li_credential['secret_key'] = linkedin_auth_provider.client_secret | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            raise ValidationError(_('LinkedIn Access Credentials are empty.!\n' | 
				
			||||
 | 
					                                    'Please fill up in Auth Provider form.')) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        if request.env['ir.config_parameter'].sudo().get_param( | 
				
			||||
 | 
					                'recruitment.li_username'): | 
				
			||||
 | 
					            li_credential['un'] = request.env[ | 
				
			||||
 | 
					                'ir.config_parameter'].sudo().get_param( | 
				
			||||
 | 
					                'recruitment.li_username') | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            raise ValidationError( | 
				
			||||
 | 
					                _('Please fill up username in LinkedIn Credential settings.')) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        if request.env['ir.config_parameter'].sudo().get_param( | 
				
			||||
 | 
					                'recruitment.li_password'): | 
				
			||||
 | 
					            li_credential['pw'] = request.env[ | 
				
			||||
 | 
					                'ir.config_parameter'].sudo().get_param( | 
				
			||||
 | 
					                'recruitment.li_password') | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            raise ValidationError( | 
				
			||||
 | 
					                _('Please fill up password in LinkedIn Credential settings.')) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        url = 'https://api.linkedin.com/v2/ugcPosts' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        li_suit_credent = {} | 
				
			||||
 | 
					        li_suit_credent['access_token'] = access_token | 
				
			||||
 | 
					        member_url = 'https://api.linkedin.com/v2/userinfo' | 
				
			||||
 | 
					        response = recruitment.get_urn('GET', member_url, | 
				
			||||
 | 
					                                       li_suit_credent['access_token']) | 
				
			||||
 | 
					        urn_response_text = response.json() | 
				
			||||
 | 
					        li_credential['profile_urn'] = urn_response_text['sub'] | 
				
			||||
 | 
					        li_suit_credent['li_credential'] = li_credential | 
				
			||||
 | 
					        payload = json.dumps({ | 
				
			||||
 | 
					            "author": "urn:li:person:" + li_credential['profile_urn'], | 
				
			||||
 | 
					            "lifecycleState": "PUBLISHED", | 
				
			||||
 | 
					            "specificContent": { | 
				
			||||
 | 
					                "com.linkedin.ugc.ShareContent": { | 
				
			||||
 | 
					                    "shareCommentary": { | 
				
			||||
 | 
					                        "text": linked_in_url.name | 
				
			||||
 | 
					                    }, | 
				
			||||
 | 
					                    "shareMediaCategory": "NONE" | 
				
			||||
 | 
					                } | 
				
			||||
 | 
					            }, | 
				
			||||
 | 
					            "visibility": { | 
				
			||||
 | 
					                "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC" | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        headers = { | 
				
			||||
 | 
					            'Authorization': 'Bearer ' + access_token, | 
				
			||||
 | 
					            'X-Restli-Protocol-Version': '2.0.0', | 
				
			||||
 | 
					            'Content-Type': 'application/json', | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        if linked_in_url.name: | 
				
			||||
 | 
					            response = requests.request("POST", url, data=payload, | 
				
			||||
 | 
					                                        headers=headers) | 
				
			||||
 | 
					            share_response_text = response.json() | 
				
			||||
 | 
					            linked_in_url.write({ | 
				
			||||
 | 
					                'access_token': access_token + '+' + share_response_text['id'] | 
				
			||||
 | 
					            }) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            share_response_code = response.status_code | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            if share_response_code == 201: | 
				
			||||
 | 
					                linked_in_url.update_key = True | 
				
			||||
 | 
					            elif share_response_code == 404: | 
				
			||||
 | 
					                raise Warning("Resource does not exist.!") | 
				
			||||
 | 
					            elif share_response_code == 409: | 
				
			||||
 | 
					                raise Warning("Already shared!") | 
				
			||||
 | 
					            else: | 
				
			||||
 | 
					                raise Warning("Error!! Check your connection...") | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            raise Warning("Provide a Job description....") | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        return_uri = 'https://www.linkedin.com/oauth/v2/authorization' | 
				
			||||
 | 
					        li_permissions = [' w_organization_social_feed ', ' r_liteprofile ', | 
				
			||||
 | 
					                          ' r_organization_social_feed ', ' r_ads ', | 
				
			||||
 | 
					                          'w_member_social_feed', 'r_member_social', | 
				
			||||
 | 
					                          'r_compliance', 'w_compliance'] | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        auth = linkedin.LinkedInAuthentication(li_credential['api_key'], | 
				
			||||
 | 
					                                               li_credential['secret_key'], | 
				
			||||
 | 
					                                               return_uri, | 
				
			||||
 | 
					                                               li_permissions) | 
				
			||||
 | 
					        li_suit_credent = {} | 
				
			||||
 | 
					        li_suit_credent['access_token'] = access_token | 
				
			||||
 | 
					        li_credential['profile_urn'] = share_response_text['id'] | 
				
			||||
 | 
					        li_suit_credent['li_credential'] = li_credential | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        url = urls.url_join( | 
				
			||||
 | 
					            http.request.env['ir.config_parameter'].sudo().get_param( | 
				
			||||
 | 
					                'web.base.url'), | 
				
			||||
 | 
					            'web#id=%(id)s&model=hr.job&action=%(action)s&view_type=form' % { | 
				
			||||
 | 
					                'id': state, | 
				
			||||
 | 
					                'action': request.env.ref('hr_recruitment.action_hr_job').id | 
				
			||||
 | 
					            }) | 
				
			||||
 | 
					        return request.redirect(url) | 
				
			||||
@ -0,0 +1,20 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <data noupdate="1"> | 
				
			||||
 | 
					    <!-- This record defines the configuration for LinkedIn OAuth provider.--> | 
				
			||||
 | 
					        <record id="provider_linkedin" model="auth.oauth.provider"> | 
				
			||||
 | 
					            <field name="name">LinkedIn</field> | 
				
			||||
 | 
					            <field name="auth_endpoint"> | 
				
			||||
 | 
					                https://www.linkedin.com/oauth/v2/authorization | 
				
			||||
 | 
					            </field> | 
				
			||||
 | 
					            <field name="scope">r_basicprofile r_emailaddress w_share | 
				
			||||
 | 
					                w_member_social | 
				
			||||
 | 
					            </field> | 
				
			||||
 | 
					            <field name="validation_endpoint">https://api.linkedin.com/v2/me | 
				
			||||
 | 
					            </field> | 
				
			||||
 | 
					            <field name="data_endpoint">https://api.linkedin.com/v2/me</field> | 
				
			||||
 | 
					            <field name="css_class">fa fa-linkedin-square</field> | 
				
			||||
 | 
					            <field name="body">Share post with LinkedIn</field> | 
				
			||||
 | 
					        </record> | 
				
			||||
 | 
					    </data> | 
				
			||||
 | 
					</odoo> | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			|||||
 | 
					## Module <hr_linkedin_recruitment> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#### 05.02.2024 | 
				
			||||
 | 
					#### Version 17.0.1.0.0 | 
				
			||||
 | 
					##### ADD  | 
				
			||||
 | 
					- Initial Commit for Advanced HR-LinkedIn Integration | 
				
			||||
@ -0,0 +1,8 @@ | 
				
			|||||
 | 
					Odoo integration module "hr_linkedin_recruitment" depends on the several external python package. | 
				
			||||
 | 
					Please ensure that listed packaged has installed in your system: | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					* python-linkedin (sudo python-linkedin) | 
				
			||||
 | 
					* mechanize (sudo pip install mechanize) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
@ -0,0 +1,25 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <https://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					from . import auth_outh_provider | 
				
			||||
 | 
					from . import hr_job | 
				
			||||
 | 
					from . import linkedin_comments | 
				
			||||
 | 
					from . import recruitment_config | 
				
			||||
@ -0,0 +1,31 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <https://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					from odoo import fields, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class OAuthProviderLinkedin(models.Model): | 
				
			||||
 | 
					    """ Adding client_secret field because some apps likes twitter, | 
				
			||||
 | 
					       linkedIn are using this value for its API operations """ | 
				
			||||
 | 
					    _inherit = 'auth.oauth.provider' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    client_secret = fields.Char(string='Client Secret', | 
				
			||||
 | 
					                                help="Only need LinkedIn, Twitter etc..") | 
				
			||||
@ -0,0 +1,161 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <https://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					import logging | 
				
			||||
 | 
					import requests | 
				
			||||
 | 
					from werkzeug.urls import url_encode, url_join | 
				
			||||
 | 
					from odoo import fields, models, _ | 
				
			||||
 | 
					from odoo.exceptions import ValidationError | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					_logger = logging.getLogger(__name__) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class HrJobShare(models.Model): | 
				
			||||
 | 
					    """recruitment of different job positions""" | 
				
			||||
 | 
					    _inherit = 'hr.job' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    update_key = fields.Char(string='Update Key', readonly=True) | 
				
			||||
 | 
					    access_token = fields.Char(string='Access Token', | 
				
			||||
 | 
					                               help='Access token for your linkedin app') | 
				
			||||
 | 
					    comments = fields.Boolean(default=False, string='Likes Comments', | 
				
			||||
 | 
					                              help='Which is used to visible the like comment retrieving button') | 
				
			||||
 | 
					    like_comment = fields.Boolean(default=False, string='Likes comment', | 
				
			||||
 | 
					                                  help='Which is used to visible the smart buttons of likes and comments') | 
				
			||||
 | 
					    post_likes = fields.Integer(string='Likes Count', | 
				
			||||
 | 
					                                help="Total Number of likes in the shared post") | 
				
			||||
 | 
					    post_commands = fields.Integer(string='Comments Count', | 
				
			||||
 | 
					                                   help="Total Number of Comments in the shared post") | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def _get_linkedin_post_redirect_uri(self): | 
				
			||||
 | 
					        """finding redirecting url""" | 
				
			||||
 | 
					        print('url', self.get_base_url()) | 
				
			||||
 | 
					        return url_join(self.get_base_url(), '/linkedin/redirect') | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def share_linkedin(self): | 
				
			||||
 | 
					        """ Button function for sharing post """ | 
				
			||||
 | 
					        self.comments = True | 
				
			||||
 | 
					        linkedin_auth_provider = self.env.ref( | 
				
			||||
 | 
					            'hr_linkedin_recruitment.provider_linkedin') | 
				
			||||
 | 
					        if linkedin_auth_provider.client_id and linkedin_auth_provider.client_secret: | 
				
			||||
 | 
					            linkedin_client_id = linkedin_auth_provider.client_id | 
				
			||||
 | 
					            params = { | 
				
			||||
 | 
					                'response_type': 'code', | 
				
			||||
 | 
					                'client_id': linkedin_client_id, | 
				
			||||
 | 
					                'redirect_uri': self._get_linkedin_post_redirect_uri(), | 
				
			||||
 | 
					                'state': self.id, | 
				
			||||
 | 
					                'scope': 'w_member_social r_1st_connections_size r_ads ' | 
				
			||||
 | 
					                         'r_ads_reporting r_basicprofile r_organization_admin ' | 
				
			||||
 | 
					                         'r_organization_social rw_ads rw_organization_admin ' | 
				
			||||
 | 
					                         'w_member_social w_organization_social openid profile email' | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            raise ValidationError(_('LinkedIn Access Credentials are empty.!\n' | 
				
			||||
 | 
					                                    'Please fill up in Auth Provider form.')) | 
				
			||||
 | 
					        return { | 
				
			||||
 | 
					            'type': 'ir.actions.act_url', | 
				
			||||
 | 
					            'url': 'https://www.linkedin.com/oauth/v2/authorization?%s' % url_encode( | 
				
			||||
 | 
					                params), | 
				
			||||
 | 
					            'target': 'self' | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def share_request(self, method, page_share_url, access_token, data): | 
				
			||||
 | 
					        """ Function will return UPDATED KEY , [201] if sharing is OK """ | 
				
			||||
 | 
					        headers = {'x-li-format': 'json', 'Content-Type': 'application/json'} | 
				
			||||
 | 
					        params = {} | 
				
			||||
 | 
					        params.update({'oauth2_access_token': access_token}) | 
				
			||||
 | 
					        kw = dict(data=data, params=params, headers=headers, timeout=60) | 
				
			||||
 | 
					        req_response = requests.request(method.upper(), page_share_url, **kw) | 
				
			||||
 | 
					        return req_response | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def get_urn(self, method, has_access_url, access_token): | 
				
			||||
 | 
					        """ Function will return TRUE if credentials user has the access to update """ | 
				
			||||
 | 
					        headers = {'x-li-format': 'json', 'Content-Type': 'application/json'} | 
				
			||||
 | 
					        params = {} | 
				
			||||
 | 
					        params.update({'oauth2_access_token': access_token}) | 
				
			||||
 | 
					        kw = dict(params=params, headers=headers, timeout=60) | 
				
			||||
 | 
					        req_response = requests.request(method.upper(), has_access_url, **kw) | 
				
			||||
 | 
					        return req_response | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def user_response_like(self): | 
				
			||||
 | 
					        """return the likes""" | 
				
			||||
 | 
					        return | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def likes_comments(self): | 
				
			||||
 | 
					        """retrieving total count of likes and comments""" | 
				
			||||
 | 
					        self.like_comment = True | 
				
			||||
 | 
					        urn = self.access_token.split('+')[1] | 
				
			||||
 | 
					        url = "https://api.linkedin.com/v2/socialActions/" + urn | 
				
			||||
 | 
					        payload = {} | 
				
			||||
 | 
					        headers = { | 
				
			||||
 | 
					            'Authorization': 'Bearer ' + self.access_token.split('+')[0], | 
				
			||||
 | 
					            'LinkedIn-Version': '202308', | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        response = requests.request("GET", url, headers=headers) | 
				
			||||
 | 
					        response_comm_like = response.json() | 
				
			||||
 | 
					        self.post_likes = response_comm_like['likesSummary']['totalLikes'] | 
				
			||||
 | 
					        self.post_commands = response_comm_like["commentsSummary"][ | 
				
			||||
 | 
					            'aggregatedTotalComments'] | 
				
			||||
 | 
					        comment_url = "https://api.linkedin.com/v2/socialActions/" + urn + "/comments" | 
				
			||||
 | 
					        headers = { | 
				
			||||
 | 
					            'LinkedIn-Version': '202308', | 
				
			||||
 | 
					            'Authorization': 'Bearer ' + self.access_token.split('+')[0], | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        response = requests.request("GET", comment_url, headers=headers, | 
				
			||||
 | 
					                                    data=payload) | 
				
			||||
 | 
					        response_commets = response.json() | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        comment_id = self.env['linkedin.comments'].search([]).mapped( | 
				
			||||
 | 
					            'comments_id') | 
				
			||||
 | 
					        for record in response_commets.get("elements", []): | 
				
			||||
 | 
					            if record['id'] not in comment_id: | 
				
			||||
 | 
					                self.env['linkedin.comments'].create({ | 
				
			||||
 | 
					                    'post_id': self.id, | 
				
			||||
 | 
					                    'comments_id': record['id'], | 
				
			||||
 | 
					                    'linkedin_comments': record['message']['text'], | 
				
			||||
 | 
					                }) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def user_response_commends(self): | 
				
			||||
 | 
					        """return the comments of the shared post""" | 
				
			||||
 | 
					        return { | 
				
			||||
 | 
					            'type': 'ir.actions.act_window', | 
				
			||||
 | 
					            'target': 'current', | 
				
			||||
 | 
					            'name': _('Linkedin'), | 
				
			||||
 | 
					            'view_mode': 'tree', | 
				
			||||
 | 
					            'res_model': 'linkedin.comments', | 
				
			||||
 | 
					            'domain': [('post_id', '=', self.id)], | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def view_shared_post(self): | 
				
			||||
 | 
					        """Direct link for viewing the shared post page in linkedin""" | 
				
			||||
 | 
					        url = "https://api.linkedin.com/v2/me" | 
				
			||||
 | 
					        payload = "" | 
				
			||||
 | 
					        headers = { | 
				
			||||
 | 
					            'LinkedIn-Version': '202208', | 
				
			||||
 | 
					            'Authorization': 'Bearer ' + self.access_token.split('+')[0], | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        response = requests.request("GET", url, headers=headers, data=payload) | 
				
			||||
 | 
					        response_activity = response.json() | 
				
			||||
 | 
					        activity_urn = response_activity["vanityName"] | 
				
			||||
 | 
					        return { | 
				
			||||
 | 
					            'type': 'ir.actions.act_url', | 
				
			||||
 | 
					            'url': 'https://www.linkedin.com/in/%s' % activity_urn + '/recent-activity/', | 
				
			||||
 | 
					            'target': 'self' | 
				
			||||
 | 
					        } | 
				
			||||
@ -0,0 +1,34 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <https://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					from odoo import fields, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class LinkedinComments(models.Model): | 
				
			||||
 | 
					    """class for retrieving comments of shared post""" | 
				
			||||
 | 
					    _name = 'linkedin.comments' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    post_id = fields.Integer(string="Post ID", | 
				
			||||
 | 
					                             help="Post id of the particular post") | 
				
			||||
 | 
					    comments_id = fields.Char(string="Comments ID", | 
				
			||||
 | 
					                              help="For specifing the comments id") | 
				
			||||
 | 
					    linkedin_comments = fields.Char(string="Comments", | 
				
			||||
 | 
					                                    help="To add the posts comments") | 
				
			||||
@ -0,0 +1,77 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <https://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					import logging | 
				
			||||
 | 
					import urllib | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					_logger = logging.getLogger(__name__) | 
				
			||||
 | 
					try: | 
				
			||||
 | 
					    import mechanize | 
				
			||||
 | 
					    from mechanize import _response | 
				
			||||
 | 
					    from mechanize import _rfc3986 | 
				
			||||
 | 
					    import re | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    class MechanizeRedirectHandler(mechanize.HTTPRedirectHandler): | 
				
			||||
 | 
					        def http_error_302(self, req, fp, code, msg, headers): | 
				
			||||
 | 
					            if 'location' in headers: | 
				
			||||
 | 
					                newurl = headers.getheaders('location')[0] | 
				
			||||
 | 
					            elif 'uri' in headers: | 
				
			||||
 | 
					                newurl = headers.getheaders('uri')[0] | 
				
			||||
 | 
					            else: | 
				
			||||
 | 
					                return | 
				
			||||
 | 
					            newurl = _rfc3986.clean_url(newurl, "latin-1") | 
				
			||||
 | 
					            newurl = _rfc3986.urljoin(req.get_full_url(), newurl) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            new = self.redirect_request(req, fp, code, msg, headers, newurl) | 
				
			||||
 | 
					            if new is None: | 
				
			||||
 | 
					                return | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            if hasattr(req, 'redirect_dict'): | 
				
			||||
 | 
					                visited = new.redirect_dict = req.redirect_dict | 
				
			||||
 | 
					                if (visited.get(newurl, 0) >= self.max_repeats or | 
				
			||||
 | 
					                        len(visited) >= self.max_redirections): | 
				
			||||
 | 
					                    raise urllib.error.HTTPError(req.get_full_url(), code, | 
				
			||||
 | 
					                                                 self.inf_msg + msg, headers, | 
				
			||||
 | 
					                                                 fp) | 
				
			||||
 | 
					            else: | 
				
			||||
 | 
					                visited = new.redirect_dict = req.redirect_dict = {} | 
				
			||||
 | 
					            visited[newurl] = visited.get(newurl, 0) + 1 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            fp.read() | 
				
			||||
 | 
					            fp.close() | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            # If the redirected URL doesn't match | 
				
			||||
 | 
					            new_url = new.get_full_url() | 
				
			||||
 | 
					            if not re.search('^http(?:s)?\:\/\/.*www\.linkedin\.com', new_url): | 
				
			||||
 | 
					                return _response.make_response('', headers.items(), new_url, | 
				
			||||
 | 
					                                               200, 'OK') | 
				
			||||
 | 
					            else: | 
				
			||||
 | 
					                return self.parent.open(new) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        http_error_301 = http_error_303 = http_error_307 = http_error_302 | 
				
			||||
 | 
					        http_error_refresh = http_error_302 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					except ImportError: | 
				
			||||
 | 
					    _logger.warning( | 
				
			||||
 | 
					        'Odoo module hr_linkedin_recruitment depends on the several external' | 
				
			||||
 | 
					        ' python package' | 
				
			||||
 | 
					        'Please read the doc/requirement.txt file inside the module.') | 
				
			||||
@ -0,0 +1,49 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU LESSER | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is distributed in the hope that it will be useful, | 
				
			||||
 | 
					#    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			||||
 | 
					#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			||||
 | 
					#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (LGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <https://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					from odoo import fields, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class ResConfigSettings(models.TransientModel): | 
				
			||||
 | 
					    """config settings""" | 
				
			||||
 | 
					    _inherit = 'res.config.settings' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    li_username = fields.Char(string="User Name", help="Your Linkedin Username") | 
				
			||||
 | 
					    li_password = fields.Char(string="Password", help="Your Linkedin Password") | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def set_values(self): | 
				
			||||
 | 
					        """super the config to set the value""" | 
				
			||||
 | 
					        super(ResConfigSettings, self).set_values() | 
				
			||||
 | 
					        self.env['ir.config_parameter'].sudo().set_param( | 
				
			||||
 | 
					            'recruitment.li_username', self.li_username) | 
				
			||||
 | 
					        self.env['ir.config_parameter'].sudo().set_param( | 
				
			||||
 | 
					            'recruitment.li_password', self.li_password) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def get_values(self): | 
				
			||||
 | 
					        """super the config to get the value""" | 
				
			||||
 | 
					        res = super(ResConfigSettings, self).get_values() | 
				
			||||
 | 
					        res.update( | 
				
			||||
 | 
					            li_username=self.env['ir.config_parameter'].sudo().get_param( | 
				
			||||
 | 
					                'recruitment.li_username'), | 
				
			||||
 | 
					            li_password=self.env['ir.config_parameter'].sudo().get_param( | 
				
			||||
 | 
					                'recruitment.li_password'), | 
				
			||||
 | 
					        ) | 
				
			||||
 | 
					        return res | 
				
			||||
		
		
			
  | 
| 
		 After Width: | Height: | Size: 36 KiB  | 
| 
		 After Width: | Height: | Size: 3.6 KiB  | 
| 
		 After Width: | Height: | Size: 310 B  | 
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 576 B  | 
| 
		 After Width: | Height: | Size: 733 B  | 
| 
		 After Width: | Height: | Size: 911 B  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 673 B  | 
| 
		 After Width: | Height: | Size: 11 KiB  | 
| 
		 After Width: | Height: | Size: 878 B  | 
| 
		 After Width: | Height: | Size: 653 B  | 
| 
		 After Width: | Height: | Size: 905 B  | 
| 
		 After Width: | Height: | Size: 839 B  | 
| 
		 After Width: | Height: | Size: 427 B  | 
| 
		 After Width: | Height: | Size: 627 B  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 988 B  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 80 KiB  | 
| 
		 After Width: | Height: | Size: 1.5 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.9 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 2.1 KiB  | 
| 
		 After Width: | Height: | Size: 4.4 KiB  | 
| 
		 After Width: | Height: | Size: 3.2 KiB  | 
| 
		 After Width: | Height: | Size: 589 B  | 
| 
		 After Width: | Height: | Size: 3.4 KiB  | 
| 
		 After Width: | Height: | Size: 565 B  | 
| 
		 After Width: | Height: | Size: 1.7 KiB  | 
| 
		 After Width: | Height: | Size: 2.3 KiB  | 
| 
		 After Width: | Height: | Size: 967 B  | 
| 
		 After Width: | Height: | Size: 26 KiB  | 
| 
		 After Width: | Height: | Size: 1.6 KiB  | 
| 
		 After Width: | Height: | Size: 43 KiB  | 
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 3.8 KiB  | 
| 
		 After Width: | Height: | Size: 4.0 KiB  | 
| 
		 After Width: | Height: | Size: 38 KiB  | 
| 
		 After Width: | Height: | Size: 5.0 KiB  | 
| 
		 After Width: | Height: | Size: 4.3 KiB  | 
| 
		 After Width: | Height: | Size: 1.3 MiB  | 
| 
		 After Width: | Height: | Size: 86 KiB  | 
| 
		 After Width: | Height: | Size: 89 KiB  | 
| 
		 After Width: | Height: | Size: 85 KiB  | 
| 
		 After Width: | Height: | Size: 85 KiB  | 
| 
		 After Width: | Height: | Size: 80 KiB  | 
| 
		 After Width: | Height: | Size: 125 KiB  | 
| 
		 After Width: | Height: | Size: 117 KiB  | 
| 
		 After Width: | Height: | Size: 29 KiB  | 
| 
		 After Width: | Height: | Size: 128 KiB  | 
| 
		 After Width: | Height: | Size: 138 KiB  | 
| 
		 After Width: | Height: | Size: 100 KiB  | 
| 
		 After Width: | Height: | Size: 67 KiB  | 
| 
		 After Width: | Height: | Size: 87 KiB  | 
| 
		 After Width: | Height: | Size: 114 KiB  | 
| 
		 After Width: | Height: | Size: 216 KiB  | 
| 
		 After Width: | Height: | Size: 114 KiB  | 
| 
		 After Width: | Height: | Size: 330 KiB  | 
| 
		 After Width: | Height: | Size: 92 KiB  | 
| 
		 After Width: | Height: | Size: 9.5 KiB  | 
@ -0,0 +1,874 @@ | 
				
			|||||
 | 
					<!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 class="text-center" | 
				
			||||
 | 
					                         style="background-color:#875A7B !important; color:#fff !important;font-size: 0.8rem !important; font-weight:500 !important; padding:4px !important; margin:0 3px !important; border-radius:50px !important;min-width: 120px !important;"> | 
				
			||||
 | 
					                        Enterprise | 
				
			||||
 | 
					                    </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;"> | 
				
			||||
 | 
					                    Advanced HR-LinkedIn Integration</h1> | 
				
			||||
 | 
					                <p class="my-3 mb-4" | 
				
			||||
 | 
					                   style="max-width: 80%; font-weight: 400 !important; line-height: 32px; color: #718096;"> | 
				
			||||
 | 
					                    Share your recruitment posts directly to LinkedIn via authorized login. | 
				
			||||
 | 
					                </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;"> | 
				
			||||
 | 
					                                Share Recruitment Post to LinkedIn from Odoo | 
				
			||||
 | 
					                            </p> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					                <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;"> | 
				
			||||
 | 
					                                Retrive Count of likes and Comments | 
				
			||||
 | 
					                            </p> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					                <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;"> | 
				
			||||
 | 
					                                Retrive The Comments and direct view of Shared Post | 
				
			||||
 | 
					                            </p> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					                <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;"> | 
				
			||||
 | 
					                                Enlarge Your Audience Range. | 
				
			||||
 | 
					                            </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"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Setup a LinkedIn App | 
				
			||||
 | 
					                                </h5> | 
				
			||||
 | 
					                                <p class="m-0" style="color:#718096"> | 
				
			||||
 | 
					                                    Setup a LinkedIn App with proper information. | 
				
			||||
 | 
					                                    By visiting this link <a href="https://developer.linkedin.com">LinkedIn Developers</a> | 
				
			||||
 | 
					                                </p> | 
				
			||||
 | 
					                            </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"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Make sure the products are added | 
				
			||||
 | 
					                                </h5> | 
				
			||||
 | 
					                            </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"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Add the redirect URL in the App</h5> | 
				
			||||
 | 
					                                <p class="m-0" style="color:#718096"> | 
				
			||||
 | 
					                                    Mention the redirect url in the OAuth 2.0 settings. | 
				
			||||
 | 
					                                </p> | 
				
			||||
 | 
					                            </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"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Click on the menu OAuth Providers</h5> | 
				
			||||
 | 
					                                <p class="m-0" style="color:#718096"> | 
				
			||||
 | 
					                                    Activate developer mode. | 
				
			||||
 | 
					                                </p> | 
				
			||||
 | 
					                            </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"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Fill-up the Application Credentials</h5> | 
				
			||||
 | 
					                                <p class="m-0" style="color:#718096"> | 
				
			||||
 | 
					                                    Client ID, Client Secret. | 
				
			||||
 | 
					                                </p> | 
				
			||||
 | 
					                            </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"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Fill-up LinkedIn Credentials | 
				
			||||
 | 
					                                </h5> | 
				
			||||
 | 
					                                <p class="m-0" style="color:#718096"> | 
				
			||||
 | 
					                                    Username, Password. | 
				
			||||
 | 
					                                </p> | 
				
			||||
 | 
					                            </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"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Share Job Requirement with LinkedIn | 
				
			||||
 | 
					                                    show</h5> | 
				
			||||
 | 
					                                <p class="m-0" style="color:#718096"> | 
				
			||||
 | 
					                                    Share Job Requirement with LinkedIn by using 'Share on linked' button. | 
				
			||||
 | 
					                                </p> | 
				
			||||
 | 
					                            </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"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Shared Post in LinkedIn</h5> | 
				
			||||
 | 
					                                <p class="m-0" style="color:#718096"> | 
				
			||||
 | 
					                                    The particular job position is posted in linkedin. | 
				
			||||
 | 
					                                </p> | 
				
			||||
 | 
					                            </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/9.png" | 
				
			||||
 | 
					                                     class="img-responsive" width="100%" | 
				
			||||
 | 
					                                     height="auto"> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                            <div class="px-3"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Retrieve Count of Likes And Comments on the button Click</h5> | 
				
			||||
 | 
					                            </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/10.png" | 
				
			||||
 | 
					                                     class="img-responsive" width="100%" | 
				
			||||
 | 
					                                     height="auto"> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                            <div class="px-3"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Counts of Likes And Comments and also a | 
				
			||||
 | 
					                                    button for view the comments and shared post</h5> | 
				
			||||
 | 
					                            </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"> | 
				
			||||
 | 
					                                <h5 class="mt-2" | 
				
			||||
 | 
					                                    style=" font-weight:600 !important; color:#282F33 !important; font-size:1.3rem !important"> | 
				
			||||
 | 
					                                    Retrieved Comments Of Shared post</h5> | 
				
			||||
 | 
					                                <p class="m-0" style="color:#718096"> | 
				
			||||
 | 
					                                    List of comments of shared post. | 
				
			||||
 | 
					                                </p> | 
				
			||||
 | 
					                            </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>Configure the layout. | 
				
			||||
 | 
					                            </li> | 
				
			||||
 | 
					                            <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>Share Recruitment Post to LinkedIn from Odoo. | 
				
			||||
 | 
					                            </li> | 
				
			||||
 | 
					                            <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>Retrive Count of likes and Comments. | 
				
			||||
 | 
					                            </li> | 
				
			||||
 | 
					                            <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>Retrive The Comments and direct view of Shred Post. | 
				
			||||
 | 
					                            </li> | 
				
			||||
 | 
					                            <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>Enlarge Your Audience Range. | 
				
			||||
 | 
					                            </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:05th February 2024</span> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                            <p class="m-0" | 
				
			||||
 | 
					                               style=" color:#718096!important; font-size:1rem !important;line-height: 28px;"> | 
				
			||||
 | 
					                                Initial Commit for Advanced HR-LinkedIn Integration.</p> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </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/ohrms_core/" | 
				
			||||
 | 
					                                   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"> | 
				
			||||
 | 
					                                            Open HRMS Core | 
				
			||||
 | 
					                                        </p> | 
				
			||||
 | 
					                                    </div> | 
				
			||||
 | 
					                                </a> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                        <div class="col"> | 
				
			||||
 | 
					                            <div class="p-3"> | 
				
			||||
 | 
					                                <a href="https://apps.odoo.com/apps/modules/17.0/hrms_dashboard/" | 
				
			||||
 | 
					                                   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.jpg" | 
				
			||||
 | 
					                                                 alt="" width="100%" | 
				
			||||
 | 
					                                                 height="auto"> | 
				
			||||
 | 
					                                        </div> | 
				
			||||
 | 
					                                        <p class="text-center pt-2 text-black font-weight-bold"> | 
				
			||||
 | 
					                                            Open HRMS HR Dashboard | 
				
			||||
 | 
					                                        </p> | 
				
			||||
 | 
					                                    </div> | 
				
			||||
 | 
					                                </a> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                        <div class="col"> | 
				
			||||
 | 
					                            <div class="p-3"> | 
				
			||||
 | 
					                                <a href="https://apps.odoo.com/apps/modules/17.0/hr_multi_company/" | 
				
			||||
 | 
					                                   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.jpg" | 
				
			||||
 | 
					                                                 alt="" width="100%" | 
				
			||||
 | 
					                                                 height="auto"> | 
				
			||||
 | 
					                                        </div> | 
				
			||||
 | 
					                                        <p class="text-center pt-2 text-black font-weight-bold"> | 
				
			||||
 | 
					                                            Open HRMS Multi-Company | 
				
			||||
 | 
					                                        </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/hr_payslip_monthly_report/" | 
				
			||||
 | 
					                                   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"> | 
				
			||||
 | 
					                                            Payroll Advanced Features | 
				
			||||
 | 
					                                        </p> | 
				
			||||
 | 
					                                    </div> | 
				
			||||
 | 
					                                </a> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                        <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/5.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/access_restriction_by_ip/" | 
				
			||||
 | 
					                                   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.jpg" | 
				
			||||
 | 
					                                                 alt="" width="100%" | 
				
			||||
 | 
					                                                 height="auto"> | 
				
			||||
 | 
					                                        </div> | 
				
			||||
 | 
					                                        <p class="text-center pt-2 text-black font-weight-bold"> | 
				
			||||
 | 
					                                            Access Restriction By IP | 
				
			||||
 | 
					                                        </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> | 
				
			||||
 | 
					    </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> | 
				
			||||
@ -0,0 +1,64 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <data> | 
				
			||||
 | 
					        <!--Defines a view for the hr.job model--> | 
				
			||||
 | 
					        <record id="view_hr_job_form" model="ir.ui.view"> | 
				
			||||
 | 
					            <field name="name"> | 
				
			||||
 | 
					                hr.job.view.form.inherit.hr.linkedin.recruitment | 
				
			||||
 | 
					            </field> | 
				
			||||
 | 
					            <field name="model">hr.job</field> | 
				
			||||
 | 
					            <field name="inherit_id" ref="hr.view_hr_job_form"/> | 
				
			||||
 | 
					            <field name="arch" type="xml"> | 
				
			||||
 | 
					                <xpath expr="//form/sheet" position="before"> | 
				
			||||
 | 
					                    <header> | 
				
			||||
 | 
					                        <field name="like_comment" invisible="True"/> | 
				
			||||
 | 
					                        <button name="likes_comments" string="Like/Comments" | 
				
			||||
 | 
					                                type="object" groups="base.group_user" | 
				
			||||
 | 
					                                invisible="not comments"/> | 
				
			||||
 | 
					                        <button name="share_linkedin" string="Share on LinkedIn" | 
				
			||||
 | 
					                                type="object" invisible="update_key" | 
				
			||||
 | 
					                                groups="base.group_user"/> | 
				
			||||
 | 
					                    </header> | 
				
			||||
 | 
					                </xpath> | 
				
			||||
 | 
					                <xpath expr="//field[@name='department_id']" position="after"> | 
				
			||||
 | 
					                    <field name="update_key" invisible="True"/> | 
				
			||||
 | 
					                    <field name="access_token" invisible="True"/> | 
				
			||||
 | 
					                    <field name="post_likes" invisible="True"/> | 
				
			||||
 | 
					                    <field name="post_commands" invisible="True"/> | 
				
			||||
 | 
					                    <field name="comments" invisible="True"/> | 
				
			||||
 | 
					                </xpath> | 
				
			||||
 | 
					                <div class="oe_button_box" name="button_box" position="inside"> | 
				
			||||
 | 
					                    <button name="user_response_like" string="Likes" | 
				
			||||
 | 
					                            type="object" invisible="not like_comment" | 
				
			||||
 | 
					                            class="oe_stat_button" icon="fa-thumbs-o-up"> | 
				
			||||
 | 
					                        <div class="o_field_widget o_stat_info" | 
				
			||||
 | 
					                             icon="fa-thumbs-o-up"> | 
				
			||||
 | 
					                            <span class="o_stat_text">Likes | 
				
			||||
 | 
					                                <field name="post_likes" class="o_stat_value" | 
				
			||||
 | 
					                                       readonly="1"/> | 
				
			||||
 | 
					                            </span> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </button> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					                <div class="oe_button_box" name="button_box" position="inside"> | 
				
			||||
 | 
					                    <button name="user_response_commends" string="Comments" | 
				
			||||
 | 
					                            type="object" invisible="not like_comment" | 
				
			||||
 | 
					                            class="oe_stat_button" icon="fa-comments-o"> | 
				
			||||
 | 
					                        <div class="o_field_widget o_stat_info"> | 
				
			||||
 | 
					                            <span class="o_stat_text">Comments | 
				
			||||
 | 
					                                <field name="post_commands" class="o_stat_value" | 
				
			||||
 | 
					                                       readonly="1"/> | 
				
			||||
 | 
					                            </span> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </button> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					                <div class="oe_button_box" name="button_box" position="inside"> | 
				
			||||
 | 
					                    <button name="view_shared_post" type="object" | 
				
			||||
 | 
					                            string="View Posts" invisible="not like_comment" | 
				
			||||
 | 
					                            class="oe_stat_button" icon="fa-linkedin"> | 
				
			||||
 | 
					                    </button> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </field> | 
				
			||||
 | 
					        </record> | 
				
			||||
 | 
					    </data> | 
				
			||||
 | 
					</odoo> | 
				
			||||
@ -0,0 +1,21 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8" ?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <!-- A view in Odoo for displaying comments related to LinkedIn posts. | 
				
			||||
 | 
					    It includes two fields: comments_id (invisible) and linkedin_comments.--> | 
				
			||||
 | 
					    <record id="linkedin_comments_view_tree" model="ir.ui.view"> | 
				
			||||
 | 
					        <field name="name">linkedin.comments.view.tree</field> | 
				
			||||
 | 
					        <field name="model">linkedin.comments</field> | 
				
			||||
 | 
					        <field name="arch" type="xml"> | 
				
			||||
 | 
					            <tree string="arch" create="false"> | 
				
			||||
 | 
					                <field name="comments_id" column_invisible="1"/> | 
				
			||||
 | 
					                <field name="linkedin_comments" /> | 
				
			||||
 | 
					            </tree> | 
				
			||||
 | 
					        </field> | 
				
			||||
 | 
					    </record> | 
				
			||||
 | 
					    <!--Action--> | 
				
			||||
 | 
					    <record id="hr_recruitment_comments" model="ir.actions.act_window"> | 
				
			||||
 | 
					        <field name="name">Post Comments</field> | 
				
			||||
 | 
					        <field name="res_model">linkedin.comments</field> | 
				
			||||
 | 
					        <field name="view_mode">tree</field> | 
				
			||||
 | 
					    </record> | 
				
			||||
 | 
					</odoo> | 
				
			||||
@ -0,0 +1,18 @@ | 
				
			|||||
 | 
					<?xml version="1.0"?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <!--Defines a view for the form of the model 'auth.oauth.provider'. It | 
				
			||||
 | 
					    inherits the view and adds a new field 'client_secret' after the existing | 
				
			||||
 | 
					    field 'client_id'.--> | 
				
			||||
 | 
					    <record id="view_oauth_provider_form" model="ir.ui.view"> | 
				
			||||
 | 
					        <field name="name"> | 
				
			||||
 | 
					            auth.oauth.provider.view.form.inherit.hr.linkedin.recruitment | 
				
			||||
 | 
					        </field> | 
				
			||||
 | 
					        <field name="model">auth.oauth.provider</field> | 
				
			||||
 | 
					        <field name="inherit_id" ref="auth_oauth.view_oauth_provider_form"/> | 
				
			||||
 | 
					        <field name="arch" type="xml"> | 
				
			||||
 | 
					            <xpath expr="//field[@name='client_id']" position="after"> | 
				
			||||
 | 
					                <field name="client_secret"/> | 
				
			||||
 | 
					            </xpath> | 
				
			||||
 | 
					        </field> | 
				
			||||
 | 
					    </record> | 
				
			||||
 | 
					</odoo> | 
				
			||||
@ -0,0 +1,30 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <data> | 
				
			||||
 | 
					        <!--Customizing the form view of the 'res.config.settings' model. | 
				
			||||
 | 
					        It adds a new section for LinkedIn credentials after a specific | 
				
			||||
 | 
					        block in the form view.--> | 
				
			||||
 | 
					        <record id="res_config_settings_view_form" model="ir.ui.view"> | 
				
			||||
 | 
					            <field name="name"> | 
				
			||||
 | 
					                res.config.settings.view.form.inherit.hr.linkedin.recruitment | 
				
			||||
 | 
					            </field> | 
				
			||||
 | 
					            <field name="model">res.config.settings</field> | 
				
			||||
 | 
					            <field name="inherit_id" | 
				
			||||
 | 
					                   ref="hr_recruitment.res_config_settings_view_form"/> | 
				
			||||
 | 
					            <field name="arch" type="xml"> | 
				
			||||
 | 
					                <xpath expr="//block[@name='recruitment_process_div']" | 
				
			||||
 | 
					                       position="after"> | 
				
			||||
 | 
					                    <h2>LinkedIn Credentials</h2> | 
				
			||||
 | 
					                    <div class="row mt16 o_settings_container"> | 
				
			||||
 | 
					                        <div class="col-xs-12 col-md-6 o_setting_box"> | 
				
			||||
 | 
					                            <group> | 
				
			||||
 | 
					                                <field name="li_username"/> | 
				
			||||
 | 
					                                <field name="li_password" password="True"/> | 
				
			||||
 | 
					                            </group> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </xpath> | 
				
			||||
 | 
					            </field> | 
				
			||||
 | 
					        </record> | 
				
			||||
 | 
					    </data> | 
				
			||||
 | 
					</odoo> | 
				
			||||