@ -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> |