| @ -0,0 +1,46 @@ | |||||
|  | .. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg | ||||
|  |     :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html | ||||
|  |     :alt: License: AGPL-3 | ||||
|  | 
 | ||||
|  | Franchise Management | ||||
|  | ==================== | ||||
|  | This module helps to manage franchise in odoo. | ||||
|  | 
 | ||||
|  | Configuration | ||||
|  | ============= | ||||
|  | * No additional configurations needed | ||||
|  | 
 | ||||
|  | Company | ||||
|  | ------- | ||||
|  | * `Cybrosys Techno Solutions <https://cybrosys.com/>`__ | ||||
|  | 
 | ||||
|  | License | ||||
|  | ------- | ||||
|  | Affero General Public License v3.0 (AGPL v3) | ||||
|  | (https://www.gnu.org/licenses/agpl-3.0-standalone.html) | ||||
|  | 
 | ||||
|  | Credits | ||||
|  | ------- | ||||
|  | * Developer: (V16) Jumana Jabin MK, 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,24 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | from . import controllers | ||||
|  | from . import models | ||||
|  | from . import wizard | ||||
| @ -0,0 +1,79 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | { | ||||
|  |     'name': 'Franchise Management', | ||||
|  |     'version': '16.0.1.0.0', | ||||
|  |     'category': 'Marketing', | ||||
|  |     'summary': 'This Module will help to manage franchisees and dealers.', | ||||
|  |     'description': """This module helps to manage the franchise in odoo. | ||||
|  |      A franchise is a type of license that grants a franchisee access,thus  | ||||
|  |      allowing the franchisee to sell a product or service under the  | ||||
|  |      franchises business name.""", | ||||
|  |     'author': 'Cybrosys Techno Solutions', | ||||
|  |     'company': 'Cybrosys Techno Solutions', | ||||
|  |     'maintainer': 'Cybrosys Techno Solutions', | ||||
|  |     'website': 'https://www.cybrosys.com', | ||||
|  |     'depends': ['product', 'website_sale', 'contacts'], | ||||
|  |     'data': [ | ||||
|  |         'security/franchise_management_security.xml', | ||||
|  |         'security/ir.model.access.csv', | ||||
|  |         'report/franchise_dealership_contract_templates.xml', | ||||
|  |         'report/franchise_management_report.xml', | ||||
|  |         'report/franchise_report_templates.xml', | ||||
|  |         'report/dealer_based_templates.xml', | ||||
|  |         'report/dealer_sale_report_templates.xml', | ||||
|  |         'report/dealer_sale_based_templates.xml', | ||||
|  |         'report/agreement_based_templates.xml', | ||||
|  |         'report/dealer_sale_on_agreement_templates.xml', | ||||
|  |         'data/ir_sequence_data.xml', | ||||
|  |         'data/contract_email_data.xml', | ||||
|  |         'data/franchise_contract_data.xml', | ||||
|  |         'data/contract_renewal_email_data.xml', | ||||
|  |         'data/feedback_email_data.xml', | ||||
|  |         'data/monthly_feedback_cron_data.xml', | ||||
|  |         'data/contract_renewal_cron_data.xml', | ||||
|  |         'wizard/dealer_report_views.xml', | ||||
|  |         'wizard/dealer_sale_report_views.xml', | ||||
|  |         'views/franchise_dealer_views.xml', | ||||
|  |         'views/web_franchise_templates.xml', | ||||
|  |         'views/franchise_agreement_views.xml', | ||||
|  |         'views/approved_dealer_views.xml', | ||||
|  |         'views/res_users_views.xml', | ||||
|  |         'views/franchise_dealer_portal_templates.xml', | ||||
|  |         'views/franchise_dealer_portal_detail_templates.xml', | ||||
|  |         'views/franchise_sales_views.xml', | ||||
|  |         'views/web_franchise_sales_templates.xml', | ||||
|  |         'views/franchise_management_menus.xml', | ||||
|  |     ], | ||||
|  |     'assets': { | ||||
|  |         'web.assets_frontend': [ | ||||
|  |             'franchise_management/static/src/css/website.css', | ||||
|  |             'franchise_management/static/src/js/portalSignatureForm.js', | ||||
|  |             'franchise_management/static/src/js/portalSignature.js', | ||||
|  |         ], | ||||
|  |     }, | ||||
|  |     'images': ['static/description/banner.png'], | ||||
|  |     'license': 'AGPL-3', | ||||
|  |     'installable': True, | ||||
|  |     'auto_install': False, | ||||
|  |     'application': True, | ||||
|  | } | ||||
| @ -0,0 +1,25 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | from . import franchise_customer_portal | ||||
|  | from . import franchise_portal | ||||
|  | from . import web_franchise_dealer | ||||
|  | from . import web_franchise_sale | ||||
| @ -0,0 +1,43 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | """Franchise customer portal controller""" | ||||
|  | from odoo import http | ||||
|  | from odoo.http import request | ||||
|  | from odoo.addons.portal.controllers.portal import CustomerPortal | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class FranchiseCustomerPortal(CustomerPortal): | ||||
|  |     """Franchise Customer portal.""" | ||||
|  | 
 | ||||
|  |     def _prepare_home_portal_values(self, counters): | ||||
|  |         """Preparing franchise count to view in portal.""" | ||||
|  |         values = super(FranchiseCustomerPortal, | ||||
|  |                        self)._prepare_home_portal_values(counters) | ||||
|  |         if request.env.user.has_group( | ||||
|  |                 'franchise_management.dealer_manager_access'): | ||||
|  |             franchise_count = http.request.env[ | ||||
|  |                 'franchise.dealer'].search_count( | ||||
|  |                 [('state', 'in', ('e_contract', 'f_signed', 'g_declined'))]) | ||||
|  |         else: | ||||
|  |             franchise_count = 0 | ||||
|  |         values.update({'franchise_count': franchise_count}) | ||||
|  |         return values | ||||
| @ -0,0 +1,109 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | """Franchise portal controller""" | ||||
|  | import binascii | ||||
|  | from odoo import fields, http, _ | ||||
|  | from odoo.http import request | ||||
|  | from odoo.exceptions import AccessError, MissingError | ||||
|  | from odoo.addons.portal.controllers.mail import _message_post_helper | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class FranchisePortal(http.Controller): | ||||
|  |     """Franchise Portal template.""" | ||||
|  | 
 | ||||
|  |     @http.route(['/my/franchise'], type='http', auth="public", | ||||
|  |                 website=True) | ||||
|  |     def display_franchise_registration(self): | ||||
|  |         """function to display franchise registrations from backend.""" | ||||
|  |         franchise_registration = request.env['franchise.dealer'].sudo().search( | ||||
|  |             [('state', 'in', ('e_contract', 'f_signed', 'g_declined'))]) | ||||
|  |         dealer_dict = {'franchise_registration': franchise_registration, | ||||
|  |                        'page_name': 'franchise_registrations'} | ||||
|  |         return request.render("franchise_management.portal_my_franchise", | ||||
|  |                               dealer_dict) | ||||
|  | 
 | ||||
|  |     @http.route(['/my/franchise/<int:franchise_id>'], type='http', auth="public", | ||||
|  |                 website=True) | ||||
|  |     def portal_sign_page(self, franchise_id): | ||||
|  |         """Franchise Portal Sign Page.""" | ||||
|  |         franchise = request.env['franchise.dealer'].sudo().browse(franchise_id) | ||||
|  |         return request.render("franchise_management.franchise_portal", | ||||
|  |                               {'franchise': franchise, | ||||
|  |                                'page_name': 'registration_details'}) | ||||
|  | 
 | ||||
|  |     @http.route(['/my/franchise/<int:dealer_id>/decline'], type='http', auth="public", | ||||
|  |                 methods=['POST'], website=True, csrf=True) | ||||
|  |     def portal_franchise_decline(self, dealer_id): | ||||
|  |         """Declining the contract sign""" | ||||
|  |         order_sudo = request.env['franchise.dealer'].sudo().browse(dealer_id) | ||||
|  |         order_sudo.contract_declined() | ||||
|  |         return request.redirect(f'my/franchise/{dealer_id}') | ||||
|  | 
 | ||||
|  |     @http.route(['/my/franchise/<int:dealer_id>/accept'], type='json', auth="public", | ||||
|  |                 website=True, csrf=True) | ||||
|  |     def portal_franchise_accept(self, dealer_id, name=None, signature=None, | ||||
|  |                                 access_token=None): | ||||
|  |         """Accepting the contract and signing it.""" | ||||
|  |         access_token = access_token or request.httprequest.args.get( | ||||
|  |             'access_token') | ||||
|  |         try: | ||||
|  |             order_sudo = request.env['franchise.dealer'].sudo().browse(dealer_id) | ||||
|  |         except (AccessError, MissingError): | ||||
|  |             return {'error': _('Invalid order.')} | ||||
|  |         try: | ||||
|  |             order_sudo.write({ | ||||
|  |                 'signed_by': name, | ||||
|  |                 'signed_on': fields.Datetime.now(), | ||||
|  |                 'signature': signature, | ||||
|  |             }) | ||||
|  |             request.env.cr.commit() | ||||
|  |             order_sudo.contract_signed() | ||||
|  |             list_login = request.env['res.users'].sudo().search([]).mapped( | ||||
|  |                 'login') | ||||
|  |             # Check if the dealer's mail is not in the list_login | ||||
|  |             if order_sudo.dealer_mail not in list_login: | ||||
|  |                 order_sudo.create_portal_user() | ||||
|  |                 order_sudo._send_order_confirmation_mail() | ||||
|  |                 order_sudo.dealer_portal_user.is_dealer_user = True | ||||
|  |             if order_sudo.dealer_mail in list_login: | ||||
|  |                 franchise_users_id = request.env['res.users'].sudo().search([ | ||||
|  |                     ('login', '=', order_sudo.dealer_mail)]) | ||||
|  |                 order_sudo.dealer_portal_user = franchise_users_id | ||||
|  |         except (TypeError, binascii.Error) as e: | ||||
|  |             return {'error': _('Invalid signature data.')} | ||||
|  |         signed_pdf = request.env['ir.actions.report'].sudo()._render_qweb_pdf( | ||||
|  |             'franchise_management.franchise_contract_report_action', | ||||
|  |             [order_sudo.id])[0] | ||||
|  |         _message_post_helper( | ||||
|  |             'franchise.dealer', | ||||
|  |             order_sudo.id, | ||||
|  |             _('Order signed by %s', name), | ||||
|  |             attachments=[('%s.signed_pdf' % order_sudo.dealer_name, | ||||
|  |                           signed_pdf)], | ||||
|  |             token=access_token, | ||||
|  |         ) | ||||
|  |         query_string = "&message=sign_ok" | ||||
|  |         return { | ||||
|  |             'force_refresh': True, | ||||
|  |             'redirect_url': order_sudo.get_portal_url( | ||||
|  |                 query_string=query_string), | ||||
|  |         } | ||||
| @ -0,0 +1,76 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | """Franchise dealer controller""" | ||||
|  | from odoo import http | ||||
|  | from odoo.http import request | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class FranchiseDealer(http.Controller): | ||||
|  |     """Franchise dealer controller.""" | ||||
|  | 
 | ||||
|  |     @http.route(['/franchise_menu'], type='http', auth="public", website=True) | ||||
|  |     def dealer_create(self): | ||||
|  |         """Creating a dealer form  in website.""" | ||||
|  |         state_rec = request.env['res.country.state'].sudo().search([]) | ||||
|  |         country_rec = request.env['res.country'].sudo().search([]) | ||||
|  |         franchise_agreement_rec = request.env[ | ||||
|  |             'franchise.agreement'].sudo().search([]) | ||||
|  |         return http.request.render("franchise_management.tmpl_dealer_request", | ||||
|  |                                    { | ||||
|  |                                        'state_rec': state_rec, | ||||
|  |                                        'country_rec': country_rec, | ||||
|  |                                        'franchise_agreement_rec': | ||||
|  |                                            franchise_agreement_rec, | ||||
|  |                                    }) | ||||
|  | 
 | ||||
|  |     @http.route(['/franchise_menu/form/submit'], type='http', auth="public", | ||||
|  |                 website=True) | ||||
|  |     def franchise_form_submit(self, **post): | ||||
|  |         """Website dealer form submit function.""" | ||||
|  |         order = request.env['franchise.dealer'].sudo().create({ | ||||
|  |             'dealer_name': post.get('franchisee_name'), | ||||
|  |             'dealer_mobile': post.get('dealer_mobile') or '', | ||||
|  |             'dealer_phone': post.get('dealer_phone') or '', | ||||
|  |             'dealer_mail': post.get('franchisee_email') or '', | ||||
|  |             'dealer_website': post.get('dealer_website') or '', | ||||
|  |             'street': post.get('street') or '', | ||||
|  |             'city': post.get('city') or '', | ||||
|  |             'country_id': post.get('country_id'), | ||||
|  |             'zip': post.get('zip') or '', | ||||
|  |             'state_id': post.get('state_id'), | ||||
|  |             'dealer_occupation': post.get('dealer_occupation') or '', | ||||
|  |             'dealer_qualification': post.get('dealer_qualification') or '', | ||||
|  |             'contract_type_id': post.get('contract_type_id'), | ||||
|  |             'monthly_target_amount': post.get('monthly_target_amount'), | ||||
|  |             'business_city': post.get('business_city'), | ||||
|  |             'business_country': post.get('business_country'), | ||||
|  |             'experience': post.get('experience') or '', | ||||
|  |             'site_area': post.get('site_area') or '', | ||||
|  |             'site_type': post.get('site_type') or '', | ||||
|  |             'site_location': post.get('site_location'), | ||||
|  |             'investment_from': post.get('investment_from'), | ||||
|  |             'investment_to': post.get('investment_to'), | ||||
|  |             'advertisement': post.get('advertisement') | ||||
|  |         }) | ||||
|  |         vals = {'order': order} | ||||
|  |         return request.render("franchise_management.website_success_page", | ||||
|  |                               vals) | ||||
| @ -0,0 +1,71 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | from odoo import http | ||||
|  | from odoo.http import request | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class DealerMonthlySaleReport(http.Controller): | ||||
|  |     """Franchise dealer monthly feedback about the product sale.""" | ||||
|  | 
 | ||||
|  |     @http.route(['/feedback_report_menu'], type='http', auth="public", | ||||
|  |                 website=True) | ||||
|  |     def dealer_feedback_form(self, **post): | ||||
|  |         """Creating a dealer feedback form in website.""" | ||||
|  |         franchise_dealer_rec = request.env['res.users'].sudo().search( | ||||
|  |             [('is_dealer_user', '=', True)]) | ||||
|  |         franchise_agreement_rec = request.env[ | ||||
|  |             'franchise.agreement'].sudo().search([]) | ||||
|  |         values = { | ||||
|  |             'franchise_agreement_rec': franchise_agreement_rec, | ||||
|  |             'franchise_dealer_rec': franchise_dealer_rec, | ||||
|  |         } | ||||
|  |         if post.get('id'): | ||||
|  |             values['current_franchise'] = request.env[ | ||||
|  |                 'franchise.dealer'].sudo().browse( | ||||
|  |                 int(post.get('id'))) | ||||
|  |         user = request.env['res.users'].sudo().search( | ||||
|  |             [('id', '=', int(request.env.user.id))]) | ||||
|  |         if user.is_dealer_user: | ||||
|  |             values['user_data'] = request.env[ | ||||
|  |                 'franchise.dealer'].sudo().search( | ||||
|  |                 [('dealer_portal_user.id', '=', request.env.user.id)]) | ||||
|  |         return http.request.render( | ||||
|  |             "franchise_management.tmpl_dealer_feedback", values) | ||||
|  | 
 | ||||
|  |     @http.route(['/dealer_feedback_menu/form/submit'], type='http', | ||||
|  |                 auth="public", website=True) | ||||
|  |     def franchise_form_submit(self, **post): | ||||
|  |         """Website dealer form submit function.""" | ||||
|  |         order = request.env['dealer.sale'].sudo().create({ | ||||
|  |             'dealer_id': post.get('dealer_id'), | ||||
|  |             'franchise_reference': post.get('franchise_reference') or '', | ||||
|  |             'dealer_agreement_id': post.get('dealer_agreement_id'), | ||||
|  |             'sale_quantity': post.get('sale_quantity'), | ||||
|  |             'scrap_quantity': post.get('scrap_quantity'), | ||||
|  |             'total_sale_amount': post.get('total_sale_amount'), | ||||
|  |             'discount_percentage': post.get('discount_percentage'), | ||||
|  |             'monthly_target_amount': post.get('monthly_target_amount'), | ||||
|  |             'monthly_target_gained': post.get('monthly_target_gained'), | ||||
|  |         }) | ||||
|  |         vals = {'order': order} | ||||
|  |         return request.render("franchise_management.feedback_success_page", | ||||
|  |                               vals) | ||||
| @ -0,0 +1,56 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  |     <data noupdate="1"> | ||||
|  |     <!--Dealership contract email data--> | ||||
|  |        <record id="contract_email_template" model="mail.template"> | ||||
|  |            <field name="name">DEALERSHIP CONTRACT</field> | ||||
|  |            <field name="model_id" ref="franchise_management.model_franchise_dealer"/> | ||||
|  |            <field name="email_from">{{object.company_id.email}}</field> | ||||
|  |            <field name="email_to"/> | ||||
|  |            <field name="lang">{{ ctx.get('default_lang') }}</field> | ||||
|  |            <field name="subject">Dealership Contract</field> | ||||
|  |            <field name="body_html" type="html"> | ||||
|  |                <p> | ||||
|  |                    Hi,<br/> | ||||
|  |                    Congratulations<br/> | ||||
|  |                    You are approved for the Dealership with us.<br/> | ||||
|  |                    Make sure you submit your request form completely, and<br/> | ||||
|  |                    Please read carefully the pdf contract attached here and <br/> | ||||
|  |                    if you are agree with our terms and conditions <br/> | ||||
|  |                    Please sign the contract below for the further procedures.<br/> | ||||
|  |                    You can sign digitally through the button link given here. | ||||
|  |                    <br/><br/> | ||||
|  |                </p> | ||||
|  |                <div><br/> | ||||
|  |                     <a style="background-color:#875A7B; | ||||
|  |                        padding:8px 20px 8px 20px; | ||||
|  |                        text-decoration:none; color:#fff;  border-style:solid; | ||||
|  |                        display:inline-block; | ||||
|  |                        border-radius:5px; font-weight:bold; font-style:normal; | ||||
|  |                        line-height:26px; width:auto; text-align:center" | ||||
|  |                      t-attf-href="{{object.url}}">Sign and confirm</a> | ||||
|  |                </div> | ||||
|  |            </field> | ||||
|  |        </record> | ||||
|  |     <!--Dealer Notification email template--> | ||||
|  |        <record id="portal_user_email_template" model="mail.template"> | ||||
|  |            <field name="name">Login Details</field> | ||||
|  |            <field name="model_id" ref="franchise_management.model_franchise_dealer"/> | ||||
|  |            <field name="email_from">{{object.company_id.email}}</field> | ||||
|  |            <field name="email_to"/> | ||||
|  |            <field name="lang">{{ ctx.get('default_lang') }}</field> | ||||
|  |            <field name="subject">Franchise Login Details</field> | ||||
|  |            <field name="body_html" type="html"> | ||||
|  |                <p> | ||||
|  |                    Hi, | ||||
|  |                    Congratulations<br/> | ||||
|  |                    You are successfully signed our dealership contract.<br/> | ||||
|  |                    And now you can log in to our website using the email and password.<br/> | ||||
|  |                    email : user email address given in the franchise registration.<br/> | ||||
|  |                    password : franchise00129 | ||||
|  |                     <br/><br/> | ||||
|  |                </p> | ||||
|  |            </field> | ||||
|  |        </record> | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,17 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  |     <data noupdate="1"> | ||||
|  | <!--Contract Renewal Action--> | ||||
|  |        <record id="contract_renewal_scheduler_action" model="ir.cron"> | ||||
|  |            <field name="name">Franchise Contract Renewal</field> | ||||
|  |            <field name="model_id" ref="model_franchise_dealer"/> | ||||
|  |            <field name="state">code</field> | ||||
|  |            <field name="code">model.action_send_contract_renewal()</field> | ||||
|  |            <field name="user_id" ref="base.user_root"/> | ||||
|  |            <field name="interval_number">1</field> | ||||
|  |            <field name="interval_type">days</field> | ||||
|  |            <field name="numbercall">-1</field> | ||||
|  |            <field name="doall" eval="False"/> | ||||
|  |        </record> | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,33 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  | <!--Contract renewal email template data--> | ||||
|  |     <data noupdate="1"> | ||||
|  |        <record id="contract_renewal_email_template" model="mail.template"> | ||||
|  |            <field name="name">CONTRACT RENEWAL</field> | ||||
|  |            <field name="model_id" | ||||
|  |                   ref="franchise_management.model_franchise_dealer"/> | ||||
|  |            <field name="email_from">{{object.company_id.email}}</field> | ||||
|  |            <field name="email_to"/> | ||||
|  |            <field name="lang">{{ ctx.get('default_lang') }}</field> | ||||
|  |            <field name="subject">Contract Renewal</field> | ||||
|  |            <field name="body_html" type="html"> | ||||
|  |                <p> | ||||
|  |                    Hi,<br/> | ||||
|  |                    Your Franchise dealership contract has expired,<br/> | ||||
|  |                    Please renew your dealership contract in order to continue | ||||
|  |                    the services.<br/><br/> | ||||
|  |                    Thanks and Regards<br/> | ||||
|  |                </p> | ||||
|  |                <div><br/> | ||||
|  |                     <a style="background-color:#875A7B; | ||||
|  |                        padding:8px 20px 8px 20px; | ||||
|  |                        text-decoration:none; color:#fff;  border-style:solid; | ||||
|  |                        display:inline-block; | ||||
|  |                        border-radius:5px; font-weight:bold; font-style:normal; | ||||
|  |                        line-height:26px; width:auto; text-align:center" | ||||
|  |                      t-attf-href="{{object.url}}">Sign and confirm</a> | ||||
|  |                </div> | ||||
|  |            </field> | ||||
|  |        </record> | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,34 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  | <!--Franchise sales feedback email template data--> | ||||
|  |     <data noupdate="1"> | ||||
|  |        <record id="feedback_email_template" model="mail.template"> | ||||
|  |            <field name="name">SALES FEEDBACK</field> | ||||
|  |            <field name="model_id" | ||||
|  |                   ref="franchise_management.model_franchise_dealer"/> | ||||
|  |            <field name="email_from">{{object.company_id.email}}</field> | ||||
|  |            <field name="email_to"/> | ||||
|  |            <field name="lang">{{ ctx.get('default_lang') }}</field> | ||||
|  |            <field name="subject">Monthly Sales Feedback</field> | ||||
|  |            <field name="body_html" type="html"> | ||||
|  |                <p> | ||||
|  |                    Hi,<br/> | ||||
|  |                    Please submit monthly feedback report about the sales of the | ||||
|  |                    product, which you owned through the dealership. <br/> | ||||
|  |                    Please mention your monthly business target, achieved | ||||
|  |                    target, and the total sales done .<br/> | ||||
|  |                </p> | ||||
|  |                <div><br/> | ||||
|  |                    <a style="background-color:#875A7B; | ||||
|  |                    padding:8px 20px 8px 20px; | ||||
|  |                    text-decoration:none; color:#fff;  border-style:solid; | ||||
|  |                    display:inline-block; | ||||
|  |                    border-radius:5px; font-weight:bold; font-style:normal; | ||||
|  |                    line-height:26px; width:auto; text-align:center" | ||||
|  |                    t-attf-href="{{object.feedback_url}}">Submit Feedback</a> | ||||
|  |                    <br/> | ||||
|  |                </div> | ||||
|  |            </field> | ||||
|  |        </record> | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,88 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo> | ||||
|  |     <!-- Franchise contract --> | ||||
|  |     <record id="yearly_franchise_contract" model="franchise.agreement"> | ||||
|  |         <field name="agreement_type">yearly</field> | ||||
|  |         <field name="agreement_body"> | ||||
|  |             <![CDATA[ | ||||
|  |                     <h1>Yearly Franchise Agreement</h1> | ||||
|  |                     <p>This Franchise Agreement ("Agreement") is made and entered into as of <strong>January 1, 2024</strong>, by and between <strong>Franchise Corp</strong>, a company organized and existing under the laws of <strong>State</strong> with its principal office located at <strong>123 Franchise Ave, City, State</strong> ("Franchisor"), and <strong>John Doe</strong>, located at <strong>456 Partner St, City, State</strong> ("Franchisee").</p> | ||||
|  | 
 | ||||
|  |                     <h2>1. Grant of Franchise</h2> | ||||
|  |                     <p>The Franchisor hereby grants to the Franchisee the right, and the Franchisee undertakes the obligation, to operate a franchise under the Franchisor’s brand and system, using the Franchisor's trademarks, trade names, service marks, logos, and commercial symbols (the "Marks").</p> | ||||
|  | 
 | ||||
|  |                     <h2>2. Term</h2> | ||||
|  |                     <p>This Agreement shall commence on the effective date and shall continue for a term of one year, subject to renewal as provided herein.</p> | ||||
|  | 
 | ||||
|  |                     <h2>3. Fees</h2> | ||||
|  |                     <p>The Franchisee shall pay to the Franchisor an initial franchise fee of <strong>$10,000</strong> and an ongoing royalty fee of <strong>5%</strong> of the Franchisee's gross revenue.</p> | ||||
|  | 
 | ||||
|  |                     <h2>4. Duties of Franchisee</h2> | ||||
|  |                     <ul> | ||||
|  |                         <li>Operate the franchise in compliance with the Franchisor’s standards and specifications.</li> | ||||
|  |                         <li>Maintain the quality and image of the Franchisor’s brand.</li> | ||||
|  |                         <li>Participate in all required training programs.</li> | ||||
|  |                     </ul> | ||||
|  | 
 | ||||
|  |                     <h2>5. Confidentiality</h2> | ||||
|  |                     <p>The Franchisee agrees to maintain the confidentiality of all proprietary information provided by the Franchisor.</p> | ||||
|  | 
 | ||||
|  |                     <h2>6. Termination</h2> | ||||
|  |                     <p>This Agreement may be terminated by either party upon thirty (30) days' written notice to the other party in the event of a breach of any provision of this Agreement.</p> | ||||
|  | 
 | ||||
|  |                     <h2>7. Governing Law</h2> | ||||
|  |                     <p>This Agreement shall be governed by and construed in accordance with the laws of the State of [State].</p> | ||||
|  | 
 | ||||
|  |                     <h2>8. Entire Agreement</h2> | ||||
|  |                     <p>This Agreement constitutes the entire agreement between the parties and supersedes all prior agreements and understandings, whether written or oral, relating to the subject matter hereof.</p> | ||||
|  | 
 | ||||
|  |                     <p>IN WITNESS WHEREOF, the parties hereto have executed this Agreement as of the day and year first above written.</p> | ||||
|  | 
 | ||||
|  |                     <p>____________________________<br>Franchisor Representative</p> | ||||
|  |                     <p>____________________________<br>John Doe, Franchisee</p> | ||||
|  |                 ]]> | ||||
|  |         </field> | ||||
|  |     </record> | ||||
|  |     <record id="monthly_franchise_contract" model="franchise.agreement"> | ||||
|  |         <field name="agreement_type">monthly</field> | ||||
|  |         <field name="agreement_body"> | ||||
|  |             <![CDATA[ | ||||
|  |                     <h1>Monthly Franchise Agreement</h1> | ||||
|  |                     <p>This Franchise Agreement ("Agreement") is made and entered into as of <strong>May 1, 2024</strong>, by and between <strong>Franchise Corp</strong>, a company organized and existing under the laws of <strong>State</strong> with its principal office located at <strong>123 Franchise Ave, City, State</strong> ("Franchisor"), and <strong>John Doe</strong>, located at <strong>456 Partner St, City, State</strong> ("Franchisee").</p> | ||||
|  | 
 | ||||
|  |                     <h2>1. Grant of Franchise</h2> | ||||
|  |                     <p>The Franchisor hereby grants to the Franchisee the right, and the Franchisee undertakes the obligation, to operate a franchise under the Franchisor’s brand and system, using the Franchisor's trademarks, trade names, service marks, logos, and commercial symbols (the "Marks").</p> | ||||
|  | 
 | ||||
|  |                     <h2>2. Term</h2> | ||||
|  |                     <p>This Agreement shall commence on the effective date and shall continue for a term of one month, subject to renewal as provided herein.</p> | ||||
|  | 
 | ||||
|  |                     <h2>3. Fees</h2> | ||||
|  |                     <p>The Franchisee shall pay to the Franchisor an initial franchise fee of <strong>$1,000</strong> and an ongoing royalty fee of <strong>5%</strong> of the Franchisee's gross revenue.</p> | ||||
|  | 
 | ||||
|  |                     <h2>4. Duties of Franchisee</h2> | ||||
|  |                     <ul> | ||||
|  |                         <li>Operate the franchise in compliance with the Franchisor’s standards and specifications.</li> | ||||
|  |                         <li>Maintain the quality and image of the Franchisor’s brand.</li> | ||||
|  |                         <li>Participate in all required training programs.</li> | ||||
|  |                     </ul> | ||||
|  | 
 | ||||
|  |                     <h2>5. Confidentiality</h2> | ||||
|  |                     <p>The Franchisee agrees to maintain the confidentiality of all proprietary information provided by the Franchisor.</p> | ||||
|  | 
 | ||||
|  |                     <h2>6. Termination</h2> | ||||
|  |                     <p>This Agreement may be terminated by either party upon seven (7) days' written notice to the other party in the event of a breach of any provision of this Agreement.</p> | ||||
|  | 
 | ||||
|  |                     <h2>7. Governing Law</h2> | ||||
|  |                     <p>This Agreement shall be governed by and construed in accordance with the laws of the State of [State].</p> | ||||
|  | 
 | ||||
|  |                     <h2>8. Entire Agreement</h2> | ||||
|  |                     <p>This Agreement constitutes the entire agreement between the parties and supersedes all prior agreements and understandings, whether written or oral, relating to the subject matter hereof.</p> | ||||
|  | 
 | ||||
|  |                     <p>IN WITNESS WHEREOF, the parties hereto have executed this Agreement as of the day and year first above written.</p> | ||||
|  | 
 | ||||
|  |                     <p>____________________________<br>Franchisor Representative</p> | ||||
|  |                     <p>____________________________<br>John Doe, Franchisee</p> | ||||
|  |                 ]]> | ||||
|  |         </field> | ||||
|  |     </record> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,21 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo noupdate="1"> | ||||
|  | <!--Sequence number for franchise dealer--> | ||||
|  |     <record id="seq_dealer" model="ir.sequence"> | ||||
|  |         <field name="name">Franchise Dealer</field> | ||||
|  |         <field name="code">franchise.dealer</field> | ||||
|  |         <field name="prefix">DL</field> | ||||
|  |         <field name="padding">5</field> | ||||
|  |         <field name="company_id" eval="False"/> | ||||
|  |         <field name="number_increment">1</field> | ||||
|  |     </record> | ||||
|  | <!--Sequence number for franchise feedback--> | ||||
|  |     <record id="sequence_feedback" model="ir.sequence"> | ||||
|  |         <field name="name">Franchise Feedback</field> | ||||
|  |         <field name="code">dealer.sale</field> | ||||
|  |         <field name="prefix">FS</field> | ||||
|  |         <field name="padding">5</field> | ||||
|  |         <field name="company_id" eval="False"/> | ||||
|  |         <field name="number_increment">1</field> | ||||
|  |     </record> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,17 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  | <!--Monthly sales feedback scheduled action--> | ||||
|  |     <data noupdate="1"> | ||||
|  |        <record id="monthly_sales_feedback_scheduler_recurring_action" model="ir.cron"> | ||||
|  |            <field name="name">Monthly Franchise Sales Feedback</field> | ||||
|  |            <field name="model_id" ref="model_franchise_dealer"/> | ||||
|  |            <field name="state">code</field> | ||||
|  |            <field name="code">model.action_send_feedback()</field> | ||||
|  |            <field name="user_id" ref="base.user_root"/> | ||||
|  |            <field name="interval_number">1</field> | ||||
|  |            <field name="interval_type">months</field> | ||||
|  |            <field name="numbercall">-1</field> | ||||
|  |            <field name="doall" eval="False"/> | ||||
|  |        </record> | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,6 @@ | |||||
|  | ## Module <franchise_management> | ||||
|  | 
 | ||||
|  | #### 20.05.2024 | ||||
|  | #### Version 16.0.1.0.0 | ||||
|  | #### ADD | ||||
|  | - Initial commit for Franchise Management | ||||
| @ -0,0 +1,26 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | from . import business_experience | ||||
|  | from . import franchise_agreement | ||||
|  | from . import franchise_dealer | ||||
|  | from . import franchise_sales | ||||
|  | from . import res_users | ||||
| @ -0,0 +1,37 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | """Business Experience model""" | ||||
|  | from odoo import fields, models | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class BusinessExperience(models.Model): | ||||
|  |     """Business experience inverse model.""" | ||||
|  |     _name = 'business.experience' | ||||
|  |     _description = 'Business Experience' | ||||
|  | 
 | ||||
|  |     experience_name = fields.Char(string='Experience', | ||||
|  |                                   help='Business Experience') | ||||
|  |     from_date = fields.Date(string='From Date', help='Experience start Date') | ||||
|  |     to_date = fields.Date(string='To Date', help='Experience To Date') | ||||
|  |     experience_id = fields.Many2one('franchise.dealer', | ||||
|  |                                     help='Inverse field for Business' | ||||
|  |                                          ' Experience model') | ||||
| @ -0,0 +1,40 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | """Franchise Dealer Agreement Model""" | ||||
|  | from odoo import fields, models | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class FranchiseAgreement(models.Model): | ||||
|  |     """Franchise Agreement Model.""" | ||||
|  |     _name = "franchise.agreement" | ||||
|  |     _description = "Franchise Agreement Type." | ||||
|  |     _inherit = ['mail.thread', 'mail.activity.mixin'] | ||||
|  |     _rec_name = "agreement_type" | ||||
|  | 
 | ||||
|  |     agreement_type = fields.Selection( | ||||
|  |         [('monthly', 'Monthly'), ('yearly', 'Yearly')], | ||||
|  |         string='Agreement Type', | ||||
|  |         help='Franchise Agreement type') | ||||
|  |     agreement_body = fields.Html(string='Agreement Body', render_engine='qweb', | ||||
|  |                                  translate=True, | ||||
|  |                                  help='Franchise Agreement contents', | ||||
|  |                                  prefetch=True, sanitize=False) | ||||
| @ -0,0 +1,337 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | """Franchise Dealer Model""" | ||||
|  | import base64 | ||||
|  | from datetime import datetime, timedelta | ||||
|  | from odoo import api, fields, models, SUPERUSER_ID,_ | ||||
|  | from odoo.exceptions import ValidationError, UserError | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class FranchiseDealer(models.Model): | ||||
|  |     """Franchise Dealer Model.""" | ||||
|  |     _name = "franchise.dealer" | ||||
|  |     _inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin', | ||||
|  |                 'utm.mixin'] | ||||
|  |     _description = "Dealers" | ||||
|  |     _rec_name = "dealer_name" | ||||
|  | 
 | ||||
|  |     serial_no = fields.Char(string="Sl No", readonly=True, copy=False, | ||||
|  |                             default='New', help='Record serial no') | ||||
|  |     dealer_name = fields.Char(string='Franchisee Name', help='Franchisee Name') | ||||
|  |     dealer_user_id = fields.Many2one('res.users', string="user", | ||||
|  |                                      help='User') | ||||
|  |     street = fields.Char(string="Street", help='Street1 Name') | ||||
|  |     street2 = fields.Char(string="Street2", help='Street2 Name') | ||||
|  |     zip = fields.Char(change_default=True, string='Zip code', | ||||
|  |                       help='Franchisee Zip code') | ||||
|  |     city = fields.Char(string='City', help='City Name') | ||||
|  |     state_id = fields.Many2one("res.country.state", string='State', | ||||
|  |                                ondelete='restrict', help='Franchisee state', | ||||
|  |                                domain="[('country_id', '=?', country_id)]") | ||||
|  |     country_id = fields.Many2one('res.country', string='Country', | ||||
|  |                                  help='Franchisee Country', | ||||
|  |                                  ondelete='restrict') | ||||
|  |     country_code = fields.Char(related='country_id.code', | ||||
|  |                                string="Country Code", | ||||
|  |                                help='Franchisee Country code') | ||||
|  |     dealer_qualification = fields.Char(string='Qualification', | ||||
|  |                                        help='Franchise Qualification') | ||||
|  |     dealer_occupation = fields.Char(string='Current Occupation', | ||||
|  |                                     help='Franchisee Occupation') | ||||
|  |     dealer_phone = fields.Char(string='Phone', help='Franchise Phone') | ||||
|  |     dealer_mobile = fields.Char(string='Mobile', help='Mobile number') | ||||
|  |     dealer_mail = fields.Char(string='Email', required=True, | ||||
|  |                               help='Franchise email') | ||||
|  |     dealer_website = fields.Char(string='Website', help='Franchisee Website') | ||||
|  |     advertisement = fields.Selection( | ||||
|  |         selection=[('advertisement', 'Advertisement'), | ||||
|  |                    ('area_sales_manager', 'Area Sales Manager'), | ||||
|  |                    ('regional_manager', 'Regional Manager'), | ||||
|  |                    ('others', 'Others')], | ||||
|  |         string='Advertisement', | ||||
|  |         help='Dealer Vacancy Known Through', | ||||
|  |         default='advertisement') | ||||
|  |     business_city = fields.Char(string='City Interested in', | ||||
|  |                                 help='City Interested to Franchise') | ||||
|  |     business_country = fields.Many2one('res.country', | ||||
|  |                                        string='Country Interested in', | ||||
|  |                                        help='Country Interested to Franchise', | ||||
|  |                                        ondelete='restrict') | ||||
|  |     experience = fields.Text(string='Experience in this Business', | ||||
|  |                              help='Experience in this Business') | ||||
|  |     earnings = fields.Char(string='Last year Earnings', | ||||
|  |                            help='Last year earnings in the business') | ||||
|  |     business_experience_ids = fields.One2many('business.experience', | ||||
|  |                                               'experience_id', | ||||
|  |                                               string='Experience', | ||||
|  |                                               help='Business Experience') | ||||
|  |     site_location = fields.Char(string='Site Location', | ||||
|  |                                 help='Business Site location') | ||||
|  |     site_type = fields.Selection( | ||||
|  |         selection=[('owned', 'Owned'), ('rented', 'Rented'), | ||||
|  |                    ('leased', 'Leased'), ('others', 'Others')], | ||||
|  |         string='Site Type', default='owned', help='Business Site Type') | ||||
|  |     site_area = fields.Float(string='Total Area(in sq/ft)', | ||||
|  |                              help='Total site area in sq ft') | ||||
|  |     investment_from = fields.Float(string='From', help='Investment From') | ||||
|  |     investment_to = fields.Float(string='To', help='Investment To') | ||||
|  |     company_id = fields.Many2one('res.company', string='Company', | ||||
|  |                                  help='Company Name', | ||||
|  |                                  change_default=True, | ||||
|  |                                  default=lambda self: self.env.company, | ||||
|  |                                  required=False) | ||||
|  |     user_id = fields.Many2one('res.users', string='Responsible', | ||||
|  |                               help='Responsible User', | ||||
|  |                               default=lambda self: self.env.user) | ||||
|  |     url = fields.Char(string='url', help='url to website') | ||||
|  |     feedback_url = fields.Char(string='Feedback url', | ||||
|  |                                help='Feedback Url to feedback form') | ||||
|  |     signature = fields.Image(string="Signature", copy=False, attachment=True, | ||||
|  |                              help='Franchise Dealer Signature', | ||||
|  |                              max_width=1024, max_height=1024) | ||||
|  |     signed_by = fields.Char(string="Signed By", copy=False, | ||||
|  |                             help='Franchise Contract Signed By') | ||||
|  |     signed_on = fields.Date(string="Signed On", copy=False, | ||||
|  |                             help='Franchise Contract Signed On') | ||||
|  |     contract_renewal_date = fields.Date(string="Renewal Date", store=True, | ||||
|  |                                         help='Contract Renewal Date', | ||||
|  |                                         compute='_compute_renewal_date') | ||||
|  |     priority = fields.Selection( | ||||
|  |         selection=[('0', 'Low'), ('1', 'Medium'), | ||||
|  |                    ('2', 'High'), ('3', 'Very High')], | ||||
|  |         default='0', help='Prioritise the dealer', | ||||
|  |         index=True, string="Priority", tracking=True) | ||||
|  |     dealer_portal_user = fields.Many2one('res.users', | ||||
|  |                                          string='Portal User Name', | ||||
|  |                                          help='Dealer Portal User Name') | ||||
|  |     monthly_target_amount = fields.Float(string='Monthly Target Amount', | ||||
|  |                                          required=True, | ||||
|  |                                          help='Franchise Monthly Target Amount') | ||||
|  |     state = fields.Selection( | ||||
|  |         selection=[('a_draft', 'Draft'), ('b_to_approve', 'To Approve'), | ||||
|  |                    ('c_approve', 'Approved'), ('d_cancel', 'Rejected'), | ||||
|  |                    ('e_contract', 'Contract Proposal'), | ||||
|  |                    ('g_declined', 'Declined'), | ||||
|  |                    ('f_signed', 'Contract Signed'), | ||||
|  |                    ('h_feedback', 'Feedback Sent') | ||||
|  |                    ], | ||||
|  |         string='Status', help='Status', required=True, readonly=True, | ||||
|  |         copy=False, tracking=True, default='a_draft') | ||||
|  |     # contract | ||||
|  |     contract_type_id = fields.Many2one('franchise.agreement', | ||||
|  |                                        string='Agreement Type', | ||||
|  |                                        required=True, | ||||
|  |                                        help='Franchise Agreement Type') | ||||
|  |     body_html = fields.Html(string='Body', render_engine='qweb', | ||||
|  |                             translate=True, prefetch=True, sanitize=False, | ||||
|  |                             compute="_compute_body_html", | ||||
|  |                             help='Franchise Agreement Body', | ||||
|  |                             inverse="_inverse_contract", store=True) | ||||
|  | 
 | ||||
|  |     @api.constrains('monthly_target_amount') | ||||
|  |     def _monthly_target_amount(self): | ||||
|  |         """ Constraint to validate the number of featured blogs. | ||||
|  |             Raises: ValidationError: If more than three blogs are added.""" | ||||
|  |         if self.monthly_target_amount == 0.00: | ||||
|  |             raise UserError(_('Please enter the monthly target amount.')) | ||||
|  | 
 | ||||
|  |     @api.depends('contract_type_id') | ||||
|  |     def _compute_body_html(self): | ||||
|  |         """Contract type computation function.""" | ||||
|  |         for rec in self: | ||||
|  |             rec.body_html = rec.contract_type_id.agreement_body | ||||
|  | 
 | ||||
|  |     def _inverse_contract(self): | ||||
|  |         """Inverse function to make the compute field editable""" | ||||
|  |         self.body_html = self.body_html | ||||
|  | 
 | ||||
|  |     def _compute_renewal_date(self): | ||||
|  |         """Franchise dealer contract renewal date computation function.""" | ||||
|  |         for record in self: | ||||
|  |             record.contract_renewal_date = 0 | ||||
|  |             if record.signed_on: | ||||
|  |                 if record.contract_type_id.agreement_type == 'yearly': | ||||
|  |                     record.contract_renewal_date = (record.signed_on + | ||||
|  |                                                     timedelta(days=365)) | ||||
|  |                 if record.contract_type_id.agreement_type == 'monthly': | ||||
|  |                     record.contract_renewal_date = (record.signed_on + | ||||
|  |                                                     timedelta(days=30)) | ||||
|  |             else: | ||||
|  |                 record.contract_renewal_date = 0 | ||||
|  | 
 | ||||
|  |     # EXTENDS portal portal.mixin | ||||
|  |     def _compute_access_url(self): | ||||
|  |         """Compute url in portal mixin.""" | ||||
|  |         super()._compute_access_url() | ||||
|  |         for move in self: | ||||
|  |             move.access_url = '/my/franchise/%s' % (move.id) | ||||
|  | 
 | ||||
|  |     @api.model_create_multi | ||||
|  |     def create(self, vals_list): | ||||
|  |         """Franchise dealer model sequence create method.""" | ||||
|  |         for vals in vals_list: | ||||
|  |             if vals.get('serial_no', _("New")) == _("New"): | ||||
|  |                 vals['serial_no'] = self.env['ir.sequence'].next_by_code( | ||||
|  |                     'franchise.dealer') or 'New' | ||||
|  |             if vals.get('contract_type_id', False): | ||||
|  |                 vals['body_html'] = self.env['franchise.agreement'].browse( | ||||
|  |                     int(vals['contract_type_id'])).agreement_body | ||||
|  |             result = super(FranchiseDealer, self).create(vals) | ||||
|  |             return result | ||||
|  | 
 | ||||
|  |     def action_confirm(self): | ||||
|  |         """Function of confirm button.""" | ||||
|  |         self.write({'state': "b_to_approve"}) | ||||
|  | 
 | ||||
|  |     def action_approve(self): | ||||
|  |         """Function of approve button.""" | ||||
|  |         self.write({'state': "c_approve"}) | ||||
|  | 
 | ||||
|  |     def action_cancel(self): | ||||
|  |         """Function of cancel button.""" | ||||
|  |         self.write({'state': "d_cancel"}) | ||||
|  | 
 | ||||
|  |     def contract_signed(self): | ||||
|  |         """Function of contract sign button.""" | ||||
|  |         self.write({'state': "f_signed"}) | ||||
|  | 
 | ||||
|  |     def contract_declined(self): | ||||
|  |         """Function of reject_sign button in website portal.""" | ||||
|  |         self.write({'state': "g_declined"}) | ||||
|  | 
 | ||||
|  |     def action_send_contract(self): | ||||
|  |         """Contract send on button function.""" | ||||
|  |         base_url = str(self.get_base_url()) + str("/@/my/franchise/") + str( | ||||
|  |             self.id) | ||||
|  |         self.url = base_url | ||||
|  |         self.write({'state': "e_contract"}) | ||||
|  |         template = self.env.ref('franchise_management.contract_email_template') | ||||
|  |         self.argument_function(template) | ||||
|  |         return True | ||||
|  | 
 | ||||
|  |     def action_send_contract_renewal(self): | ||||
|  |         """Contract renewal schedule action.""" | ||||
|  |         today_renewals = self.env['franchise.dealer'].search( | ||||
|  |             [('contract_renewal_date', '=', datetime.today().date())]) | ||||
|  |         if today_renewals: | ||||
|  |             for i in today_renewals: | ||||
|  |                 template = self.env.ref( | ||||
|  |                     'franchise_management.contract_renewal_email_template') | ||||
|  |                 self.argument_function(template) | ||||
|  |                 return True | ||||
|  | 
 | ||||
|  |     def argument_function(self, template): | ||||
|  |         """Contract send and renewal argument function.""" | ||||
|  |         current_dealer_order = self.env['franchise.dealer'].browse(self.id) | ||||
|  |         email_values = {'email_to': current_dealer_order.dealer_mail, } | ||||
|  |         form_data = { | ||||
|  |             'data': current_dealer_order, | ||||
|  |         } | ||||
|  |         report_template_id = self.env.ref( | ||||
|  |             'franchise_management.franchise_contract_report_action' | ||||
|  |         )._render_qweb_pdf( | ||||
|  |             'franchise_management.franchise_contract_report_action', self.id, | ||||
|  |             data=form_data) | ||||
|  |         data_record = base64.b64encode(report_template_id[0]) | ||||
|  |         ir_values = { | ||||
|  |             'name': "Dealership Contract", | ||||
|  |             'type': 'binary', | ||||
|  |             'datas': data_record, | ||||
|  |             'store_fname': data_record, | ||||
|  |             'mimetype': 'application/x-pdf', | ||||
|  |         } | ||||
|  |         data_id = self.env['ir.attachment'].create(ir_values) | ||||
|  |         template.attachment_ids = [(6, 0, [data_id.id])] | ||||
|  |         template.send_mail(self.id, email_values=email_values, force_send=True) | ||||
|  |         template.attachment_ids = [(3, data_id.id)] | ||||
|  | 
 | ||||
|  |     def _get_confirmation_template(self): | ||||
|  |         """ Get the mail template sent on SO confirmation (or for confirmed | ||||
|  |         Sales).:return: `mail.template` record or None if default template | ||||
|  |         wasn't found""" | ||||
|  |         return self.env.ref('franchise_management.portal_user_email_template', | ||||
|  |                             raise_if_not_found=False) | ||||
|  | 
 | ||||
|  |     def _send_order_confirmation_mail(self): | ||||
|  |         """Dealer request confirmation mail after signing the contract.""" | ||||
|  |         if not self: | ||||
|  |             return | ||||
|  |         if self.env.su: | ||||
|  |             # sending mail in sudo was meant for it being sent from superuser | ||||
|  |             self = self.with_user(SUPERUSER_ID) | ||||
|  |         for record in self: | ||||
|  |             mail_template = record._get_confirmation_template() | ||||
|  |             if not mail_template: | ||||
|  |                 continue | ||||
|  |             record.with_context(force_send=True).message_post_with_template( | ||||
|  |                 mail_template.id, | ||||
|  |                 composition_mode='comment', | ||||
|  |             ) | ||||
|  | 
 | ||||
|  |     def create_portal_user(self): | ||||
|  |         """After contract signed,the dealer created as portal user.""" | ||||
|  |         user = self.env['res.users'].create({ | ||||
|  |             'name': self.dealer_name, | ||||
|  |             'login': self.dealer_mail, | ||||
|  |             'email': self.dealer_mail, | ||||
|  |             'phone': self.dealer_phone, | ||||
|  |             'website': self.dealer_website, | ||||
|  |             'password': 'franchise00129', | ||||
|  |             'street': self.street, | ||||
|  |             'zip': self.zip, | ||||
|  |             'groups_id': [(4, self.env.ref('base.group_portal').id)] | ||||
|  |         }) | ||||
|  |         self.dealer_portal_user = user.id | ||||
|  |         return user | ||||
|  | 
 | ||||
|  |     def action_preview_dealer_order(self): | ||||
|  |         """Dealer portal preview from backend.""" | ||||
|  |         return { | ||||
|  |             'type': 'ir.actions.act_url', | ||||
|  |             'target': 'self', | ||||
|  |             'url': self.url, | ||||
|  |         } | ||||
|  | 
 | ||||
|  |     def action_dealer_feedback(self): | ||||
|  |         """Dealer sale feedback smart button to view feedback report | ||||
|  |          of the product""" | ||||
|  |         feedback_ids = self.env['dealer.sale'].search([ | ||||
|  |             ('dealer_id', '=', self.id)]).ids | ||||
|  |         return { | ||||
|  |             'type': 'ir.actions.act_window', | ||||
|  |             'name': 'Dealership feedback', | ||||
|  |             'view_mode': 'tree,form', | ||||
|  |             'res_model': 'dealer.sale', | ||||
|  |             'domain': [('id', 'in', feedback_ids)], | ||||
|  |             'context': "{'create': False}" | ||||
|  |         } | ||||
|  | 
 | ||||
|  |     def action_send_feedback(self): | ||||
|  |         """Method to send franchise feedback""" | ||||
|  |         base_url = str(self.get_base_url()) + str( | ||||
|  |             "/@/feedback_report_menu?id=") + str(self.id) | ||||
|  |         self.feedback_url = base_url | ||||
|  |         current_dealer_order = self.env['franchise.dealer'].browse(self.id) | ||||
|  |         email_values = {'email_to': current_dealer_order.dealer_mail, } | ||||
|  |         template = self.env.ref('franchise_management.feedback_email_template') | ||||
|  |         template.send_mail(self.id, email_values=email_values, force_send=True) | ||||
|  |         return True | ||||
| @ -0,0 +1,80 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | """Franchise feedback form""" | ||||
|  | from odoo import api, fields, models, _ | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class DealerSale(models.Model): | ||||
|  |     """Franchise Dealer Monthly Sales Feedback.""" | ||||
|  |     _name = "dealer.sale" | ||||
|  |     _inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin', | ||||
|  |                 'utm.mixin'] | ||||
|  |     _description = "Dealer Sales" | ||||
|  |     _rec_name = "dealer_id" | ||||
|  | 
 | ||||
|  |     serial_no = fields.Char(string="Sl No", help='Serial no', readonly=True, | ||||
|  |                             copy=False, default='New') | ||||
|  |     dealer_id = fields.Many2one('franchise.dealer', | ||||
|  |                                 string="Franchise Dealer", | ||||
|  |                                 help='Franchise dealer name') | ||||
|  |     franchise_reference = fields.Char(string="Franchise Reference", | ||||
|  |                                       readonly=True, | ||||
|  |                                       help='Franchise Reference Number') | ||||
|  |     dealer_mail = fields.Char(string='mail', help='Franchise Dealer email') | ||||
|  |     dealer_agreement_id = fields.Many2one('franchise.agreement', | ||||
|  |                                           string="Franchise agreement type", | ||||
|  |                                           help='Franchise Agreement Type') | ||||
|  |     dealership_signed_on = fields.Date(string='Dealership Signed on', | ||||
|  |                                        readonly=True, | ||||
|  |                                        help='Dealership Contract Signed on') | ||||
|  |     sale_quantity = fields.Integer(string="Sale Quantity", | ||||
|  |                                    help='Total Sale Quantity') | ||||
|  |     scrap_quantity = fields.Integer(string="Scrap Quantity", | ||||
|  |                                     help='Total Scrap Quantity') | ||||
|  |     total_sale_amount = fields.Float(string="Sale Amount", | ||||
|  |                                      help='Total Sale Amount') | ||||
|  |     discount_percentage = fields.Float(string="Discount Given in(%)", | ||||
|  |                                        help='Discount Given in(%)') | ||||
|  |     monthly_target_amount = fields.Float(string="Monthly Target", | ||||
|  |                                          help='Monthly Target Amount') | ||||
|  |     monthly_target_gained = fields.Float(string="Monthly Target Gained in (%)", | ||||
|  |                                          help='Monthly Target Gained in (%)') | ||||
|  |     state = fields.Selection(selection=[('a_to_verify', 'To Verify'), | ||||
|  |                                         ('b_verified', 'Verified')], | ||||
|  |                              string='Status', required=True, | ||||
|  |                              help='Status of the Franchise Registration', | ||||
|  |                              readonly=True, copy=False, | ||||
|  |                              tracking=True, default='a_to_verify') | ||||
|  | 
 | ||||
|  |     def action_verify_sale(self): | ||||
|  |         """Method to verify the sales feedback""" | ||||
|  |         self.write({'state': "b_verified"}) | ||||
|  | 
 | ||||
|  |     @api.model_create_multi | ||||
|  |     def create(self, vals_list): | ||||
|  |         """Method to create Franchise dealer sales record sequences.""" | ||||
|  |         for vals in vals_list: | ||||
|  |             if vals.get('serial_no', _("New")) == _("New"): | ||||
|  |                 vals['serial_no'] = self.env['ir.sequence'].next_by_code( | ||||
|  |                     'dealer.sale') or 'New' | ||||
|  |             result = super(DealerSale, self).create(vals) | ||||
|  |             return result | ||||
| @ -0,0 +1,32 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################# | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Jumana Jabin MK(<https://www.cybrosys.com>) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################# | ||||
|  | """Res Users Inherited model""" | ||||
|  | from odoo import fields, models | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class ResUsers(models.Model): | ||||
|  |     """Inherited the res_users model to add a boolean field to ensure | ||||
|  |         a dealer after contract signed.""" | ||||
|  |     _inherit = 'res.users' | ||||
|  | 
 | ||||
|  |     is_dealer_user = fields.Boolean(string='Is Dealer', | ||||
|  |                                     help='Dealer User identification field') | ||||
| @ -0,0 +1,94 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  |     <!--Agreement based report template--> | ||||
|  |     <template id="agreement_based_report_pdf"> | ||||
|  |         <t t-call="web.html_container"> | ||||
|  |             <t t-call="web.external_layout"> | ||||
|  |                 <div class="page"> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <h1 style="font-size:35px"> | ||||
|  |                             <b>FRANCHISE LIST</b> | ||||
|  |                         </h1> | ||||
|  |                     </div> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <t t-if="form_data.get('agreement_id')"> | ||||
|  |                             <h2 style="font-size:25px"> | ||||
|  |                                 <b> | ||||
|  |                                     <t t-esc="form_data['agreement_id'][1]"/> | ||||
|  |                                 </b> | ||||
|  |                             </h2> | ||||
|  |                         </t> | ||||
|  |                     </div> | ||||
|  |                     <br/> | ||||
|  |                     <br/> | ||||
|  |                     <t t-if="form_data.get('from_date')"> | ||||
|  |                         From Date : | ||||
|  |                         <t t-esc="form_data['from_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/> | ||||
|  |                     <br/> | ||||
|  |                     <t t-if="form_data.get('to_date')"> | ||||
|  |                         To Date : | ||||
|  |                         <t t-esc="form_data['to_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/> | ||||
|  |                     <br/> | ||||
|  |                     <div class="row"> | ||||
|  |                         <table class="table"> | ||||
|  |                             <thead> | ||||
|  |                                 <tr> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Sl.no</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Reference</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Franchises Name</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Signed On</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>City Interested</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Investment From</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Investment To</strong> | ||||
|  |                                     </th> | ||||
|  |                                 </tr> | ||||
|  |                             </thead> | ||||
|  |                             <t t-foreach="fetch_agreement_details" t-as="line"> | ||||
|  |                                 <tr> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line_index+1"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['serial_no']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['name']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['signed_on']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['business_city']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['investment_from']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['investment_to']"/> | ||||
|  |                                     </td> | ||||
|  |                                 </tr> | ||||
|  |                             </t> | ||||
|  |                         </table> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </t> | ||||
|  |         </t> | ||||
|  |     </template> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,73 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  | <!--Dealer based report pdf template--> | ||||
|  |     <template id="dealer_based_report_pdf"> | ||||
|  |         <t t-call="web.html_container"> | ||||
|  |             <t t-call="web.external_layout"> | ||||
|  |                 <div class="page"> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <h1 style="font-size:35px"> | ||||
|  |                             <b>FRANCHISE LIST</b> | ||||
|  |                         </h1> | ||||
|  |                     </div> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <t t-if="form_data.get('dealer_id')"> | ||||
|  |                             <h2 style="font-size:25px"> | ||||
|  |                                 <b><t t-esc="form_data['dealer_id'][1]"/></b> | ||||
|  |                             </h2> | ||||
|  |                         </t> | ||||
|  |                     </div><br/><br/> | ||||
|  |                     <t t-if="form_data.get('from_date')"> | ||||
|  |                         From Date : | ||||
|  |                         <t t-esc="form_data['from_date']"/> | ||||
|  |                     </t><br/><br/> | ||||
|  |                     <t t-if="form_data.get('to_date')"> | ||||
|  |                         To Date : | ||||
|  |                         <t t-esc="form_data['to_date']"/> | ||||
|  |                     </t><br/><br/> | ||||
|  |                     <div class="row"> | ||||
|  |                         <table class="table"> | ||||
|  |                             <thead> | ||||
|  |                                 <tr> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Sl.no</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Reference</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Signed On</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Franchise Agreement</strong> | ||||
|  |                                     </th> | ||||
|  | 
 | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>City Interested</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Investment From</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Investment To</strong> | ||||
|  |                                     </th> | ||||
|  |                                 </tr> | ||||
|  |                             </thead> | ||||
|  |                             <t t-foreach="fetch_dealer_details" t-as="line"> | ||||
|  |                                 <tr> | ||||
|  |                                 <td><span t-esc="line_index+1"/></td> | ||||
|  |                                 <td><span t-esc="line['serial_no']"/></td> | ||||
|  |                                 <td><span t-esc="line['signed_on']"/></td> | ||||
|  |                                 <td><span t-esc="line['agreement_type']"/></td> | ||||
|  |                                 <td><span t-esc="line['business_city']"/></td> | ||||
|  |                                 <td><span t-esc="line['investment_from']"/></td> | ||||
|  |                                 <td><span t-esc="line['investment_to']"/></td> | ||||
|  |                                 </tr> | ||||
|  |                             </t> | ||||
|  |                         </table> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </t> | ||||
|  |         </t> | ||||
|  |     </template> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,94 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  |     <!--Sale feedback report on dealer based--> | ||||
|  |     <template id="dealer_sale_on_dealer_report_pdf"> | ||||
|  |         <t t-call="web.html_container"> | ||||
|  |             <t t-call="web.external_layout"> | ||||
|  |                 <div class="page"> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <h1 style="font-size:35px"> | ||||
|  |                             <b>Franchise Sale List</b> | ||||
|  |                         </h1> | ||||
|  |                     </div> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <t t-if="form_data.get('dealer_id')"> | ||||
|  |                             <h2 style="font-size:25px"> | ||||
|  |                                 <b> | ||||
|  |                                     <t t-esc="form_data['dealer_id'][1]"/> | ||||
|  |                                 </b> | ||||
|  |                             </h2> | ||||
|  |                         </t> | ||||
|  |                     </div> | ||||
|  |                     <br/> | ||||
|  |                     <br/> | ||||
|  |                     <t t-if="form_data.get('from_date')"> | ||||
|  |                         From Date : | ||||
|  |                         <t t-esc="form_data['from_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/> | ||||
|  |                     <br/> | ||||
|  |                     <t t-if="form_data.get('to_date')"> | ||||
|  |                         To Date : | ||||
|  |                         <t t-esc="form_data['to_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/> | ||||
|  |                     <br/> | ||||
|  |                     <div class="row"> | ||||
|  |                         <table class="table"> | ||||
|  |                             <thead> | ||||
|  |                                 <tr> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Sl.no</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Agreement Type</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Signed on</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Monthly Target</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Total Sale Amount</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Sale qty</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Target Gained</strong> | ||||
|  |                                     </th> | ||||
|  |                                 </tr> | ||||
|  |                             </thead> | ||||
|  |                             <t t-foreach="fetch_dealer_details" t-as="line"> | ||||
|  |                                 <tr> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line_index+1"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['agreement_type']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['dealership_signed_on']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['monthly_target_amount']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['total_sale_amount']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['sale_quantity']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['monthly_target_gained']"/> | ||||
|  |                                     </td> | ||||
|  |                                 </tr> | ||||
|  |                             </t> | ||||
|  |                         </table> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </t> | ||||
|  |         </t> | ||||
|  |     </template> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,95 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  |     <!--Dealer sale report on agreement based--> | ||||
|  |     <template id="dealer_sale_on_agreement_report_pdf"> | ||||
|  |         <t t-call="web.html_container"> | ||||
|  |             <t t-call="web.external_layout"> | ||||
|  |                 <div class="page"> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <h1 style="font-size:35px"> | ||||
|  |                             <b>Franchise Sale List</b> | ||||
|  |                         </h1> | ||||
|  |                     </div> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <t t-if="form_data.get('agreement_id')"> | ||||
|  |                             <h2 style="font-size:25px"> | ||||
|  |                                 <b> | ||||
|  |                                     <t t-esc="form_data['agreement_id'][1]"/> | ||||
|  |                                 </b> | ||||
|  |                             </h2> | ||||
|  |                         </t> | ||||
|  |                     </div> | ||||
|  |                     <br/> | ||||
|  |                     <br/> | ||||
|  |                     <t t-if="form_data.get('from_date')"> | ||||
|  |                         From Date : | ||||
|  |                         <t t-esc="form_data['from_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/> | ||||
|  |                     <br/> | ||||
|  |                     <t t-if="form_data.get('to_date')"> | ||||
|  |                         To Date : | ||||
|  |                         <t t-esc="form_data['to_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/> | ||||
|  |                     <br/> | ||||
|  |                     <div class="row"> | ||||
|  |                         <table class="table"> | ||||
|  |                             <thead> | ||||
|  |                                 <tr> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Sl.no</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Franchise Dealer</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Signed on</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Monthly Target</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Total Sale Amount</strong> | ||||
|  |                                     </th> | ||||
|  | 
 | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Sale qty</strong> | ||||
|  |                                     </th> | ||||
|  |                                     <th width="10px"> | ||||
|  |                                         <strong>Target Gained</strong> | ||||
|  |                                     </th> | ||||
|  |                                 </tr> | ||||
|  |                             </thead> | ||||
|  |                             <t t-foreach="fetch_agreement_details" t-as="line"> | ||||
|  |                                 <tr> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line_index+1"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['dealer_name']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['dealership_signed_on']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['monthly_target_amount']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['total_sale_amount']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['sale_quantity']"/> | ||||
|  |                                     </td> | ||||
|  |                                     <td> | ||||
|  |                                         <span t-esc="line['monthly_target_gained']"/> | ||||
|  |                                     </td> | ||||
|  |                                 </tr> | ||||
|  |                             </t> | ||||
|  |                         </table> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </t> | ||||
|  |         </t> | ||||
|  |     </template> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,83 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  | <!--All dealer sales report--> | ||||
|  |     <template id="all_dealer_sale_report_pdf"> | ||||
|  |         <t t-call="web.html_container"> | ||||
|  |             <t t-call="web.external_layout"> | ||||
|  |                 <div class="page"> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <h1 style="font-size:35px"><b>Dealer Sale List</b></h1> | ||||
|  |                     </div> | ||||
|  |                     <br/><br/> | ||||
|  |                     <t t-if="form_data.get('from_date')"> | ||||
|  |                         From Date : | ||||
|  |                         <t t-esc="form_data['from_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/><br/> | ||||
|  |                     <t t-if="form_data.get('to_date')"> | ||||
|  |                         To Date : | ||||
|  |                         <t t-esc="form_data['to_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/><br/> | ||||
|  |                     <div class="row"> | ||||
|  |                     <table class="table"> | ||||
|  |                         <thead> | ||||
|  |                             <tr> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Sl.no</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Dealer Name</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Agreement</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Total Sale Qty</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Total Sale Amount</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Scrap Qty</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Target Amount</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Target Gained</strong> | ||||
|  |                                 </th> | ||||
|  |                             </tr> | ||||
|  |                         </thead> | ||||
|  |                         <t t-foreach="fetch_all_details" t-as="line"> | ||||
|  |                             <tr> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line_index+1"/> | ||||
|  |                                 </td> | ||||
|  |                                  <td> | ||||
|  |                                     <span t-esc="line['dealer_name']"/> | ||||
|  |                                 </td> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line['sale_quantity']"/> | ||||
|  |                                 </td> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line['total_sale_amount']"/> | ||||
|  |                                 </td> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line['scrap_quantity']"/> | ||||
|  |                                 </td> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line['monthly_target_amount']"/> | ||||
|  |                                 </td> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line['monthly_target_gained']"/> | ||||
|  |                                 </td> | ||||
|  |                             </tr> | ||||
|  |                         </t> | ||||
|  |                     </table> | ||||
|  |                 </div> | ||||
|  |                 </div> | ||||
|  |             </t> | ||||
|  |         </t> | ||||
|  |     </template> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,935 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  | <!--Franchise Dealership Report contract template--> | ||||
|  |     <template id="franchise_dealership_contract_template"> | ||||
|  |         <t t-call="web.html_container"> | ||||
|  |             <t t-call="web.external_layout"> | ||||
|  |                 <div class="page"> | ||||
|  |                     <div class="row mt64 mb32"> | ||||
|  |                         <div class="col-md-12"> | ||||
|  |                             <h2 class="text-center" style="font-size:35px"> | ||||
|  |                                 <b> | ||||
|  |                                     <span>DEALERSHIP CONTRACT</span> | ||||
|  |                                 </b> | ||||
|  |                             </h2> | ||||
|  |                             <p> | ||||
|  |                                 <br/> | ||||
|  |                                 As a prospective account, you must provide | ||||
|  |                                 the following: | ||||
|  |                                 <br/> | ||||
|  |                                 1. Completed and signed dealer application. | ||||
|  |                                 <br/> | ||||
|  |                                 2. Copy of your Certificate of Liability | ||||
|  |                                 Insurance for your business. | ||||
|  |                                 <br/> | ||||
|  |                                 3. Copy of state sales tax certificate or | ||||
|  |                                 resale certificate. | ||||
|  |                                 <br/> | ||||
|  |                                 4. Copy of business license and/or | ||||
|  |                                 occupational license. | ||||
|  |                                 <br/> | ||||
|  |                                 5. A brief summary (1 paragraph) of your | ||||
|  |                                 company’s business products and strategy. | ||||
|  |                                 <br/> | ||||
|  |                                 6. Photos of your retail/commercial business | ||||
|  |                                 location: including storefront with | ||||
|  |                                 signage, merchandising, and the service | ||||
|  |                                 repair area if available. | ||||
|  |                                 <br/> | ||||
|  |                                 7. A current advertisement with your company | ||||
|  |                                 name. | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  | 
 | ||||
|  |                                 Thank you for your interest in establishing | ||||
|  |                                 a dealer account with us. | ||||
|  |                                 Our friendly, knowledgeable customer support | ||||
|  |                                 team will guide you through the process. | ||||
|  |                                 Please complete the application and initial | ||||
|  |                                 each page; keep in mind that incomplete | ||||
|  |                                 paperwork can delay your application. | ||||
|  |                                 <br/> | ||||
|  |                                 We are dedicated to serving our dealers and | ||||
|  |                                 to ensure we protect them; | ||||
|  |                                 your business must operate as a | ||||
|  |                                 brick-and-mortar business. | ||||
|  |                                 Internet sales are only approved through the | ||||
|  |                                 dealers’ webpage and will not be | ||||
|  |                                 permitted to sell on eBay or any other | ||||
|  |                                 auction, or discount site. | ||||
|  |                                 To be considered a brick and mortar | ||||
|  |                                 business, your shop must be: | ||||
|  |                                 <br/> | ||||
|  |                                 1. Clearly identifiable as a retail shop | ||||
|  |                                 with dedication to the servicing your | ||||
|  |                                 customers. | ||||
|  |                                 <br/> | ||||
|  |                                 2. Committed to maintaining our standards. | ||||
|  |                                 <br/> | ||||
|  |                                 a) All dealer candidates must demonstrate | ||||
|  |                                 the ability to conduct themselves in an | ||||
|  |                                 ethical, professional and courteous manner | ||||
|  |                                 with our throughout the application | ||||
|  |                                 process and thereafter. | ||||
|  |                                 <br/> | ||||
|  |                                 b) Web, Mail Order, Mobile repair accounts | ||||
|  |                                 must have a physical retail location that | ||||
|  |                                 allows the business to serve its customers | ||||
|  |                                 during regular business hours. | ||||
|  |                                 <br/> | ||||
|  |                                 c) All our dealers are to service our | ||||
|  |                                 products and customers regardless of point | ||||
|  |                                 of purchase. | ||||
|  |                                 <br/> | ||||
|  |                                 d) Controllers, batteries, motors and | ||||
|  |                                 chargers will need to be sent back to us for | ||||
|  |                                 testing if replaced under warranty. | ||||
|  |                                 <br/> | ||||
|  |                                 e) We only pays for labor for the first 30 | ||||
|  |                                 days at the listed rates in the dealer | ||||
|  |                                 agreement. | ||||
|  |                                 Any charges over the listed rates will need | ||||
|  |                                 to be authorized in advance by us. (Exhibit | ||||
|  |                                 C.) | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  | 
 | ||||
|  |                                 Please submit your signed, completed | ||||
|  |                                 application and required additional | ||||
|  |                                 documents | ||||
|  |                                 to: sales@odoo.com or you may fax them to | ||||
|  |                                 954-974-6729. | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 We reserves the right to close an account if | ||||
|  |                                 the dealer fails to comply with any part | ||||
|  |                                 spelled out in this agreement, including | ||||
|  |                                 failure to provide true or complete | ||||
|  |                                 information on this application. | ||||
|  |                                 <br/> | ||||
|  |                                 Date offered via Fax or Email ___________, | ||||
|  |                                 20___ | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                             </p> | ||||
|  |                             <br/> | ||||
|  |                             <br/> | ||||
|  |                             <h2 class="text-center" style="font-size:35px"> | ||||
|  |                                 <b> | ||||
|  |                                     <span>Authorized Dealer Agreement</span> | ||||
|  |                                 </b> | ||||
|  |                             </h2> | ||||
|  |                             <p> | ||||
|  |                                 <br/> | ||||
|  |                                 This AGREEMENT, to become effective | ||||
|  |                                 ______________, 20___ (hereafter called | ||||
|  |                                 "Agreement") | ||||
|  |                                 between us at 1201 NE 38th St suite B1 Ft. | ||||
|  |                                 Lauderdale, Fl 33334, | ||||
|  |                                 and _________________________________ | ||||
|  |                                 (hereafter called “Dealer”) located at the | ||||
|  |                                 above | ||||
|  |                                 address for the retail sale and servicing of | ||||
|  |                                 our products covered by this “Agreement”. | ||||
|  |                                 <br/> | ||||
|  |                                 <b>I. Purpose of this “Agreement”</b>– To | ||||
|  |                                 establish “Dealer” as an authorized | ||||
|  |                                 reseller/service | ||||
|  |                                 center for us with the non-exclusive right | ||||
|  |                                 to sell and service a selection of our | ||||
|  |                                 products | ||||
|  |                                 (list of products authorized for resale is | ||||
|  |                                 attached as Exhibit A. Part 1. hereafter | ||||
|  |                                 called “Products”) | ||||
|  |                                 in the trade area served by “Dealer” and to | ||||
|  |                                 establish the responsibilities of the | ||||
|  |                                 parties. | ||||
|  |                                 The trade area will consist of the | ||||
|  |                                 authorized territory and sales channels set | ||||
|  |                                 forth. | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 <b>II. Terms of Sale</b> | ||||
|  |                                 <br/> | ||||
|  |                                 Product Cost – The price to “Dealer” for | ||||
|  |                                 “Products” shall follow our current standard | ||||
|  |                                 USA Domestic | ||||
|  |                                 Product price list as shown in Exhibit A. | ||||
|  |                                 Part 2. we have the right to change the | ||||
|  |                                 “Products” offering, | ||||
|  |                                 the terms and MSRP pricing at any time and | ||||
|  |                                 will give notice to “Dealer” of such changes | ||||
|  |                                 prior to the | ||||
|  |                                 effective date of change. | ||||
|  |                                 <br/> | ||||
|  |                                 MAP Pricing – “Dealer” must adhere to the | ||||
|  |                                 MAP pricing for advertisements and follow | ||||
|  |                                 our | ||||
|  |                                 MAP pricing as shown in Exhibit A. | ||||
|  |                                 “Dealer’s” whom do not follow MAP pricing | ||||
|  |                                 will have | ||||
|  |                                 their account terminated and be in default | ||||
|  |                                 of the agreement. | ||||
|  |                                 <br/> | ||||
|  |                                 Territory and Sales Channels -“Dealer” is | ||||
|  |                                 authorized to sell “Products” in the | ||||
|  |                                 following territory and channels: | ||||
|  |                                 <br/> | ||||
|  |                                 Territory: | ||||
|  |                                 ___________________________________________________________________ | ||||
|  |                                 <br/> | ||||
|  |                                 Channels: | ||||
|  |                                 __________________________________________________________________ | ||||
|  |                                 <br/> | ||||
|  |                                 Off limit channels/customers – National | ||||
|  |                                 accounts are exclusive to us and off limits | ||||
|  |                                 to “Dealer” unless approved in | ||||
|  |                                 writing prior to the “Dealer” contacting of | ||||
|  |                                 such accounts. National accounts include USA | ||||
|  |                                 retailers with 25 store | ||||
|  |                                 locations or more throughout USA | ||||
|  |                                 territories, or annual sales in excess of | ||||
|  |                                 $100,000,000 unless approved in writing | ||||
|  |                                 prior to “Dealer” contacting such accounts. | ||||
|  |                                 No ebay advertisements are allowed unless | ||||
|  |                                 specifically approved in writing. | ||||
|  |                                 <br/> | ||||
|  |                                 Internet sales – Internet sales are not | ||||
|  |                                 exclusive to any dealer or dealer and not | ||||
|  |                                 considered part | ||||
|  |                                 of the exclusive zone or sales channels. | ||||
|  |                                 <br/> | ||||
|  |                                 Shipping – FOB , Ft Lauderdale, Florida. | ||||
|  |                                 Products shall be sent by Freight Carrier, | ||||
|  |                                 Federal Express or any other courier at the | ||||
|  |                                 discretion of us unless other means are | ||||
|  |                                 requested by “Dealer”. | ||||
|  |                                 “Dealer” agrees to pay for shipping and | ||||
|  |                                 insurance according to terms of the order. | ||||
|  |                                 <br/> | ||||
|  |                                 Taxes/Duties – Any duties, taxes, | ||||
|  |                                 governmental or broker charges for | ||||
|  |                                 international orders incurred by | ||||
|  |                                 the “Dealer” for their shipments are the | ||||
|  |                                 sole responsibility of the “Dealer”. | ||||
|  |                                 <br/> | ||||
|  |                                 Drop Shipping – “Dealer” shall be approved | ||||
|  |                                 prior to be allowed to drop-ship | ||||
|  |                                 orders and follow prices as shown in Exhibit | ||||
|  |                                 A. part 2, drop-ship pricing column. | ||||
|  |                                 <br></br> | ||||
|  |                                 Payment – Payment for “Products” will be | ||||
|  |                                 pre-paid prior to shipment by us. | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 Any other terms are subject to our written | ||||
|  |                                 agreement. For International orders a 30% | ||||
|  |                                 deposit is required prior to building an | ||||
|  |                                 order and the remainder paid upon | ||||
|  |                                 completion. | ||||
|  |                                 <br/> | ||||
|  |                                 Warranty – “Products” are sold subject to | ||||
|  |                                 the applicable our standard printed warranty | ||||
|  |                                 found in “Products” | ||||
|  |                                 manual enclosed with each product sold and | ||||
|  |                                 attached as Exhibit B. “Dealer” is not | ||||
|  |                                 authorized to accept or commit, | ||||
|  |                                 on our behalf, any liabilities in connection | ||||
|  |                                 with “Dealer's” sale of “Products” other | ||||
|  |                                 than as set | ||||
|  |                                 forth in our standard warranty. | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 <b>III. Authorized Service Center</b> | ||||
|  |                                 <br/> | ||||
|  |                                 At all times during the Term of this | ||||
|  |                                 Agreement, Service Center agrees: | ||||
|  |                                 <br/> | ||||
|  |                                 a. It has, and it shall at all times | ||||
|  |                                 maintain adequate, suitable and clean | ||||
|  |                                 facility, associated tools and equipment, | ||||
|  |                                 all as are necessary to ensure the efficient | ||||
|  |                                 and timely performance by Service Center. | ||||
|  |                                 <br/> | ||||
|  |                                 b. “Appointed Services” means the | ||||
|  |                                 performance of, without limitation, service, | ||||
|  |                                 repair, regular maintenance, | ||||
|  |                                 warranty, recall on our products, regardless | ||||
|  |                                 of point of purchase, including, if | ||||
|  |                                 required, the use of genuine our | ||||
|  |                                 products and parts purchased from us. | ||||
|  |                                 <br/> | ||||
|  |                                 c. To promptly provide, upon our direction, | ||||
|  |                                 any records regarding us in a format as may | ||||
|  |                                 be requested by us, | ||||
|  |                                 to enable us to conduct or issue, without | ||||
|  |                                 limitation, product recalls, safety alerts, | ||||
|  |                                 warranty notices, | ||||
|  |                                 technical service bulletins, or otherwise. | ||||
|  |                                 <br/> | ||||
|  |                                 d. To at all times cooperate and use its | ||||
|  |                                 best efforts to assist us in the | ||||
|  |                                 dissemination and/or the timely | ||||
|  |                                 performance of, without limitation, any | ||||
|  |                                 product safety alerts, recalls, technical | ||||
|  |                                 service bulletins, etc., | ||||
|  |                                 should they arise, or any other information | ||||
|  |                                 as may be requested by us. | ||||
|  |                                 <br/> | ||||
|  |                                 e. It shall procure and at all times | ||||
|  |                                 maintain at its own cost and expense, | ||||
|  |                                 without limitation, | ||||
|  |                                 all current and future required licenses, | ||||
|  |                                 permits and governmental approvals as | ||||
|  |                                 applicable to enable Service Center, | ||||
|  |                                 its facilities, and its Technician(s) to | ||||
|  |                                 lawfully comply with all the sections of | ||||
|  |                                 this Agreement. | ||||
|  |                                 <br/> | ||||
|  |                                 f. Not to install or otherwise use any | ||||
|  |                                 product or part except in strict accordance | ||||
|  |                                 with its intended use/application, | ||||
|  |                                 applicable our instructions, and local, | ||||
|  |                                 state and federal laws where Service Center | ||||
|  |                                 is located or where it performs Services. | ||||
|  |                                 <br/> | ||||
|  |                                 g. To provide it's our customers, with such | ||||
|  |                                 information and/or documentation as we may | ||||
|  |                                 direct from time to time. | ||||
|  |                                 <br/> | ||||
|  |                                 h. To serve as our liaison and promptly | ||||
|  |                                 handle, in coordination with us the | ||||
|  |                                 following, without limitation, | ||||
|  |                                 as we deem appropriate and as it may direct, | ||||
|  |                                 all inquiries, orders and complaints that | ||||
|  |                                 Service Center receives | ||||
|  |                                 regarding our products, including complaints | ||||
|  |                                 regarding Service Center's performance. | ||||
|  |                                 <br/> | ||||
|  |                                 i. It shall not submit any claims, whether | ||||
|  |                                 warranty, recall, or otherwise, to us that | ||||
|  |                                 is not identified as a | ||||
|  |                                 reimbursable cost or charge associated with | ||||
|  |                                 Service Center’s Services, | ||||
|  |                                 or charge customers for any Services that | ||||
|  |                                 have not been first authorized in writing by | ||||
|  |                                 us. | ||||
|  |                                 <br/> | ||||
|  |                                 Prices of “Parts” outside the warranty | ||||
|  |                                 period – The price to “Service | ||||
|  |                                 Center/Dealer” for parts | ||||
|  |                                 outside the warranty coverage shall be equal | ||||
|  |                                 to our current standard US domestic Service | ||||
|  |                                 Center price list | ||||
|  |                                 (Detailed lists per model will be furnished | ||||
|  |                                 upon acceptance of agreement). | ||||
|  |                                 <br/> | ||||
|  |                                 We has the right to change the “Products” | ||||
|  |                                 and “Parts” offering including terms and | ||||
|  |                                 prices at any time. | ||||
|  |                                 We will give notice to “Service Center” of | ||||
|  |                                 such changes prior to the effective date of | ||||
|  |                                 change. | ||||
|  |                                 <br/> | ||||
|  |                             </p> | ||||
|  |                             <br></br> | ||||
|  |                             <p> | ||||
|  |                                 <br/> | ||||
|  |                                 Shipping charges of “Parts” outside the | ||||
|  |                                 warranty period – FOB , Pompano, Florida. | ||||
|  |                                 “Parts” shall be sent by Freight Carrier, | ||||
|  |                                 Federal Express or any other courier at the | ||||
|  |                                 discretion of | ||||
|  |                                 us unless other means are requested by | ||||
|  |                                 “Service Center/Dealer”. | ||||
|  |                                 “Service Center/Dealer” agrees to pay for | ||||
|  |                                 shipping and insurance according to sales | ||||
|  |                                 order/invoice. | ||||
|  |                                 <br/> | ||||
|  |                                 Payment – Payment for “Parts” outside of the | ||||
|  |                                 warranty period will be in full payment | ||||
|  |                                 prior to shipment by us. | ||||
|  |                                 <br/> | ||||
|  |                                 Warranty – “Products” and “Parts” are sold | ||||
|  |                                 subject to the applicable our standard | ||||
|  |                                 printed warranty attached as | ||||
|  |                                 found in “Products” manual enclosed with | ||||
|  |                                 each product sold (a copy of the standard | ||||
|  |                                 warranty is attached as Exhibit B.). | ||||
|  |                                 “Service Center” is not authorized to accept | ||||
|  |                                 or commit, on our behalf, any liabilities in | ||||
|  |                                 connection with | ||||
|  |                                 “Service Center/Dealer” sale of “Products” | ||||
|  |                                 or “Parts” other than as set forth in our | ||||
|  |                                 standard warranty. | ||||
|  |                                 <br/> | ||||
|  |                                 Request for Parts – “Service Center/Dealer” | ||||
|  |                                 will fill out Warranty Part Replacement form | ||||
|  |                                 (attached as Exhibit C.) | ||||
|  |                                 and either email, fax or call our Customer | ||||
|  |                                 Service at 800-943-6190 with the information | ||||
|  |                                 to obtain part replacement. | ||||
|  |                                 <br/> | ||||
|  |                                 Parts and Service – “Dealer” shall encourage | ||||
|  |                                 retail customers to use our original | ||||
|  |                                 equipment parts in their repair | ||||
|  |                                 and replacement of “Products” outside of | ||||
|  |                                 warranty in order to maintain our high | ||||
|  |                                 quality performance. | ||||
|  |                                 We will furnish “Dealer” with warranty parts | ||||
|  |                                 in a timely manner. Upon the situation of an | ||||
|  |                                 original part not being | ||||
|  |                                 available under warranty, we will furnish a | ||||
|  |                                 compatible part of equal or higher quality | ||||
|  |                                 to “Dealer”. | ||||
|  |                                 “Dealer” will send to our parts being | ||||
|  |                                 replaced by warranty issues in a timely | ||||
|  |                                 manner unless written approval by | ||||
|  |                                 our allowing “Dealer’s” request for “Dealer” | ||||
|  |                                 not to return warranty part being replaced. | ||||
|  |                                 <br/> | ||||
|  |                                 Out of Stock – We maintain a complete | ||||
|  |                                 inventory of all parts on hand. In the rare | ||||
|  |                                 occasion a part is not available. | ||||
|  |                                 We will furnish a compatible part of equal | ||||
|  |                                 or higher quality to “Service | ||||
|  |                                 Center/Dealer”. | ||||
|  |                                 <br/> | ||||
|  |                                 Returning of Warranty Covered “Parts” – | ||||
|  |                                 “Service Center/Dealer” will store defective | ||||
|  |                                 “Parts” covered under | ||||
|  |                                 warranty until we request for the parts to | ||||
|  |                                 be sent back to us. | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 <b>IV. Additional Obligations of We and | ||||
|  |                                     “Dealer” | ||||
|  |                                 </b> | ||||
|  |                                 <br/> | ||||
|  |                                 Marketing – We shall furnish “Dealer” with | ||||
|  |                                 Hi Res images and detailed specifications of | ||||
|  |                                 “Products” | ||||
|  |                                 in assisting “Dealer” and their customers | ||||
|  |                                 with the promoting of “Products”. | ||||
|  |                                 “Dealer” shall use its best efforts to | ||||
|  |                                 promote the resale of “Products” to realize | ||||
|  |                                 a maximum sales | ||||
|  |                                 potential for the “Products” in the | ||||
|  |                                 territory and channels. If “Dealer” wishes | ||||
|  |                                 to create its own “single occasion” | ||||
|  |                                 marketing material or issue a “single | ||||
|  |                                 occasion” discounted sale price, “Dealer” | ||||
|  |                                 shall prior to its use of | ||||
|  |                                 such materials or discounts submit examples | ||||
|  |                                 and pricing to us for a written “single | ||||
|  |                                 occasion” approval with date limits. | ||||
|  |                                 Training – “Dealer” will properly train | ||||
|  |                                 sales and service staff on the functions of | ||||
|  |                                 “Products”. | ||||
|  |                                 “Dealer” will make available to its staff | ||||
|  |                                 all manuals, documents, brochures, catalogs, | ||||
|  |                                 videos and support material | ||||
|  |                                 furnished by us for assisting in the sale | ||||
|  |                                 and servicing of “Products”. | ||||
|  |                                 <br/> | ||||
|  |                                 New Locations – If “Dealer” intends to open | ||||
|  |                                 any additional business locations, sales | ||||
|  |                                 channels or service of “Products” | ||||
|  |                                 other than described in Section II under | ||||
|  |                                 Paragraph B of this “Agreement”, “Dealer” | ||||
|  |                                 must initially obtain written approval | ||||
|  |                                 from our prior to “Dealer” offering | ||||
|  |                                 “Products” for sale in new locations. | ||||
|  |                                 <br/> | ||||
|  |                                 Purchasing – “Dealer” shall only purchase | ||||
|  |                                 products shown on Exhibit A of this | ||||
|  |                                 “Agreement” from us. | ||||
|  |                                 We will make available to “Dealer” for | ||||
|  |                                 immediate delivery “Products” in stock and | ||||
|  |                                 on hand in our | ||||
|  |                                 warehouses and storage facilities. We shall | ||||
|  |                                 not hold “Products” from shipping to | ||||
|  |                                 “Dealer” while “Dealer” is in | ||||
|  |                                 compliance with this “Agreement”. | ||||
|  |                                 <br/> | ||||
|  |                                 <b>V. Term and Termination</b> | ||||
|  |                                 <br/> | ||||
|  |                                 The term of this “Agreement” shall be for a | ||||
|  |                                 period of one (1) year, commencing on the | ||||
|  |                                 effective date hereof. | ||||
|  |                                 This “Agreement” shall be automatically | ||||
|  |                                 renewed for successive terms of one (1) year | ||||
|  |                                 each unless either party | ||||
|  |                                 shall give the other notice of non-renewal | ||||
|  |                                 not less than thirty (30) days prior to the | ||||
|  |                                 end of the then current | ||||
|  |                                 term or unless this “Agreement” is otherwise | ||||
|  |                                 terminated as provided herein. Unless | ||||
|  |                                 otherwise provided by applicable | ||||
|  |                                 state law, either party may terminate this | ||||
|  |                                 “Agreement” without cause and for any | ||||
|  |                                 reason, upon not less than thirty (30) | ||||
|  |                                 days written notice given to the other | ||||
|  |                                 party. Nothing contained herein shall | ||||
|  |                                 prevent us from immediately terminating this | ||||
|  |                                 “Agreement” in the event of bankruptcy or | ||||
|  |                                 insolvency of “Dealer”, “Dealer's” failure | ||||
|  |                                 to pay any amounts owing us when due. | ||||
|  |                                 Upon termination for any reason, all amounts | ||||
|  |                                 owed to us will become immediately due and | ||||
|  |                                 payable. This Agreement shall continue | ||||
|  |                                 in full force and effect until the | ||||
|  |                                 indebtedness is paid in full; and all | ||||
|  |                                 representations and warranties and all | ||||
|  |                                 provisions herein for | ||||
|  |                                 indemnity of us (and any other provisions | ||||
|  |                                 herein specified to survive) shall survive | ||||
|  |                                 payment in full of the indebtedness and any | ||||
|  |                                 release or termination of this Agreement. | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 <b>VI. Repurchase</b> | ||||
|  |                                 <br/> | ||||
|  |                                 In the event this “Agreement” is terminated, | ||||
|  |                                 We have a right but not an obligation to | ||||
|  |                                 purchase back from “Dealer” all new, unused, | ||||
|  |                                 current, complete and undamaged “Products” | ||||
|  |                                 at the price of original invoice less any | ||||
|  |                                 applicable discounts or payments made | ||||
|  |                                 thereon | ||||
|  |                                 and less a fifteen (15) % restocking charge, | ||||
|  |                                 computed on “Dealer's” net cost. In | ||||
|  |                                 addition, We have a right but not an | ||||
|  |                                 obligation to | ||||
|  |                                 purchase back “Dealer's” “Products” parts | ||||
|  |                                 subject to such parts being current, unused | ||||
|  |                                 and in a new physical condition and | ||||
|  |                                 appearance, | ||||
|  |                                 including packaging, and suitable for | ||||
|  |                                 reshipment by us to other dealers. We will | ||||
|  |                                 not repurchase parts whose condition may | ||||
|  |                                 have | ||||
|  |                                 deteriorated while in “Dealer’s” inventory. | ||||
|  |                                 The price to be paid or credited to | ||||
|  |                                 “Dealer's” account for such parts will be at | ||||
|  |                                 current | ||||
|  |                                 “Dealer’s” net cost less a fifteen (15) % | ||||
|  |                                 restocking charge. “Dealer” will provide | ||||
|  |                                 invoices showing proof of purchase from us. | ||||
|  |                                 <br/> | ||||
|  |                                 <b>VII. Authorized Dealer, Trademarks and | ||||
|  |                                     Brand Name | ||||
|  |                                 </b> | ||||
|  |                                 <br/> | ||||
|  |                                 “Dealer” is hereby licensed to use our name | ||||
|  |                                 and trademarks in the normal course of | ||||
|  |                                 distributing our “Products” and performing | ||||
|  |                                 related | ||||
|  |                                 services under this “Agreement”. Dealer | ||||
|  |                                 agrees not to use our name as part of | ||||
|  |                                 “Dealer's” name or in any manner which would | ||||
|  |                                 misrepresent | ||||
|  |                                 the relationship between “Dealer” and us. | ||||
|  |                                 “Dealer” may represent itself as an | ||||
|  |                                 "authorized dealer" of us, and may use our | ||||
|  |                                 name and | ||||
|  |                                 “Products” model names in the promoting of | ||||
|  |                                 “Products”. Upon termination of this | ||||
|  |                                 “Agreement”, “Dealer” shall immediately | ||||
|  |                                 cease | ||||
|  |                                 representing itself as a “Dealer” of us and | ||||
|  |                                 shall cease use of all our names, model | ||||
|  |                                 names, trademarks and any signs or other | ||||
|  |                                 material, of whatever nature, identifying | ||||
|  |                                 “Dealer” as a dealer of us shall be removed | ||||
|  |                                 or obliterated. | ||||
|  |                                 <br/> | ||||
|  |                                 <b>VIII. Mutual Indemnities</b> | ||||
|  |                                 <br/> | ||||
|  |                                 Each party shall indemnify and hold the | ||||
|  |                                 other harmless for any losses, claims, | ||||
|  |                                 damages, awards, penalties, | ||||
|  |                                 or injuries incurred by any third party, | ||||
|  |                                 including reasonable attorney's fees, which | ||||
|  |                                 arise from any alleged breach of such | ||||
|  |                                 indemnifying party's representations and | ||||
|  |                                 warranties made under this agreement. The | ||||
|  |                                 indemnifying party shall have the sole right | ||||
|  |                                 to defend such claims at its own expense. | ||||
|  |                                 The other party shall provide, at the | ||||
|  |                                 indemnifying party's expense, such | ||||
|  |                                 assistance in | ||||
|  |                                 investigating and defending such claims as | ||||
|  |                                 the indemnifying party may reasonably | ||||
|  |                                 request. This indemnity shall survive the | ||||
|  |                                 termination | ||||
|  |                                 of this Agreement. | ||||
|  |                                 <br/> | ||||
|  |                             </p> | ||||
|  |                             <br/> | ||||
|  |                             <br/> | ||||
|  |                             <p> | ||||
|  |                                 <b>IX. Confidentiality and Non-Disclosure | ||||
|  |                                     Agreement | ||||
|  |                                 </b> | ||||
|  |                                 <br/> | ||||
|  |                                 We and “Dealer” wish to define the rights | ||||
|  |                                 and obligations of each other with respect | ||||
|  |                                 to their handling and disclosure of | ||||
|  |                                 Confidential | ||||
|  |                                 Information as it pertains to the respective | ||||
|  |                                 business relationship of both we and | ||||
|  |                                 Dealer”. | ||||
|  |                                 <br/> | ||||
|  |                                 We and “Dealer” agrees to the following: | ||||
|  |                                 <br/> | ||||
|  |                                 Confidential Information is any information | ||||
|  |                                 relating to prices for “Products” and | ||||
|  |                                 business practices (including pending or | ||||
|  |                                 potential projects or business opportunities | ||||
|  |                                 of “Dealer”) of either party, whether | ||||
|  |                                 reduced to writing or other tangible | ||||
|  |                                 expression, | ||||
|  |                                 which the disclosing party considers to be | ||||
|  |                                 proprietary and confidential. | ||||
|  |                                 <br/> | ||||
|  |                                 Confidential Information shall include but | ||||
|  |                                 not be limited to terms and pricing, | ||||
|  |                                 technical and other specifications for | ||||
|  |                                 “Products” | ||||
|  |                                 and all information clearly identified as | ||||
|  |                                 confidential. | ||||
|  |                                 <br/> | ||||
|  |                                 Confidential Information will not include | ||||
|  |                                 any information which: | ||||
|  |                                 <br/> | ||||
|  |                                 i) is already known to the receiving party | ||||
|  |                                 prior to the time of disclosure by the | ||||
|  |                                 disclosing party; | ||||
|  |                                 <br/> | ||||
|  |                                 ii) is available or becomes generally | ||||
|  |                                 available to the public other than through a | ||||
|  |                                 breach of “Agreement” by the receiving | ||||
|  |                                 party; | ||||
|  |                                 <br/> | ||||
|  |                                 iii) is acquired or received rightfully and | ||||
|  |                                 without confidential limitation by the | ||||
|  |                                 receiving party from a third party; | ||||
|  |                                 <br/> | ||||
|  |                                 iv) is independently developed by the | ||||
|  |                                 receiving party without breach of Agreement; | ||||
|  |                                 or | ||||
|  |                                 <br/> | ||||
|  |                                 v) the disclosure of which is required by | ||||
|  |                                 law or governmental order. | ||||
|  |                                 If the receiving party becomes legally | ||||
|  |                                 required to disclose Confidential | ||||
|  |                                 Information, | ||||
|  |                                 or any part thereof the receiving party will | ||||
|  |                                 give the disclosing party prompt advance | ||||
|  |                                 notice of such requirement. | ||||
|  |                                 <br/> | ||||
|  |                                 Both parties agree to hold Confidential | ||||
|  |                                 Information in confidence during the term of | ||||
|  |                                 this “Agreement” and for a period of | ||||
|  |                                 two years after termination of this | ||||
|  |                                 “Agreement”. “Dealer” agrees to take all | ||||
|  |                                 reasonable steps to ensure that Confidential | ||||
|  |                                 Information | ||||
|  |                                 is not disclosed or distributed by its | ||||
|  |                                 employees, representatives or agents in | ||||
|  |                                 violation of the terms of this “Agreement”. | ||||
|  |                                 <br/> | ||||
|  |                                 All Confidential Information furnished under | ||||
|  |                                 this Agreement is and shall remain the | ||||
|  |                                 property of us and shall be returned or | ||||
|  |                                 otherwise | ||||
|  |                                 disposed of by the “Dealer” as instructed by | ||||
|  |                                 us promptly upon demand or upon the | ||||
|  |                                 termination or expiration of this Agreement. | ||||
|  |                                 <br/> | ||||
|  |                                 <b>X. General</b> | ||||
|  |                                 <br/> | ||||
|  |                                 “Dealer” is not an agent of us nor is | ||||
|  |                                 “Dealer” authorized to incur any obligations | ||||
|  |                                 or make any representations on behalf of our | ||||
|  |                                 company. | ||||
|  |                                 <br/> | ||||
|  |                                 This “Agreement” is binding on the parties, | ||||
|  |                                 their heirs, executors, administrators, | ||||
|  |                                 successors, and assignors. | ||||
|  |                                 <br/> | ||||
|  |                                 Force Majeure- Neither party shall be | ||||
|  |                                 responsible for any failure to carry out its | ||||
|  |                                 obligation hereunder which is due to causes | ||||
|  |                                 beyond | ||||
|  |                                 its control, including, but not limited to, | ||||
|  |                                 acts of God, public enemy, fires, floods, | ||||
|  |                                 epidemics, strikes, embargoes, severe | ||||
|  |                                 weather, | ||||
|  |                                 war, or delays of supply due to such causes. | ||||
|  |                                 Limitation of Liability/Waivers and | ||||
|  |                                 Disclaimers us shall not be liable for any | ||||
|  |                                 damages | ||||
|  |                                 whatsoever or claims of any kind, whether | ||||
|  |                                 based on contract, warranty, tort including | ||||
|  |                                 negligence or otherwise, or for any loss or | ||||
|  |                                 damage arising out of, connected with, or | ||||
|  |                                 resulting from, this Agreement, or from the | ||||
|  |                                 performance or breach thereof, or with | ||||
|  |                                 respect | ||||
|  |                                 to any and all goods covered by or furnished | ||||
|  |                                 under this Agreement. In no event shall be | ||||
|  |                                 liable for special, incidental, exemplary or | ||||
|  |                                 consequential damages including, but not | ||||
|  |                                 limited to, loss of profits or revenue, loss | ||||
|  |                                 of use of the Product or any associated | ||||
|  |                                 equipment, | ||||
|  |                                 cost of capital, cost of purchased power, | ||||
|  |                                 cost of substitute products or equipment, | ||||
|  |                                 facilities or services, downtime costs, or | ||||
|  |                                 claims or | ||||
|  |                                 damages of Dealer or employees, agents or | ||||
|  |                                 contractors of Dealer for such damages, | ||||
|  |                                 regardless of whether such claims or damages | ||||
|  |                                 are based | ||||
|  |                                 on contract, warranty, or tort including | ||||
|  |                                 negligence or otherwise. We shall not be | ||||
|  |                                 liable for any delay or failure to perform | ||||
|  |                                 its | ||||
|  |                                 obligations due to any cause beyond its | ||||
|  |                                 reasonable control, including, without | ||||
|  |                                 limitation, fire, weather, accident, act of | ||||
|  |                                 public | ||||
|  |                                 enemy, war, rebellion, insurrection, strike, | ||||
|  |                                 lockout, work slowdown, or similar | ||||
|  |                                 industrial or labor action, sabotage, | ||||
|  |                                 transportation | ||||
|  |                                 delay, shortage of raw material, energy or | ||||
|  |                                 machinery, act of God, acts or omissions of | ||||
|  |                                 Dealer, or the order or judgment of any | ||||
|  |                                 federal, | ||||
|  |                                 state, local or foreign court, | ||||
|  |                                 administrative agency or governmental | ||||
|  |                                 officer or body. Claims for shortages must | ||||
|  |                                 be reported within twenty-four | ||||
|  |                                 (24) hours. Except as expressly provided in | ||||
|  |                                 this Agreement, We makes no warranties, | ||||
|  |                                 express or implied, and specifically | ||||
|  |                                 disclaims any warranty | ||||
|  |                                 of merchantability, fitness for a particular | ||||
|  |                                 purpose, title or non-infringement or any | ||||
|  |                                 warranty arising by usage of trade, course | ||||
|  |                                 of dealing | ||||
|  |                                 or course of performance nor do us warrant | ||||
|  |                                 that the Product will meet Dealer's | ||||
|  |                                 requirements. | ||||
|  |                                 <br/> | ||||
|  |                                 We do not authorize anyone to make a | ||||
|  |                                 warranty of any kind on its behalf and | ||||
|  |                                 customer should not rely on anyone making | ||||
|  |                                 such statements. | ||||
|  |                                 <br/> | ||||
|  |                                 Organization, Power and Authority/Validity | ||||
|  |                                 of Documents Dealer is (A) an entity duly | ||||
|  |                                 organized, validly existing and in good | ||||
|  |                                 standing | ||||
|  |                                 under the laws of the state or country of | ||||
|  |                                 its incorporation or creation, (B) has the | ||||
|  |                                 power and authority to carry on its business | ||||
|  |                                 as now | ||||
|  |                                 being conducted, (C) is in compliance with | ||||
|  |                                 all governmental requirements; and (D) has | ||||
|  |                                 the power and authority to enter into this | ||||
|  |                                 Agreement | ||||
|  |                                 and any other documents related therewith. | ||||
|  |                                 <br/> | ||||
|  |                                 Litigation There are no judgments | ||||
|  |                                 outstanding against Dealer and there is no | ||||
|  |                                 action, suit, proceeding, or investigation | ||||
|  |                                 now pending against, | ||||
|  |                                 involving or affecting Dealer, at law, in | ||||
|  |                                 equity or before any governmental authority | ||||
|  |                                 that if adversely determined as to Dealer | ||||
|  |                                 would | ||||
|  |                                 result in a material adverse change in the | ||||
|  |                                 business or financial condition of Dealer, | ||||
|  |                                 nor is there any basis for such action, | ||||
|  |                                 suit, | ||||
|  |                                 proceeding or investigation. | ||||
|  |                                 <br/> | ||||
|  |                                 Assignment of Interest/Changes of | ||||
|  |                                 Ownership/Name Dealer shall not voluntarily | ||||
|  |                                 or by operation of law assign, transfer or | ||||
|  |                                 otherwise | ||||
|  |                                 encumber all or any part of Dealer's | ||||
|  |                                 interest or obligations under Agreement | ||||
|  |                                 without the prior written consent of us, | ||||
|  |                                 which consent | ||||
|  |                                 shall be at the sole discretion of us. | ||||
|  |                                 Dealer further represents and warrants that | ||||
|  |                                 it shall: | ||||
|  |                                 <br/> | ||||
|  |                                 (A) notify our immediately of any changes in | ||||
|  |                                 its ownership structure or name. | ||||
|  |                                 <br/> | ||||
|  |                                 Insurance Dealer shall obtain and maintain, | ||||
|  |                                 at Dealer's cost and expense, in full force | ||||
|  |                                 and effect at all times, | ||||
|  |                                 with all premiums paid thereon, and without | ||||
|  |                                 notice or demand, insurance with respect to | ||||
|  |                                 the Product against risks encompassed within | ||||
|  |                                 the standard policy of fire insurance with | ||||
|  |                                 extended coverage endorsement, theft and | ||||
|  |                                 other risks as “We” may require. | ||||
|  |                                 Upon request, Dealer shall provide us with | ||||
|  |                                 proof of such insurance. | ||||
|  |                                 <br/> | ||||
|  |                                 Forum Dealer hereby irrevocably submits | ||||
|  |                                 generally and unconditionally for itself to | ||||
|  |                                 the jurisdiction of the [Eleventh | ||||
|  |                                 Judicial Circuit Court] of the State of | ||||
|  |                                 Florida and the United States District Court | ||||
|  |                                 for the Southern District of Florida, over | ||||
|  |                                 any suit, | ||||
|  |                                 action or proceeding arising out of or | ||||
|  |                                 relating to this Agreement or the Product. | ||||
|  |                                 Dealer hereby agrees and consents that, in | ||||
|  |                                 addition to any methods of service or | ||||
|  |                                 process provided for under applicable law, | ||||
|  |                                 all service of process in any such suit, | ||||
|  |                                 action or proceeding in any state court, or | ||||
|  |                                 any United States federal court, | ||||
|  |                                 sitting in the state specified in this | ||||
|  |                                 Section may be made by certified or | ||||
|  |                                 registered mail, return receipt requested, | ||||
|  |                                 directed to Dealer at its address for notice | ||||
|  |                                 stated in this Agreement, or at a subsequent | ||||
|  |                                 address of which received actual notice from | ||||
|  |                                 Dealer in accordance with the Agreement, and | ||||
|  |                                 service so made shall be complete five (5) | ||||
|  |                                 days after the same shall have been so | ||||
|  |                                 mailed. | ||||
|  |                                 Nothing herein shall affect the right of us | ||||
|  |                                 to serve process in any manner permitted by | ||||
|  |                                 law or limit the right of us to bring | ||||
|  |                                 proceedings | ||||
|  |                                 against Dealer in any other court or | ||||
|  |                                 jurisdiction. | ||||
|  |                                 <br/> | ||||
|  |                                 Miscellaneous This Agreement may be executed | ||||
|  |                                 in several counterparts, all of which are | ||||
|  |                                 identical, and all of which counterparts | ||||
|  |                                 together | ||||
|  |                                 shall constitute one and the same | ||||
|  |                                 instrument. A determination that any | ||||
|  |                                 provision of this Agreement is unenforceable | ||||
|  |                                 or invalid shall not | ||||
|  |                                 affect the enforceability or validity of any | ||||
|  |                                 other provision and the determination that | ||||
|  |                                 the application of any provision of this | ||||
|  |                                 Agreement to any person or circumstance is | ||||
|  |                                 illegal or unenforceable shall not affect | ||||
|  |                                 the enforceability or validity of such | ||||
|  |                                 provision | ||||
|  |                                 as it may apply to other persons or | ||||
|  |                                 circumstances. This Agreement, and its | ||||
|  |                                 validity, enforcement and interpretation, | ||||
|  |                                 shall be governed | ||||
|  |                                 by the laws of the State of Florida (without | ||||
|  |                                 regard to any conflict of laws principles) | ||||
|  |                                 and applicable United States federal law. | ||||
|  |                                 This Agreement shall be binding upon Dealer, | ||||
|  |                                 and Dealer’s heirs, devices, | ||||
|  |                                 representatives, successors and assigns, and | ||||
|  |                                 shall inure to | ||||
|  |                                 the benefit of us and its successors and | ||||
|  |                                 assigners. | ||||
|  |                                 <br/> | ||||
|  |                                 Notices Unless specifically provided | ||||
|  |                                 otherwise, any notice for purposes of this | ||||
|  |                                 Agreement or any other Document shall be | ||||
|  |                                 given in | ||||
|  |                                 writing or by telex or by facsimile (fax) | ||||
|  |                                 transmission and shall be addressed or | ||||
|  |                                 delivered to the respective addresses set | ||||
|  |                                 forth | ||||
|  |                                 in the introduction of this Agreement. If | ||||
|  |                                 sent by prepaid, registered or certified | ||||
|  |                                 mail (return receipt requested), the notice | ||||
|  |                                 shall be deemed effective when the receipt | ||||
|  |                                 is signed or when the attempted initial | ||||
|  |                                 delivery is refused or cannot be made | ||||
|  |                                 because | ||||
|  |                                 of a change of address of which the sending | ||||
|  |                                 party has not been notified; if transmitted | ||||
|  |                                 by telex, the notice shall be effective | ||||
|  |                                 when transmitted (answer back confirmed); | ||||
|  |                                 and if transmitted by facsimile or personal | ||||
|  |                                 delivery, the notice shall be effective when | ||||
|  |                                 received. | ||||
|  |                                 No notice of change of address shall be | ||||
|  |                                 effective except upon actual receipt, and | ||||
|  |                                 service of a notice required by any | ||||
|  |                                 applicable statute | ||||
|  |                                 shall be considered complete when the | ||||
|  |                                 requirements of that statute are met. | ||||
|  |                                 <br/> | ||||
|  |                                 Waiver of jury trial. Dealer, by its | ||||
|  |                                 execution, and we, by its acceptance of this | ||||
|  |                                 agreement, hereby agree as follows: | ||||
|  |                                 <br/> | ||||
|  |                                 (a) each of them knowingly, voluntarily, | ||||
|  |                                 intentionally, and irrevocably waives any | ||||
|  |                                 right it may have to a trial by jury in any | ||||
|  |                                 lawsuit, | ||||
|  |                                 proceeding, counterclaim, or other | ||||
|  |                                 litigation (as used in this section an | ||||
|  |                                 "action") based upon, or arising out of, | ||||
|  |                                 under, or | ||||
|  |                                 in connection with, this agreement or any | ||||
|  |                                 related documents, instruments, or | ||||
|  |                                 agreements (whether oral or written and | ||||
|  |                                 whether | ||||
|  |                                 express or implied as a result of a course | ||||
|  |                                 of dealing, a course of conduct, a | ||||
|  |                                 statement, or other action of either party); | ||||
|  |                                 <br/> | ||||
|  |                                 (b) neither of them may seek a trial by jury | ||||
|  |                                 in any such action; | ||||
|  |                                 <br/> | ||||
|  |                                 (c) neither of them will seek to consolidate | ||||
|  |                                 any such action | ||||
|  |                                 (in which a jury trial has been waived) with | ||||
|  |                                 any other action in which a jury trial | ||||
|  |                                 cannot be or has not been waived; and | ||||
|  |                                 <br/> | ||||
|  |                                 (d) neither of them has in any way agreed | ||||
|  |                                 with or represented to the other of them | ||||
|  |                                 that the provisions of this section will | ||||
|  |                                 not be fully enforced in all instances. | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 The laws of the State of Florida will govern | ||||
|  |                                 this “Agreement”. | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 Authorized Signatures | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 “Dealer” | ||||
|  |                                 <br/> | ||||
|  |                                 <br/> | ||||
|  |                                 Company Name _____________________________ | ||||
|  |                                 <br/> | ||||
|  |                             </p> | ||||
|  |                             <t t-esc="data"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </t> | ||||
|  |         </t> | ||||
|  |     </template> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,68 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  |     <!--Contract Action--> | ||||
|  |     <record id="franchise_contract_report_action" model="ir.actions.report"> | ||||
|  |         <field name="name">Contract</field> | ||||
|  |         <field name="model">franchise.dealer</field> | ||||
|  |         <field name="report_type">qweb-pdf</field> | ||||
|  |         <field name="report_name">franchise_management.franchise_dealership_contract_template</field> | ||||
|  |         <field name="report_file">franchise_management.franchise_dealership_contract_template</field> | ||||
|  |         <field name="binding_model_id" ref="model_franchise_dealer"/> | ||||
|  |         <field name="binding_type">report</field> | ||||
|  |     </record> | ||||
|  |     <!--Report Action--> | ||||
|  |     <record id="franchise_dealer_details_report_action" model="ir.actions.report"> | ||||
|  |         <field name="name">franchise Dealer Details</field> | ||||
|  |         <field name="model">franchise.dealer</field> | ||||
|  |         <field name="report_type">qweb-pdf</field> | ||||
|  |         <field name="report_name">franchise_management.all_dealer_based_report_pdf</field> | ||||
|  |         <field name="report_file">franchise_management.all_dealer_based_report_pdf</field> | ||||
|  |         <field name="binding_type">report</field> | ||||
|  |     </record> | ||||
|  |     <!--Dealer Based Report Action--> | ||||
|  |     <record id="action_dealer_based_report_pdf" model="ir.actions.report"> | ||||
|  |         <field name="name">Dealer Franchisee</field> | ||||
|  |         <field name="model">franchise.dealer</field> | ||||
|  |         <field name="report_type">qweb-pdf</field> | ||||
|  |         <field name="report_name">franchise_management.dealer_based_report_pdf</field> | ||||
|  |         <field name="report_file">franchise_management.dealer_based_report_pdf</field> | ||||
|  |         <field name="binding_type">report</field> | ||||
|  |     </record> | ||||
|  |     <!--Product based report action--> | ||||
|  |     <record id="action_agreement_based_report_pdf" model="ir.actions.report"> | ||||
|  |         <field name="name">Agreement Based Report</field> | ||||
|  |         <field name="model">franchise.dealer</field> | ||||
|  |         <field name="report_type">qweb-pdf</field> | ||||
|  |         <field name="report_name">franchise_management.agreement_based_report_pdf</field> | ||||
|  |         <field name="report_file">franchise_management.agreement_based_report_pdf</field> | ||||
|  |         <field name="binding_type">report</field> | ||||
|  |     </record> | ||||
|  |     <!--Dealer Sale Feedback Report Action.--> | ||||
|  |     <record id="action_dealer_sale_based_report_pdf" model="ir.actions.report"> | ||||
|  |         <field name="name">Dealer Based Report</field> | ||||
|  |         <field name="model">dealer.sale</field> | ||||
|  |         <field name="report_type">qweb-pdf</field> | ||||
|  |         <field name="report_name">franchise_management.all_dealer_sale_report_pdf</field> | ||||
|  |         <field name="report_file">franchise_management.all_dealer_sale_report_pdf</field> | ||||
|  |         <field name="binding_type">report</field> | ||||
|  |     </record> | ||||
|  |     <!--Dealer Sale feedback on dealer action--> | ||||
|  |     <record id="action_dealer_sale_on_dealer_report_pdf" | ||||
|  |             model="ir.actions.report"> | ||||
|  |         <field name="name">Dealer Based Sale Report</field> | ||||
|  |         <field name="model">dealer.sale</field> | ||||
|  |         <field name="report_type">qweb-pdf</field> | ||||
|  |         <field name="report_name">franchise_management.dealer_sale_on_dealer_report_pdf</field> | ||||
|  |         <field name="report_file">franchise_management.dealer_sale_on_dealer_report_pdf</field> | ||||
|  |         <field name="binding_type">report</field> | ||||
|  |     </record> | ||||
|  |     <!--Dealer Sale feedback on product action--> | ||||
|  |     <record id="action_dealer_sale_on_agreement_report_pdf" model="ir.actions.report"> | ||||
|  |         <field name="name">Agreement Based Sale Report</field> | ||||
|  |         <field name="model">dealer.sale</field> | ||||
|  |         <field name="report_type">qweb-pdf</field> | ||||
|  |         <field name="report_name">franchise_management.dealer_sale_on_agreement_report_pdf</field> | ||||
|  |         <field name="report_file">franchise_management.dealer_sale_on_agreement_report_pdf</field> | ||||
|  |         <field name="binding_type">report</field> | ||||
|  |     </record> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,74 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  | <!--All dealer based report--> | ||||
|  |     <template id="all_dealer_based_report_pdf"> | ||||
|  |         <t t-call="web.html_container"> | ||||
|  |             <t t-call="web.external_layout"> | ||||
|  |                 <div class="page"> | ||||
|  |                     <div class="text-center"> | ||||
|  |                         <h1 style="font-size:35px"><b>Dealer List</b></h1> | ||||
|  |                     </div> | ||||
|  |                     <br/><br/> | ||||
|  |                     <t t-if="form_data.get('from_date')"> | ||||
|  |                         From Date : | ||||
|  |                         <t t-esc="form_data['from_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/><br/> | ||||
|  |                     <t t-if="form_data.get('to_date')"> | ||||
|  |                         To Date : | ||||
|  |                         <t t-esc="form_data['to_date']"/> | ||||
|  |                     </t> | ||||
|  |                     <br/><br/> | ||||
|  |                     <div class="row"> | ||||
|  |                     <table class="table"> | ||||
|  |                         <thead> | ||||
|  |                             <tr> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Sl.no</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Reference</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Dealer Name</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Signed On</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Email</strong> | ||||
|  |                                 </th> | ||||
|  |                                 <th width="10px"> | ||||
|  |                                     <strong>Franchise Agreement</strong> | ||||
|  |                                 </th> | ||||
|  |                             </tr> | ||||
|  |                         </thead> | ||||
|  |                         <t t-foreach="fetch_all_details" t-as="line"> | ||||
|  |                             <tr> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line_index+1"/> | ||||
|  |                                 </td> | ||||
|  |                                  <td> | ||||
|  |                                     <span t-esc="line['serial_no']"/> | ||||
|  |                                 </td> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line['name']"/> | ||||
|  |                                 </td> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line['signed_on']"/> | ||||
|  |                                 </td> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line['dealer_mail']"/> | ||||
|  |                                 </td> | ||||
|  |                                 <td> | ||||
|  |                                     <span t-esc="line['agreement_type']"/> | ||||
|  |                                 </td> | ||||
|  |                             </tr> | ||||
|  |                         </t> | ||||
|  |                     </table> | ||||
|  |                 </div> | ||||
|  |                 </div> | ||||
|  |             </t> | ||||
|  |         </t> | ||||
|  |     </template> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,20 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo> | ||||
|  | <!--Security user access groups user and manager--> | ||||
|  |     <data noupdate="1"> | ||||
|  |         <record model="ir.module.category" id="franchise_management"> | ||||
|  |             <field name="name">Dealer</field> | ||||
|  |             <field name="description">User access levels for Franchise Management</field> | ||||
|  |             <field name="sequence">10</field> | ||||
|  |         </record> | ||||
|  |         <record id="dealer_user_access" model="res.groups"> | ||||
|  |             <field name="name">Franchise User</field> | ||||
|  |             <field name="category_id" ref="franchise_management"/> | ||||
|  |         </record> | ||||
|  |         <record id="dealer_manager_access" model="res.groups"> | ||||
|  |             <field name="name">Franchise Manager</field> | ||||
|  |             <field name="category_id" ref="franchise_management"/> | ||||
|  |             <field name="implied_ids" eval="[(4, ref('dealer_user_access'))]"/> | ||||
|  |         </record> | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| 
 | 
| 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.2 KiB | 
| After Width: | Height: | Size: 3.4 KiB | 
| After Width: | Height: | Size: 673 B | 
| 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: 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: 589 B | 
| After Width: | Height: | Size: 3.4 KiB | 
| After Width: | Height: | Size: 1.7 KiB | 
| After Width: | Height: | Size: 2.3 KiB | 
| After Width: | Height: | Size: 967 B | 
| After Width: | Height: | Size: 1.6 KiB | 
| After Width: | Height: | Size: 3.8 KiB | 
| After Width: | Height: | Size: 5.0 KiB | 
| After Width: | Height: | Size: 678 KiB | 
| After Width: | Height: | Size: 96 KiB | 
| After Width: | Height: | Size: 96 KiB | 
| After Width: | Height: | Size: 20 KiB | 
| After Width: | Height: | Size: 83 KiB | 
| After Width: | Height: | Size: 80 KiB | 
| After Width: | Height: | Size: 207 KiB | 
| After Width: | Height: | Size: 216 KiB | 
| After Width: | Height: | Size: 196 KiB | 
| After Width: | Height: | Size: 242 KiB | 
| After Width: | Height: | Size: 323 KiB | 
| After Width: | Height: | Size: 269 KiB | 
| After Width: | Height: | Size: 349 KiB | 
| After Width: | Height: | Size: 288 KiB | 
| After Width: | Height: | Size: 168 KiB | 
| After Width: | Height: | Size: 224 KiB | 
| After Width: | Height: | Size: 209 KiB | 
| After Width: | Height: | Size: 165 KiB | 
| After Width: | Height: | Size: 363 KiB | 
| After Width: | Height: | Size: 234 KiB | 
| After Width: | Height: | Size: 121 KiB | 
| After Width: | Height: | Size: 168 KiB | 
| After Width: | Height: | Size: 223 KiB | 
| After Width: | Height: | Size: 809 KiB | 
| After Width: | Height: | Size: 68 KiB | 
| After Width: | Height: | Size: 23 KiB | 
| @ -0,0 +1,653 @@ | |||||
|  | <div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;"> | ||||
|  |     <!-- TITLE BAR --> | ||||
|  |     <div class="d-flex align-items-center justify-content-between" | ||||
|  |         style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;"> | ||||
|  |         <img src="assets/misc/cybrosys-logo.png" width="42" height="42" style="width: 42px; height: 42px;" /> | ||||
|  |         <div> | ||||
|  |             <div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | ||||
|  |                 class="mr-2"> | ||||
|  |                 <i class="fa fa-check mr-1"></i>Community | ||||
|  |             </div> | ||||
|  |             <div style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | ||||
|  |                 class="mr-2"> | ||||
|  |                 <i class="fa fa-check mr-1"></i>Enterprise | ||||
|  |             </div> | ||||
|  |             <div style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | ||||
|  |                 class="mr-2"> | ||||
|  |                 <i class="fa fa-check mr-1"></i>Odoo.sh | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  |     <!-- END OF TITLE BAR --> | ||||
|  |      <div class="container"> | ||||
|  |         <div class="row"> | ||||
|  |             <div class="col-sm-12 col-md-12 col-lg-12"> | ||||
|  |             <!-- APP HERO --> | ||||
|  |                 <h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">Franchise Management</h1> | ||||
|  |                 <p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">This Module Helps To Manage The Franchise In Odoo</p> | ||||
|  |             <!-- END OF APP HERO --> | ||||
|  |                 <img src="assets/screenshots/hero.gif" style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;" /> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  |     <!-- NAVIGATION SECTION --> | ||||
|  |         <div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mr-2" style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |                 <img src="assets/misc/compass.png" /> | ||||
|  |             </div> | ||||
|  |             <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Explore This Module</h2> | ||||
|  |         </div> | ||||
|  |         <div class="row my-4" style="font-family: 'Montserrat', sans-serif;"> | ||||
|  |             <div class="col-sm-12 col-md-6 my-3"> | ||||
|  |                 <a href="#overview"> | ||||
|  |                     <div class="d-flex justify-content-between align-items-center" style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | ||||
|  |                         <div> | ||||
|  |                             <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span> | ||||
|  |                             <span | ||||
|  |                                 style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">Learn more about this module</span> | ||||
|  |                         </div> | ||||
|  |                         <img src="assets/misc/right-arrow.png" width="36" height="36" /> | ||||
|  |                     </div> | ||||
|  |                 </a> | ||||
|  |               </div> | ||||
|  |               <div class="col-sm-12 col-md-6 my-3"> | ||||
|  |                   <a href="#features"> | ||||
|  |                       <div class="d-flex justify-content-between align-items-center" | ||||
|  |                           style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | ||||
|  |                           <div> | ||||
|  |                               <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span> | ||||
|  |                               <span | ||||
|  |                                   style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">View features of this module</span> | ||||
|  |                           </div> | ||||
|  |                           <img src="assets/misc/right-arrow.png" width="36" height="36" /> | ||||
|  |                       </div> | ||||
|  |                   </a> | ||||
|  |               </div> | ||||
|  |           <div class="col-sm-12 col-md-6 my-3"> | ||||
|  |               <a href="#screenshots"> | ||||
|  |                   <div class="d-flex justify-content-between align-items-center" | ||||
|  |                       style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | ||||
|  |                       <div> | ||||
|  |                           <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span> | ||||
|  |                           <span | ||||
|  |                               style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">See key screenshots of this module</span> | ||||
|  |                       </div> | ||||
|  |                       <img src="assets/misc/right-arrow.png" width="36" height="36" /> | ||||
|  |                   </div> | ||||
|  |               </a> | ||||
|  | 
 | ||||
|  |           </div> | ||||
|  |       </div> | ||||
|  |       <!-- END OF NAVIGATION SECTION --> | ||||
|  | 
 | ||||
|  |     <!-- OVERVIEW SECTION --> | ||||
|  |     <div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview"> | ||||
|  |           <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |               style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |               <img src="assets/misc/pie-chart.png" /> | ||||
|  |           </div> | ||||
|  |          <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Overview | ||||
|  |          </h2> | ||||
|  |          </div> | ||||
|  |       <div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | ||||
|  |           <div class="col-sm-12 py-4"> | ||||
|  |                 This module helps to manage the franchise in odoo.A franchise is a type of license that grants a franchisee access | ||||
|  |                 to a franchises proprietary business knowledge, processes, and trademarks, thus allowing the franchisee to sell | ||||
|  |                 a product or service under the franchises business name. In exchange for acquiring a franchise, | ||||
|  |                 the franchisee usually pays the franchise an initial start-up fee and annual licensing fees. | ||||
|  |                 A website user can request for a franchise by submitting the website form and after submitting the form | ||||
|  |                 admin can manage this request from backend and after verify and approve he can send the contract to the customer | ||||
|  |                 to corresponding mail, which describes the terms and conditions of becoming a franchise | ||||
|  |                 with our company,if he agrees the contract then he can sign the contract through website portal. if he signed | ||||
|  |                 it will be recorded in the backend, and he will be converted as a portal user and a confirmation mail also send to him | ||||
|  |                 by notifying his username and password to log in to the odoo as portal user.  A yearly contract renewal mail also send to him.<br/> | ||||
|  |                 This module also manages  monthly tracking of sales of the franchisee. that is, monthly sending an email for submitting | ||||
|  |                 the franchise sales feedback form. if he submits it based on the information, admin can generate reports about the sales feedback and | ||||
|  |                 understand the growth of the company in franchise, And also manages the dealership registration reports. | ||||
|  |           </div> | ||||
|  |       </div> | ||||
|  | <!-- END OF OVERVIEW SECTION --> | ||||
|  | 
 | ||||
|  | <!-- FEATURES SECTION --> | ||||
|  |     <!-- FEATURES SECTION --> | ||||
|  |       <div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features"> | ||||
|  |         <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |           style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |           <img src="assets/misc/features.png" /> | ||||
|  |         </div> | ||||
|  |         <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features | ||||
|  |         </h2> | ||||
|  |       </div> | ||||
|  |       <div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | ||||
|  |         <div class="col-sm-12 col-md-6"> | ||||
|  |           <div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User Friendly Interface.</span> | ||||
|  |           </div> | ||||
|  |           <div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Compatible with Community, Enterprise, and Odoo.sh</span> | ||||
|  |           </div> | ||||
|  |           <div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User can manage all the website Franchise Requests in backend.</span> | ||||
|  |           </div> | ||||
|  |             <div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Admin user can Accept or Cancel the Franchise Requests based on the details</span> | ||||
|  |           </div> | ||||
|  |             <div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">After approving admin can send contract to the customer.</span> | ||||
|  |           </div> | ||||
|  |             <div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Customer can agree the terms and conditions and sign the | ||||
|  |                     contract through portal.</span> | ||||
|  |           </div> | ||||
|  |             <div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Every year after he signed the contract, he will get a | ||||
|  |                     contract renewal email.</span> | ||||
|  |           </div> | ||||
|  |             <div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">  Admin can request the monthly franchise sales feedback.</span> | ||||
|  |           </div> | ||||
|  |             <div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Available both Franchise Registrations and Franchise Sales | ||||
|  |                     Feedback Reports.</span> | ||||
|  |           </div> | ||||
|  |             <div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> | ||||
|  |             <img src="assets/misc/check-box.png" class="mr-2" /> | ||||
|  |             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">  Admin can manage all Registrations in website portal account | ||||
|  |                     also.</span> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |       <!-- END OF FEATURES SECTION --> | ||||
|  | 
 | ||||
|  |       <!-- SCREENSHOTS SECTION --> | ||||
|  |       <div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="screenshots"> | ||||
|  |         <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |           style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |           <img src="assets/misc/pictures.png" /> | ||||
|  |         </div> | ||||
|  |         <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots | ||||
|  |         </h2> | ||||
|  |       </div> | ||||
|  |       <div class="row"> | ||||
|  |         <div class="col-sm-12"> | ||||
|  |           <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Franchise Registration Form.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Customer can submit the franchise requests from website.</p> | ||||
|  |             <img src="assets/screenshots/FR-0001.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Franchise Agreement Type.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Customer can select his Franchise Agreement Type.</p> | ||||
|  |             <img src="assets/screenshots/FR-0002.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Franchise Registrations.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">User can manage all the website Franchise Requests in backend.</p> | ||||
|  |             <img src="assets/screenshots/FR-0003.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Admin user can Accept or Cancel the Registration.</h3> | ||||
|  |             <img src="assets/screenshots/FR-0004.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Franchise Agreement.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Based on the Agreement Type chosen by the customer from the website, | ||||
|  |                 Agreement format will be automatically filled to the backend.</p> | ||||
|  |             <img src="assets/screenshots/FR-0005.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">After verifying the registration admin can send the | ||||
|  |                 franchise dealership contract to the customer via mail mentioned in registration form.</h3> | ||||
|  |             <img src="assets/screenshots/FR-0006.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Send contract to customer.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">In the mail template a pdf contract with all the terms and | ||||
|  |                 conditions are attached along with a button to sign and confirm | ||||
|  |                 the contract. | ||||
|  |                 </p> | ||||
|  |             <img src="assets/screenshots/FR-0007.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Sign and confirm the contract.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> Customer will be redirected to the customer portal and from there | ||||
|  |                 he can sign and confirm the contract. | ||||
|  |                 </p> | ||||
|  |             <img src="assets/screenshots/FR-0008.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Customer can Sign or Reject the Franchise | ||||
|  |                 Dealership contract.</h3> | ||||
|  |             <img src="assets/screenshots/FR-0009.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Accept and Sign.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">The sign will be added to the portal template. | ||||
|  |             </p> | ||||
|  |             <img src="assets/screenshots/FR-0010.png" class="img-thumbnail"> | ||||
|  |             <img src="assets/screenshots/FR-0011.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">The Customer will be created as Dealer.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">After sign the contract, the customer will be converted as the | ||||
|  |                 franchise dealer.He has the portal user access now. | ||||
|  |                 A confirmation mail also sent to him about | ||||
|  |                 notifying the email and password to log into the portal. | ||||
|  |                 The sign and signed date will also be recorded in the backend. | ||||
|  |             </p> | ||||
|  |             <img src="assets/screenshots/FR-0012.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Admin user can request the sales feedback of the | ||||
|  |                 franchise products.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">On click of request sale feedback button , a request mail will | ||||
|  |                 be sent to the dealer about submitting the monthly sales review | ||||
|  |                 of the franchise product. | ||||
|  |             </p> | ||||
|  |             <img src="assets/screenshots/FR-0013.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Monthly sales feedback form.</h3> | ||||
|  |             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">The email template contains a button to redirect to the sales | ||||
|  |                 feedback form. | ||||
|  |             </p> | ||||
|  |             <img src="assets/screenshots/FR-0014.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Submitted sales feedbacks will be recorded in | ||||
|  |                 the backend.</h3> | ||||
|  |             <img src="assets/screenshots/FR-0015.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Admin can manage the sales feedbacks.</h3> | ||||
|  |             <img src="assets/screenshots/FR-0016.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  |             <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Portal franchise registrations.</h3> | ||||
|  |             <img src="assets/screenshots/FR-0017.png" class="img-thumbnail"> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |       <!-- END OF SCREENSHOTS SECTION --> | ||||
|  | 
 | ||||
|  | <!-- RELATED PRODUCTS --> | ||||
|  |       <div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | ||||
|  |         <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |           style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |           <img src="assets/misc/categories.png" /> | ||||
|  |         </div> | ||||
|  |         <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Related | ||||
|  |           Products | ||||
|  |         </h2> | ||||
|  |       </div> | ||||
|  | <br/> | ||||
|  |      <div class="row"> | ||||
|  |     <div class="col-sm-12"> | ||||
|  |         <div id="demo1" class="row carousel slide" data-ride="carousel"> | ||||
|  |             <!-- The slideshow --> | ||||
|  |             <div class="carousel-inner" style="padding: 30px;"> | ||||
|  |                 <div class="carousel-item" style="min-height: 198.656px;"> | ||||
|  |                     <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | ||||
|  |                         <a href="https://apps.odoo.com/apps/modules/16.0/voice_note_in_chatter/" target="_blank"> | ||||
|  |                             <div style="border-radius:10px"> | ||||
|  |                                 <img class="img img-responsive center-block" style="border-radius: 0px;" | ||||
|  |                                     src="assets/modules/w1.gif"> | ||||
|  |                             </div> | ||||
|  |                         </a> | ||||
|  |                     </div> | ||||
|  |                     <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | ||||
|  |                         <a href="https://apps.odoo.com/apps/modules/16.0/ohrms_overtime/" target="_blank"> | ||||
|  |                             <div style="border-radius:10px"> | ||||
|  |                                 <img class="img img-responsive center-block" style="border-radius: 0px;" | ||||
|  |                                     src="assets/modules/w2.png"> | ||||
|  |                             </div> | ||||
|  |                         </a> | ||||
|  |                     </div> | ||||
|  |                     <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | ||||
|  |                         <a href="https://apps.odoo.com/apps/modules/16.0/hr_employee_updation//" target="_blank"> | ||||
|  |                             <div style="border-radius:10px"> | ||||
|  |                                 <img class="img img-responsive center-block" style="border-radius: 0px;" | ||||
|  |                                     src="assets/modules/w3.png"> | ||||
|  |                             </div> | ||||
|  |                         </a> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |                 <div class="carousel-item active" style="min-height: 198.656px;"> | ||||
|  |                     <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | ||||
|  |                         <a href="https://apps.odoo.com/apps/modules/16.0/bom_total_cost/" target="_blank"> | ||||
|  |                             <div style="border-radius:10px"> | ||||
|  |                                 <img class="img img-responsive center-block" style="border-radius: 0px;" | ||||
|  |                                     src="assets/modules/w4.png"> | ||||
|  |                             </div> | ||||
|  |                         </a> | ||||
|  |                     </div> | ||||
|  |                     <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | ||||
|  |                         <a href="https://apps.odoo.com/apps/modules/16.0/list_view_sticky_header/" target="_blank"> | ||||
|  |                             <div style="border-radius:10px"> | ||||
|  |                                 <img class="img img-responsive center-block" style="border-radius: 0px;" | ||||
|  |                                     src="assets/modules/w5.png"> | ||||
|  |                             </div> | ||||
|  |                         </a> | ||||
|  |                     </div> | ||||
|  |                     <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | ||||
|  |                         <a href="https://apps.odoo.com/apps/modules/16.0/model_access_rights/" target="_blank"> | ||||
|  |                             <div style="border-radius:10px"> | ||||
|  |                                 <img class="img img-responsive center-block" style="border-radius: 0px;" | ||||
|  |                                     src="assets/modules/w6.png"> | ||||
|  |                             </div> | ||||
|  |                         </a> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |             <!-- Left and right controls --> | ||||
|  |             <a class="carousel-control-prev" href="#demo1" data-slide="prev" style="width:35px; color:#000"> <span | ||||
|  |                 class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span> | ||||
|  |             </a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="width:35px; color:#000"> | ||||
|  |               <span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span> | ||||
|  |             </a> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |       <!-- END OF RELATED PRODUCTS --> | ||||
|  | 
 | ||||
|  | 
 | ||||
|  |     <!-- OUR SERVICES --> | ||||
|  | 
 | ||||
|  |       <div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | ||||
|  |         <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |           style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |           <img src="assets/misc/star.png" /> | ||||
|  |         </div> | ||||
|  |         <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Services | ||||
|  |         </h2> | ||||
|  |       </div> | ||||
|  | 
 | ||||
|  |       <div class="container my-5"> | ||||
|  |         <div class="row"> | ||||
|  |           <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |               style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |               <img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |               Odoo | ||||
|  |               Customization</h6> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |               style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |               <img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |               Odoo | ||||
|  |               Implementation</h6> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |               style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |               <img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |               Odoo | ||||
|  |               Support</h6> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  | 
 | ||||
|  |           <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |               style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |               <img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |               Hire | ||||
|  |               Odoo | ||||
|  |               Developer</h6> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |               style="background-color: #54a0ff  !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |               <img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |               Odoo | ||||
|  |               Integration</h6> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |               style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |               <img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |               Odoo | ||||
|  |               Migration</h6> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  | 
 | ||||
|  |           <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |               style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |               <img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |               Odoo | ||||
|  |               Consultancy</h6> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |               style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |               <img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |               Odoo | ||||
|  |               Implementation</h6> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |               style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |               <img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |               Odoo | ||||
|  |               Licensing Consultancy</h6> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |       </div> | ||||
|  | 
 | ||||
|  |       <!--END OF OUR SERVICES --> | ||||
|  | 
 | ||||
|  | 
 | ||||
|  |     <!-- OUR INDUSTRIES --> | ||||
|  | 
 | ||||
|  |       <div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | ||||
|  |         <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |           style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |           <img src="assets/misc/corporate.png" /> | ||||
|  |         </div> | ||||
|  |         <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our | ||||
|  |           Industries | ||||
|  |         </h2> | ||||
|  |       </div> | ||||
|  | 
 | ||||
|  |       <div class="container my-5"> | ||||
|  |         <div class="row"> | ||||
|  |           <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |               style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |               <img src="assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |               <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                 Trading | ||||
|  |               </h5> | ||||
|  |               <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                 Easily procure | ||||
|  |                 and | ||||
|  |                 sell your products</p> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |               style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |               <img src="assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |               <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                 POS | ||||
|  |               </h5> | ||||
|  |               <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                 Easy | ||||
|  |                 configuration | ||||
|  |                 and convivial experience</p> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |               style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |               <img src="assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |               <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                 Education | ||||
|  |               </h5> | ||||
|  |               <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                 A platform for | ||||
|  |                 educational management</p> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |               style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |               <img src="assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |               <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                 Manufacturing | ||||
|  |               </h5> | ||||
|  |               <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                 Plan, track and | ||||
|  |                 schedule your operations</p> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |               style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |               <img src="assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |               <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                 E-commerce & Website | ||||
|  |               </h5> | ||||
|  |               <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                 Mobile | ||||
|  |                 friendly, | ||||
|  |                 awe-inspiring product pages</p> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |               style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |               <img src="assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |               <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                 Service Management | ||||
|  |               </h5> | ||||
|  |               <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                 Keep track of | ||||
|  |                 services and invoice</p> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |               style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |               <img src="assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |               <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                 Restaurant | ||||
|  |               </h5> | ||||
|  |               <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                 Run your bar or | ||||
|  |                 restaurant methodically</p> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  | 
 | ||||
|  |           <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |               style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |               <img src="assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |               <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                 Hotel Management | ||||
|  |               </h5> | ||||
|  |               <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                 An | ||||
|  |                 all-inclusive | ||||
|  |                 hotel management application</p> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  | 
 | ||||
|  |       <!--END OF OUR INDUSTRIES --> | ||||
|  | 
 | ||||
|  |       <!-- SUPPORT --> | ||||
|  |       <div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | ||||
|  |         <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |           style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |           <img src="assets/misc/customer-support.png" /> | ||||
|  |         </div> | ||||
|  |         <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support | ||||
|  |         </h2> | ||||
|  |       </div> | ||||
|  |       <div class="container mt-5"> | ||||
|  |         <div class="row"> | ||||
|  |           <div class="col-sm-12 col-md-6"> | ||||
|  |             <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | ||||
|  |               <div class="mr-4 d-flex justify-content-center align-items-center" | ||||
|  |                 style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | ||||
|  |                 <img src="assets/misc/support.png" height="48" width="48" style="width: 42px; height: 42px;" /> | ||||
|  |               </div> | ||||
|  |               <div> | ||||
|  |                 <h4>Need Help?</h4> | ||||
|  |                 <p style="line-height: 100%;">Got questions or need help? Get in touch.</p> | ||||
|  |                 <a href="mailto:odoo@cybrosys.com"> | ||||
|  |                   <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> | ||||
|  |                     odoo@cybrosys.com</p> | ||||
|  |                 </a> | ||||
|  |               </div> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  |           <div class="col-sm-12 col-md-6"> | ||||
|  |             <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | ||||
|  |               <div class="mr-4 d-flex justify-content-center align-items-center" | ||||
|  |                 style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | ||||
|  |                 <img src="assets/misc/whatsapp.png" height="52" width="52" style="width: 52px; height: 52px;" /> | ||||
|  |               </div> | ||||
|  |               <div> | ||||
|  |                 <h4>WhatsApp</h4> | ||||
|  |                 <p style="line-height: 100%;">Say hi to us on WhatsApp!</p> | ||||
|  |                 <a href="https://api.whatsapp.com/send?phone=918606827707"> | ||||
|  |                   <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">+91 86068 | ||||
|  |                     27707</p> | ||||
|  |                 </a> | ||||
|  |               </div> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |         <div class="row"> | ||||
|  |           <div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> | ||||
|  |             <img src="assets/misc/logo.png" width="144" height="31" style="width:144px; height: 31px; margin-top: 40px;" /> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  | </div> | ||||
|  | <!-- END OF SUPPORT --> | ||||
| @ -0,0 +1,73 @@ | |||||
|  | .head{ | ||||
|  | margin-top:25px; | ||||
|  | margin-left:20px; | ||||
|  | } | ||||
|  | .image{ | ||||
|  | background-image:url("/franchise_management/static/src/img/franchise.jpg"); | ||||
|  | background-size:cover; | ||||
|  | height:300px; | ||||
|  | width:600px; | ||||
|  | margin-top: 200px; | ||||
|  | } | ||||
|  | .fd_image{ | ||||
|  |     background-image: url("/franchise_management/static/src/img/fd_franchise.jpg"); | ||||
|  |     background-size: cover; | ||||
|  |     height: 500px; | ||||
|  |     width: 700px; | ||||
|  |     margin-top: -900px; | ||||
|  |     margin-left: 500px | ||||
|  | } | ||||
|  | 
 | ||||
|  | } | ||||
|  | .nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link { | ||||
|  |     color: #533ee2; | ||||
|  |     background-color: #FFFFFF; | ||||
|  |     border-color: #dee2e6 #dee2e6 #FFFFFF; | ||||
|  | } | ||||
|  | .nav-link { | ||||
|  |     display: block; | ||||
|  |     padding: 0.5rem 1rem; | ||||
|  |     color: #533ee2; | ||||
|  |     transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; | ||||
|  | } | ||||
|  | .body{ | ||||
|  | margin-top:-326px; | ||||
|  | margin-left:875px; | ||||
|  | margin-bottom:10px; | ||||
|  | } | ||||
|  | h1{ | ||||
|  | color:royalblue; | ||||
|  | font-family:"Lucida consol","Courier Nem",monospace; | ||||
|  | font-size:50px; | ||||
|  | margin-top:50px; | ||||
|  | } | ||||
|  | h6{ | ||||
|  | color:royalblue; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .link-style{ | ||||
|  | width:500px; | ||||
|  | height:50px; | ||||
|  | border-color: royalblue; | ||||
|  | border-width: 1px; | ||||
|  | } | ||||
|  | .btn-fill-primary, .btn-primary { | ||||
|  |     color: #FFFFFF; | ||||
|  |     background-color: #533ee2; | ||||
|  |     border-color: #533ee2; | ||||
|  | } | ||||
|  | .col-form-label { | ||||
|  |     padding-top: calc(0.375rem + 1px); | ||||
|  |     padding-bottom: calc(0.375rem + 1px); | ||||
|  |     margin-bottom: 0; | ||||
|  |     font-size: inherit; | ||||
|  |     line-height: 1.5; | ||||
|  |     color: deepskyblue; | ||||
|  | } | ||||
|  | .button{ | ||||
|  | width:500px; | ||||
|  | height:50px; | ||||
|  |     color: #FFFFFF; | ||||
|  |     background-color: #533ee2; | ||||
|  |     border-color: #533ee2; | ||||
|  | } | ||||
| After Width: | Height: | Size: 181 KiB | 
| After Width: | Height: | Size: 2.3 MiB | 
| @ -0,0 +1,78 @@ | |||||
|  | /** @odoo-module */ | ||||
|  | 
 | ||||
|  | import core from 'web.core'; | ||||
|  | import publicWidget from 'web.public.widget'; | ||||
|  | import { NameAndSignature } from 'web.name_and_signature'; | ||||
|  | const _t = core._t; | ||||
|  | const qweb = core.qweb; | ||||
|  | 
 | ||||
|  | export const SignatureForm = publicWidget.Widget.extend({ | ||||
|  |     template: 'portal.portal_signature', | ||||
|  |     events: { | ||||
|  |         'click .o_portal_sign_submit': 'async _onClickSignSubmit', | ||||
|  |     }, | ||||
|  |     custom_events: { | ||||
|  |         'signature_changed': '_onChangeSignature', | ||||
|  |     }, | ||||
|  |     init: function (parent, options) { | ||||
|  |         this._super.apply(this, arguments); | ||||
|  |         this.csrf_token = odoo.csrf_token; | ||||
|  |         this.callUrl = options.callUrl || ''; | ||||
|  |         this.rpcParams = options.rpcParams || {}; | ||||
|  |         this.sendLabel = options.sendLabel || _t("Accept & Sign"); | ||||
|  |         this.nameAndSignature = new NameAndSignature(this, | ||||
|  |             options.nameAndSignatureOptions || {}); | ||||
|  |     }, | ||||
|  |     start: function () { | ||||
|  |         var self = this; | ||||
|  |         this.$confirm_btn = this.$('.o_portal_sign_submit'); | ||||
|  |         this.$controls = this.$('.o_portal_sign_controls'); | ||||
|  |         var subWidgetStart = this.nameAndSignature.replace(this.$('.o_web_sign_name_and_signature')); | ||||
|  |         return Promise.all([subWidgetStart, this._super.apply(this, arguments)]).then(function () { | ||||
|  |             self.nameAndSignature.resetSignature(); | ||||
|  |         }); | ||||
|  |     }, | ||||
|  |     focusName: function () { | ||||
|  |         this.nameAndSignature.focusName(); | ||||
|  |     }, | ||||
|  |     resetSignature: function () { | ||||
|  |         return this.nameAndSignature.resetSignature(); | ||||
|  |     }, | ||||
|  |     _onClickSignSubmit: function (ev) { | ||||
|  |         var self = this; | ||||
|  |         ev.preventDefault(); | ||||
|  |         if (!this.nameAndSignature.validateSignature()) { | ||||
|  |             return; | ||||
|  |         } | ||||
|  |         var name = this.nameAndSignature.getName(); | ||||
|  |         var signature = this.nameAndSignature.getSignatureImage()[1]; | ||||
|  |         return this._rpc({ | ||||
|  |             route: this.callUrl, | ||||
|  |             params: _.extend(this.rpcParams, { | ||||
|  |                 'name': name, | ||||
|  |                 'signature': signature, | ||||
|  |             }), | ||||
|  |         }).then(function (data) { | ||||
|  |             if (data.error) { | ||||
|  |                 self.$('.o_portal_sign_error_msg').remove(); | ||||
|  |                 self.$controls.prepend(qweb.render('portal.portal_signature_error', {widget: data})); | ||||
|  |             } else if (data.success) { | ||||
|  |                 var $success = qweb.render('portal.portal_signature_success', {widget: data}); | ||||
|  |                 self.$el.empty().append($success); | ||||
|  |             } | ||||
|  |             if (data.force_refresh) { | ||||
|  |                 if (data.redirect_url) { | ||||
|  |                     window.location = data.redirect_url; | ||||
|  |                 } else { | ||||
|  |                     window.location.reload(); | ||||
|  |                 } | ||||
|  |                 // No resolve if we reload the page
 | ||||
|  |                 return new Promise(function () { }); | ||||
|  |             } | ||||
|  |         }); | ||||
|  |     }, | ||||
|  |     _onChangeSignature: function () { | ||||
|  |         var isEmpty = this.nameAndSignature.isSignatureEmpty(); | ||||
|  |         this.$confirm_btn.prop('disabled', isEmpty); | ||||
|  |     }, | ||||
|  | }); | ||||
| @ -0,0 +1,44 @@ | |||||
|  | /** @odoo-module */ | ||||
|  | 
 | ||||
|  | import { registry } from '@web/core/registry'; | ||||
|  | import core from 'web.core'; | ||||
|  | import publicWidget from 'web.public.widget'; | ||||
|  | import { NameAndSignature } from 'web.name_and_signature'; | ||||
|  | import { SignatureForm } from '@franchise_management/js/portalSignature'; | ||||
|  | 
 | ||||
|  | //extending the public widget for adding signature form and sign the contract
 | ||||
|  | publicWidget.registry.SignatureForm = publicWidget.Widget.extend({ | ||||
|  |     selector: '.o_portal_signature_form', | ||||
|  |     start: function () { | ||||
|  |         var hasBeenReset = false; | ||||
|  |         var callUrl = this.$el.data('call-url'); | ||||
|  |         var nameAndSignatureOptions = { | ||||
|  |             defaultName: this.$el.data('default-name'), | ||||
|  |             mode: this.$el.data('mode'), | ||||
|  |             displaySignatureRatio: this.$el.data('signature-ratio'), | ||||
|  |             signatureType: this.$el.data('signature-type'), | ||||
|  |             fontColor: this.$el.data('font-color')  || 'black', | ||||
|  |         }; | ||||
|  |         var sendLabel = this.$el.data('send-label'); | ||||
|  |         var form = new SignatureForm(this, { | ||||
|  |             callUrl: callUrl, | ||||
|  |             nameAndSignatureOptions: nameAndSignatureOptions, | ||||
|  |             sendLabel: sendLabel, | ||||
|  |         }); | ||||
|  |         // Correctly set up the signature area if it is inside a modal
 | ||||
|  |         this.$el.closest('.modal').on('shown.bs.modal', function (ev) { | ||||
|  |             if (!hasBeenReset) { | ||||
|  |                 // Reset it only the first time it is open to get correct
 | ||||
|  |                 // size. After we want to keep its content on reopen.
 | ||||
|  |                 hasBeenReset = true; | ||||
|  |                 form.resetSignature(); | ||||
|  |             } else { | ||||
|  |                 form.focusName(); | ||||
|  |             } | ||||
|  |         }); | ||||
|  |         return Promise.all([ | ||||
|  |             this._super.apply(this, arguments), | ||||
|  |             form.appendTo(this.$el) | ||||
|  |         ]); | ||||
|  |     }, | ||||
|  | }); | ||||
| @ -0,0 +1,10 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo> | ||||
|  | <!--Franchise dealer model action--> | ||||
|  |     <record id="franchise_dealer_action" model="ir.actions.act_window"> | ||||
|  |         <field name="name">Dealer</field> | ||||
|  |         <field name="res_model">franchise.dealer</field> | ||||
|  |         <field name="view_mode">tree,form</field> | ||||
|  |         <field name="domain">[('state', '=', 'f_signed')]</field> | ||||
|  |     </record> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,42 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo> | ||||
|  |     <!--Franchise Agreement Form_view.--> | ||||
|  |     <record id="franchise_agreement_view_form" model="ir.ui.view"> | ||||
|  |         <field name="name">franchise.agreement.view.form</field> | ||||
|  |         <field name="model">franchise.agreement</field> | ||||
|  |         <field name="arch" type="xml"> | ||||
|  |             <form string="Agreement"> | ||||
|  |                 <sheet> | ||||
|  |                     <group> | ||||
|  |                         <field name="agreement_type"/> | ||||
|  |                         <field name="agreement_body" widget="html" | ||||
|  |                                class="oe-bordered-editor" | ||||
|  |                                options="{'style-inline': true, 'codeview': true, | ||||
|  |                                 'dynamic_placeholder': true}"/> | ||||
|  |                     </group> | ||||
|  |                 </sheet> | ||||
|  |                 <div class="oe_chatter"> | ||||
|  |                     <field name="message_follower_ids"/> | ||||
|  |                     <field name="activity_ids"/> | ||||
|  |                     <field name="message_ids"/> | ||||
|  |                 </div> | ||||
|  |             </form> | ||||
|  |         </field> | ||||
|  |     </record> | ||||
|  |     <!-- Franchise Agreement Tree_view--> | ||||
|  |     <record id="franchise_agreement_view_tree" model="ir.ui.view"> | ||||
|  |         <field name="name">franchise.agreement.view.tree</field> | ||||
|  |         <field name="model">franchise.agreement</field> | ||||
|  |         <field name="arch" type="xml"> | ||||
|  |             <tree> | ||||
|  |                 <field name="agreement_type"/> | ||||
|  |             </tree> | ||||
|  |         </field> | ||||
|  |     </record> | ||||
|  |     <!-- Franchise Agreement Action --> | ||||
|  |     <record id="franchise_agreement_action" model="ir.actions.act_window"> | ||||
|  |         <field name="name">Franchise Agreement</field> | ||||
|  |         <field name="res_model">franchise.agreement</field> | ||||
|  |         <field name="view_mode">tree,form</field> | ||||
|  |     </record> | ||||
|  | </odoo> | ||||