@ -0,0 +1,48 @@ |
|||
.. 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: (V15) Gayathri V, |
|||
(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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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': '15.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_groups.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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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,108 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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.ref('franchise_management.franchise_contract_report_action').sudo()._render_qweb_pdf( |
|||
[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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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> |
|||
|
|||
#### 11.09.2024 |
|||
#### Version 15.0.1.0.0 |
|||
#### ADD |
|||
- Initial commit for Franchise Management |
@ -0,0 +1,26 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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,334 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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 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) |
|||
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(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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V(<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) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gaythri V(<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: 55 KiB |
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 15 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: 147 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 221 KiB |
After Width: | Height: | Size: 169 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 156 KiB |