Browse Source

Jul 01 : [ADD] Initial Commit 'refer_friend_and_earn'

pull/266/head
Shijin V 2 years ago
parent
commit
d1195e71b7
  1. 49
      refer_friend_and_earn/README.rst
  2. 23
      refer_friend_and_earn/__init__.py
  3. 66
      refer_friend_and_earn/__manifest__.py
  4. 23
      refer_friend_and_earn/controllers/__init__.py
  5. 228
      refer_friend_and_earn/controllers/refer_friend_and_earn.py
  6. 49
      refer_friend_and_earn/controllers/variants_discount.py
  7. 20
      refer_friend_and_earn/data/lack_of_points_template.xml
  8. 13
      refer_friend_and_earn/data/product_template_data.xml
  9. 10
      refer_friend_and_earn/data/refer_and_earn_mail_template.xml
  10. 12
      refer_friend_and_earn/data/refer_and_earn_menu.xml
  11. 5
      refer_friend_and_earn/doc/RELEASE_NOTES.md
  12. 25
      refer_friend_and_earn/models/__init__.py
  13. 35
      refer_friend_and_earn/models/apply_discounts.py
  14. 33
      refer_friend_and_earn/models/res_config_settings.py
  15. 38
      refer_friend_and_earn/models/res_partner.py
  16. 34
      refer_friend_and_earn/models/sale_order.py
  17. 3
      refer_friend_and_earn/security/ir.model.access.csv
  18. BIN
      refer_friend_and_earn/static/description/assets/icons/check.png
  19. BIN
      refer_friend_and_earn/static/description/assets/icons/chevron.png
  20. BIN
      refer_friend_and_earn/static/description/assets/icons/cogs.png
  21. BIN
      refer_friend_and_earn/static/description/assets/icons/consultation.png
  22. BIN
      refer_friend_and_earn/static/description/assets/icons/ecom-black.png
  23. BIN
      refer_friend_and_earn/static/description/assets/icons/education-black.png
  24. BIN
      refer_friend_and_earn/static/description/assets/icons/hotel-black.png
  25. BIN
      refer_friend_and_earn/static/description/assets/icons/license.png
  26. BIN
      refer_friend_and_earn/static/description/assets/icons/lifebuoy.png
  27. BIN
      refer_friend_and_earn/static/description/assets/icons/manufacturing-black.png
  28. BIN
      refer_friend_and_earn/static/description/assets/icons/pos-black.png
  29. BIN
      refer_friend_and_earn/static/description/assets/icons/puzzle.png
  30. BIN
      refer_friend_and_earn/static/description/assets/icons/restaurant-black.png
  31. BIN
      refer_friend_and_earn/static/description/assets/icons/service-black.png
  32. BIN
      refer_friend_and_earn/static/description/assets/icons/trading-black.png
  33. BIN
      refer_friend_and_earn/static/description/assets/icons/training.png
  34. BIN
      refer_friend_and_earn/static/description/assets/icons/update.png
  35. BIN
      refer_friend_and_earn/static/description/assets/icons/user.png
  36. BIN
      refer_friend_and_earn/static/description/assets/icons/wrench.png
  37. BIN
      refer_friend_and_earn/static/description/assets/misc/categories.png
  38. BIN
      refer_friend_and_earn/static/description/assets/misc/check-box.png
  39. BIN
      refer_friend_and_earn/static/description/assets/misc/compass.png
  40. BIN
      refer_friend_and_earn/static/description/assets/misc/corporate.png
  41. BIN
      refer_friend_and_earn/static/description/assets/misc/customer-support.png
  42. BIN
      refer_friend_and_earn/static/description/assets/misc/cybrosys-logo.png
  43. BIN
      refer_friend_and_earn/static/description/assets/misc/features.png
  44. BIN
      refer_friend_and_earn/static/description/assets/misc/logo.png
  45. BIN
      refer_friend_and_earn/static/description/assets/misc/pictures.png
  46. BIN
      refer_friend_and_earn/static/description/assets/misc/pie-chart.png
  47. BIN
      refer_friend_and_earn/static/description/assets/misc/right-arrow.png
  48. BIN
      refer_friend_and_earn/static/description/assets/misc/star.png
  49. BIN
      refer_friend_and_earn/static/description/assets/misc/support.png
  50. BIN
      refer_friend_and_earn/static/description/assets/misc/whatsapp.png
  51. BIN
      refer_friend_and_earn/static/description/assets/modules/w1.gif
  52. BIN
      refer_friend_and_earn/static/description/assets/modules/w2.png
  53. BIN
      refer_friend_and_earn/static/description/assets/modules/w3.png
  54. BIN
      refer_friend_and_earn/static/description/assets/modules/w4.png
  55. BIN
      refer_friend_and_earn/static/description/assets/modules/w5.png
  56. BIN
      refer_friend_and_earn/static/description/assets/modules/w6.png
  57. BIN
      refer_friend_and_earn/static/description/assets/screenshots/1.png
  58. BIN
      refer_friend_and_earn/static/description/assets/screenshots/2.png
  59. BIN
      refer_friend_and_earn/static/description/assets/screenshots/3.png
  60. BIN
      refer_friend_and_earn/static/description/assets/screenshots/4.png
  61. BIN
      refer_friend_and_earn/static/description/assets/screenshots/5.png
  62. BIN
      refer_friend_and_earn/static/description/assets/screenshots/hero1.gif
  63. BIN
      refer_friend_and_earn/static/description/assets/screenshots/re0001.png
  64. BIN
      refer_friend_and_earn/static/description/assets/screenshots/re0002.png
  65. BIN
      refer_friend_and_earn/static/description/assets/screenshots/re0003.png
  66. BIN
      refer_friend_and_earn/static/description/assets/screenshots/re0004.png
  67. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr01.png
  68. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr02.png
  69. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr03.png
  70. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr04.png
  71. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr05.png
  72. BIN
      refer_friend_and_earn/static/description/banner.jpg
  73. BIN
      refer_friend_and_earn/static/description/icon.png
  74. 583
      refer_friend_and_earn/static/description/index.html
  75. 57
      refer_friend_and_earn/static/src/css/refer_and_earn.css
  76. BIN
      refer_friend_and_earn/static/src/img/refer_earn.jpg
  77. 19
      refer_friend_and_earn/static/src/js/website_sale.js
  78. 27
      refer_friend_and_earn/views/apply_discounts_views.xml
  79. 56
      refer_friend_and_earn/views/apply_points_template.xml
  80. 12
      refer_friend_and_earn/views/auth_signup_login_templates.xml
  81. 137
      refer_friend_and_earn/views/refer_and_earn_template.xml
  82. 17
      refer_friend_and_earn/views/res_config_settings_views.xml
  83. 16
      refer_friend_and_earn/views/res_partner_views.xml
  84. 15
      refer_friend_and_earn/views/sale_order_views.xml

49
refer_friend_and_earn/README.rst

@ -0,0 +1,49 @@
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
Refer and Earn
=============
* By utilizing this module, we have the capability to share a referral code
with our friends through email, enabling them to log in using the same code.
In this system, it is feasible to define a specific points for single sign-up
in the settings, can also specify the discount in percentage for a range of
points.Login with our referral code allows us to accumulate points, which can
then be utilized to make discounted purchases.
Installation
============
- www.odoo.com/documentation/16.0/setup/install.html
- Install our custom addon
License
-------
General Public License, Version 3 (LGPL v3).
(https://www.odoo.com/documentation/user/16.0/legal/licenses/licenses.html)
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developer: (v16) Anjana P V @ Cybrosys
Contacts
--------
* Mail Contact : odoo@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 https://www.cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__

23
refer_friend_and_earn/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import controllers
from . import models

66
refer_friend_and_earn/__manifest__.py

@ -0,0 +1,66 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': 'Refer and Earn',
'version': '16.0.1.0.0',
'category': 'Website',
'summary': """ Refer your friend by using referral code and have points
while they log in with that referral code. According to the
secured points, it is possible to have discount on products """,
'description': """By using this module,we are able to share a referral code
with our friends and they are able to log in by that referral
code. Here it is possible to set a sign up points in the
settings and it is also able to give the discounts in
percentage, for each points. Log in with our referral code
will helps to have points, and by using that points, purchase
the product at discount price""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['base', 'mail', 'website_sale', 'contacts'],
'data': [
'security/ir.model.access.csv',
'data/product_template_data.xml',
'data/refer_and_earn_mail_template.xml',
'data/lack_of_points_template.xml',
'data/refer_and_earn_menu.xml',
'views/refer_and_earn_template.xml',
'views/res_partner_views.xml',
'views/res_config_settings_views.xml',
'views/auth_signup_login_templates.xml',
'views/apply_points_template.xml',
'views/apply_discounts_views.xml',
'views/sale_order_views.xml',
],
'assets': {
'web.assets_frontend': [
'refer_friend_and_earn/static/src/js/website_sale.js',
'refer_friend_and_earn/static/src/css/refer_and_earn.css',
],
},
'images': ['static/description/banner.png'],
'license': 'LGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

23
refer_friend_and_earn/controllers/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import refer_friend_and_earn
from . import variants_discount

228
refer_friend_and_earn/controllers/refer_friend_and_earn.py

@ -0,0 +1,228 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
import random, werkzeug
from werkzeug.urls import url_encode
from odoo import _, http
from odoo.addons.auth_signup.controllers.main import AuthSignupHome
from odoo.addons.website_sale.controllers.main import WebsiteSale
from odoo.addons.auth_signup.models.res_users import SignupError
from odoo.exceptions import UserError
from odoo.http import _logger, request
class WebsiteLogin(AuthSignupHome):
"""This class used to get the referral code from the website"""
def web_auth_signup(self, *args, **kw):
"""Overwrite the function web_auth_signup, to add the referral code
to qcontext"""
qcontext = self.get_auth_signup_qcontext()
qcontext.update({
'referral_code': kw.get('referral_code')
})
if not qcontext.get('token') and not qcontext.get('signup_enabled'):
raise werkzeug.exceptions.NotFound()
if 'error' not in qcontext and request.httprequest.method == 'POST':
try:
self.do_signup(qcontext)
User = request.env['res.users']
user_sudo = User.sudo().search(
User._get_login_domain(qcontext.get('login')),
order=User._get_login_order(), limit=1
)
template = request.env.ref(
'auth_signup.mail_template_user_signup_account_created',
raise_if_not_found=False)
if user_sudo and template:
template.sudo().send_mail(user_sudo.id, force_send=True)
return self.web_login(*args, **kw)
except UserError as e:
qcontext['error'] = e.args[0]
except (SignupError, AssertionError) as e:
if request.env["res.users"].sudo().search(
[("login", "=", qcontext.get("login"))]):
qcontext["error"] = _("Another user is already registered"
" using this email address.")
else:
_logger.error("%s", e)
qcontext['error'] = _("Could not create a new account.")
elif 'signup_email' in qcontext:
user = request.env['res.users'].sudo().search(
[('email', '=', qcontext.get('signup_email')),
('state', '!=', 'new')], limit=1)
if user:
return request.redirect('/web/login?%s' % url_encode(
{'login': user.login, 'redirect': '/web'}))
response = request.render('auth_signup.signup', qcontext)
response.headers['X-Frame-Options'] = 'SAMEORIGIN'
response.headers['Content-Security-Policy'] = "frame-ancestors 'self'"
return response
def _prepare_signup_values(self, qcontext, **post):
"""Inherited the function _prepare_signup_values to get the current
referral code and thus want to find partner with that referral code,
to add points"""
res = super(WebsiteLogin, self)._prepare_signup_values(qcontext, **post)
current_referral_code = qcontext.get('referral_code')
partner_rec = request.env['res.partner'].sudo().search(
[('referral_code', '=', current_referral_code)])
if partner_rec:
signup_points = request.env['ir.config_parameter'].sudo().get_param(
'refer_friend_and_earn.sign_up_points')
partner_rec.points = partner_rec.points + float(signup_points)
partner_rec.sign_up = partner_rec.sign_up + 1
return res
class ReferAndEarn(http.Controller):
"""This class will allow to generate the referral code and send to
other person """
@http.route('/refer/earn', type='http', auth="user", website=True)
def refer_earn(self):
"""This function is used to create new referral code for newly signup
one if already logged one is login again, then it will return already
created referral code"""
current_user_code = request.env.user.partner_id.referral_code
if not current_user_code:
num = "0123456789"
lowercase = "abcdefghijklmnopqrstuvwxyz"
capital = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
no_of_digit = 7
comb = num + lowercase + capital
codes = "".join(random.sample(comb, no_of_digit))
request.env.user.partner_id.referral_code = codes
else:
codes = request.env.user.partner_id.referral_code
return request.render('refer_friend_and_earn.refer_earn_template', {
'codes': codes,
'points': request.env.user.partner_id.points,
'sign_up': request.env.user.partner_id.sign_up,
})
@http.route('/refer_and_earn/form/submit', type='http', auth="user",
website=True)
def refer_and_earn_popup(self, **post):
"""This function will help to collect the recipient of
mail and send mail to them"""
base_url = request.env['ir.config_parameter'].sudo().get_param(
'web.base.url')
url = '%s/web/signup?' % base_url
code = post.get('referral_code')
email_to = post.get('email')
email_values = {'email_to': email_to,
'body_html': '<p>Hello, <br/> Now, its your chance to '
'have unbelivable offers, for that just '
' click the link %s and use the code %s to'
' login</p>' % (url, code),
}
login_user = request.env.user.partner_id
mail_template = request.env.ref(
'refer_friend_and_earn.mail_template_refer_and_earn')
mail_template.send_mail(login_user.id, email_values=email_values,
force_send=True)
return request.render('refer_friend_and_earn.website_success_page', {})
class WebsiteSale(WebsiteSale):
"""This class will calculate the discount percentage according to the
points secured, and also helps to add the discount product in the
order line"""
@http.route('/shop/pricelist/points', type='http', auth="user",
website=True)
def refer_earn(self, **kw):
"""This function will help to apply the discount according
to the points secured"""
redirect = kw.get('r', '/shop/cart')
points_rec = request.env['apply.discounts'].sudo().search(
[('starting_points', '<=', int(kw.get('points'))),
('end_points', '>=', int(kw.get('points')))],
order='create_date desc', limit=1)
if int(kw.get('points')) > request.env.user.partner_id.points:
return request.render(
'refer_friend_and_earn.lack_of_points_template', {})
if points_rec:
sale_order = request.website.sale_get_order()
sale_order.discount_applied = points_rec.discount
sale_order.points_applied = int(kw.get('points'))
total_price = sum(sale_order.order_line.mapped('price_subtotal'))
discount_amount = total_price * (sale_order.discount_applied / 100)
discount_product_id = request.env['product.product'].sudo().search(
[('default_code', '=', 'DISCOUNT001')])
discount_product_id.list_price = -discount_amount
sale_order.write({'order_line': [(0, 0,
{'id': sale_order.order_line,
'order_id': sale_order,
'product_id': discount_product_id.id,
'product_uom_qty': 1,
})]
})
else:
return request.render(
'refer_friend_and_earn.lack_of_points_template', {})
return request.redirect(redirect)
@http.route()
def cart_update_json(self, *args, set_qty=None, **kwargs):
"""This function will work when we have some updates from the cart, ie,
add or delete the products from the cart"""
super().cart_update_json(*args, set_qty=set_qty, **kwargs)
total_price = sum(request.website.sale_get_order().order_line.mapped(
'price_subtotal'))
discount_order_line_id = 0
if total_price <= 0:
for line in request.website.sale_get_order().order_line:
line.product_uom_qty = 0
line.sudo().unlink()
else:
discount_product_id = request.env[
'product.product'].sudo().search(
[('default_code', '=', 'DISCOUNT001')])
original_total_price = 0
for line in request.website.sale_get_order().order_line:
if line.product_id.id != discount_product_id.id:
original_total_price += line.price_subtotal
else:
discount_order_line_id = line.id
for line in request.website.sale_get_order().order_line:
if line.product_id.id == discount_product_id.id:
discount_percentage = request.website.sale_get_order().discount_applied
discount_amount = original_total_price * (
discount_percentage / 100)
order_line_discount_price = -discount_amount
discount_product_id.list_price = -discount_amount
order_line = request.website.sale_get_order().order_line.browse(
discount_order_line_id)
order_line.write({
'price_unit': order_line_discount_price,
})
return http.request.redirect(http.request.httprequest.url)
def shop_payment_confirmation(self, **post):
"""This function is used to decrease the applied points from the
partner's secured points"""
sale_order_id = request.session.get('sale_last_order_id')
res = super().shop_payment_confirmation(**post)
points = request.env['sale.order'].browse(sale_order_id).points_applied
request.env.user.partner_id.points = request.env.user.partner_id.points - points
return res

49
refer_friend_and_earn/controllers/variants_discount.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo.addons.website_sale_product_configurator.controllers.main import \
WebsiteSale
from odoo.http import request
class Cart(WebsiteSale):
"""This class is used to recalculate the discount when we add a product with
variants to the cart"""
def cart_options_update_json(self, *args, **kwargs):
"""This class is used to recalculate the discount when we add a product
with variants to the cart"""
res = super().cart_options_update_json(*args, **kwargs)
discount_product_id = request.env['product.product'].sudo().search(
[('default_code', '=', 'DISCOUNT001')])
for line in request.website.sale_get_order().order_line:
if line.product_id.id == discount_product_id.id:
order_line_discount = line.price_unit
total_price = sum(request.website.sale_get_order().order_line.mapped('price_subtotal'))
original_total_price = total_price - order_line_discount
discount_percentage = request.website.sale_get_order().discount_applied
discount_amount = original_total_price * (
discount_percentage / 100)
order_line_discount_price = -discount_amount
order_line = request.website.sale_get_order().order_line.browse(line.id)
order_line.write({
'price_unit': order_line_discount_price,
})
return res

20
refer_friend_and_earn/data/lack_of_points_template.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Template for giving the message to user that, they are not entered valid points-->
<odoo>
<template id="lack_of_points_template">
<t t-call="website.layout">
<div id="wrap">
<div class="container">
<div class="col-md-12">
<div class="alert alert-danger">
Sorry !!!!!!!!!!!!!
<br/>
Please enter valid points
</div>
<a href='/shop/cart'>Go Back</a>
</div>
</div>
</div>
</t>
</template>
</odoo>

13
refer_friend_and_earn/data/product_template_data.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Creates a discount product-->
<odoo>
<data noupdate="1">
<record id="discount_product" model="product.template">
<field name="name">Discount</field>
<field name="taxes_id" eval="False"/>
<field name="list_price">0.0</field>
<field name="default_code">DISCOUNT001</field>
<field name="detailed_type">service</field>
</record>
</data>
</odoo>

10
refer_friend_and_earn/data/refer_and_earn_mail_template.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Specify the mail subject and the from address-->
<odoo>
<record id="mail_template_refer_and_earn" model="mail.template">
<field name="name">Refer Code: Refer and Earn</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="subject">Refer And Earn</field>
<field name="email_from">{{object.email}}</field>
</record>
</odoo>

12
refer_friend_and_earn/data/refer_and_earn_menu.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Create a menu named 'Refer and Earn' in website-->
<odoo>
<data>
<record id="refer_and_earn" model="website.menu">
<field name="name">Refer and Earn</field>
<field name="url">/refer/earn</field>
<field name="parent_id" ref="website.main_menu"/>
<field name="sequence" type="int">80</field>
</record>
</data>
</odoo>

5
refer_friend_and_earn/doc/RELEASE_NOTES.md

@ -0,0 +1,5 @@
## Module <refer_friend_and_earn>
#### 01.07.2023
#### Version 16.0.1.0.0
##### ADD
- Initial Commit for Refer and Earn

25
refer_friend_and_earn/models/__init__.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import apply_discounts
from . import res_config_settings
from . import res_partner
from . import sale_order

35
refer_friend_and_earn/models/apply_discounts.py

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class ApplyDiscounts(models.Model):
"""This class is used to define the discounts in percentage according the
points acquired"""
_name = 'apply.discounts'
_description = 'Apply discounts according to the points'
starting_points = fields.Integer(string='Starting point', help='Starting '
'points')
end_points = fields.Integer(string='Ending points', help='Ending points')
discount = fields.Float(string='Discount in %', help='Discounts in '
'Percentage')

33
refer_friend_and_earn/models/res_config_settings.py

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
"""Inherited the module res.config.settings to add a field which shows how
much points will earn for single signup"""
_inherit = 'res.config.settings'
sign_up_points = fields.Float(string="Signup Points",
help='shows how much points will earn for '
'single signup',
config_parameter='refer_friend_and_earn.sign_up_points')

38
refer_friend_and_earn/models/res_partner.py

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class ResPartner(models.Model):
"""Inherited the module res.partner to add the following fields, which
indicate the referral code, points earned and no: of signups happened by
using their referral code"""
_inherit = 'res.partner'
referral_code = fields.Char(string="Referral Code", help="Referral code",
readonly=True)
points = fields.Integer(string='points', help='Points acquired',
readonly=True)
sign_up = fields.Integer(string='signups', help='shows number of signup '
'happens by using your'
' referral code',
readonly=True)

34
refer_friend_and_earn/models/sale_order.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class SaleOrder(models.Model):
"""Inherited the module sale.order to add a field which shows how
much points applied for sale order"""
_inherit = 'sale.order'
points_applied = fields.Float(string='Points applied',
help='Points applied to the corresponding '
'sale order')
discount_applied = fields.Float(string='discount applied',
help='The percentage of discount applied')

3
refer_friend_and_earn/security/ir.model.access.csv

@ -0,0 +1,3 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_mail_template_portal,mail.template,mail.model_mail_template,base.group_portal,1,1,1,1
access_apply_discounts,access.apply.discounts,refer_friend_and_earn.model_apply_discounts,base.group_user,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_mail_template_portal mail.template mail.model_mail_template base.group_portal 1 1 1 1
3 access_apply_discounts access.apply.discounts refer_friend_and_earn.model_apply_discounts base.group_user 1 1 1 1

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
refer_friend_and_earn/static/description/assets/modules/w1.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

BIN
refer_friend_and_earn/static/description/assets/modules/w2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
refer_friend_and_earn/static/description/assets/modules/w3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
refer_friend_and_earn/static/description/assets/modules/w4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
refer_friend_and_earn/static/description/assets/modules/w5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
refer_friend_and_earn/static/description/assets/modules/w6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/hero1.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/re0001.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/re0002.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/re0003.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/re0004.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/rfr01.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/rfr02.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/rfr03.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/rfr04.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
refer_friend_and_earn/static/description/assets/screenshots/rfr05.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
refer_friend_and_earn/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
refer_friend_and_earn/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

583
refer_friend_and_earn/static/description/index.html

@ -0,0 +1,583 @@
<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/cybrosys-logo.png" width="42" height="42" style="width: 42px; height: 42px;" />
<div>
<div
style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Community
</div>
<div
style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
<div
style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Odoo.sh
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Refer And Earn</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">Refer your friends and Earn</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero1.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;" />
</div>
</div>
</div>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Explore This
Module</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
features of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
screenshots of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Overview
</h2>
</div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
By using this module you can refer your friend and by sharing the referral code you can earn points, while your friend login
with that referral code. And by using that points, you can purchase the product at a discount price
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features
</h2>
</div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">You can easily refer your friend</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Can send your referral code through mail</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Your friend can use your referral code to sign up, and thus you will get points
, and by using this points you can purchase at a discount price</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Your friends can also refer another person </span>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Signup points</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
From Website > Configuration > Settings, specify the points that can be earned,while someone login by using referral code </p>
<img src="assets/screenshots/re0001.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Menu, Apply Discount</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
From, Website > Configuration > Apply Discount</p>
<img src="assets/screenshots/re0002.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Discount</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Specify the points and discount in %</p>
<img src="assets/screenshots/re0004.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Refer and Earn</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
From the website, you can click on Refer and Earn menu, and thus you are directed to the webpage,
from there it is possible to share the referral code via email</p>
<img src="assets/screenshots/rfr01.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Send mail</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Here, mention your friends email and able to send your referral code to them</p>
<img src="assets/screenshots/rfr02.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Sign up</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Friends can sign up with referral code</p>
<img src="assets/screenshots/5.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Click on I have points</h3>
<img src="assets/screenshots/rfr03.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Apply points</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> Specify the points, and click on 'Apply' button</p>
<img src="assets/screenshots/rfr04.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Discount is applied</h3>
<img src="assets/screenshots/rfr05.png" class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Related
Products
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/voice_note_in_chatter/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;"
src="assets/modules/w1.gif">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/ohrms_overtime/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;"
src="assets/modules/w2.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/hr_employee_updation//" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;"
src="assets/modules/w3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item active" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/bom_total_cost/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;"
src="assets/modules/w4.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/list_view_sticky_header/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;"
src="assets/modules/w5.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/model_access_rights/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;"
src="assets/modules/w6.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="width:35px; color:#000"> <span
class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</div>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</div>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48" style="width: 42px; height: 42px;" />
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help? Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52" style="width: 52px; height: 52px;" />
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;" />
</div>
</div>
</div>
<!-- END OF SUPPORT -->

57
refer_friend_and_earn/static/src/css/refer_and_earn.css

@ -0,0 +1,57 @@
.image{
background-image:url("/refer_friend_and_earn/static/src/img/refer_earn.jpg");
background-size:cover;
height:300px;
width:600px;
}
.code{
width: 314px;
margin-top: 20px;
}
.main1{
background-color:#dfebe9;
height:100%;
width:100%;
display:flex;
padding-top:50px;
}
.share{
margin-top: 20px;
}
.main-right{
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.content{
width: 472px;
margin-left: 33px;
line-height: 34px;
text-align: justify;
padding:-3px;
}
@media (max-width:998px){
.main1{
flex-wrap: wrap;
justify-content:center;
}
.content {
width: 95%;
padding-right: 20px;
}
}
@media (max-width:616px){
.image {
width: 312px;
height: 200px;
}
}

BIN
refer_friend_and_earn/static/src/img/refer_earn.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

19
refer_friend_and_earn/static/src/js/website_sale.js

@ -0,0 +1,19 @@
odoo.define('refer_friend_and_earn.refer_and_earn', function(require) {
"use strict";
/**
* This file used control the visibility of 'I have points'
*/
var publicWidget = require('web.public.widget');
publicWidget.registry.ReferAndEarn = publicWidget.Widget.extend({
selector: '.oe_website_sale',
events: {
'click .show_points': '_onClickShowPoints',
},
// While click on the 'I have points', hide the text and shows the input field
_onClickShowPoints: function (ev) {
this.$el.find(".show_points").hide();
this.$el.find('.point_form').removeClass('d-none');
},
});
return publicWidget.registry.ReferAndEarn;
});

27
refer_friend_and_earn/views/apply_discounts_views.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Action of the model apply.discounts-->
<record id="apply_discounts_action" model="ir.actions.act_window">
<field name="name">Apply Discounts</field>
<field name="res_model">apply.discounts</field>
<field name="view_mode">tree</field>
</record>
<!-- Tree of the model apply.discounts-->
<record id="apply_discounts_view_tree" model="ir.ui.view">
<field name="name">apply.discounts.view.tree</field>
<field name="model">apply.discounts</field>
<field name="arch" type="xml">
<tree editable="bottom">
<field name="starting_points" />
<field name="end_points" />
<field name="discount"/>
</tree>
</field>
</record>
<!--Created a submenu of the name Apply Discounts -->
<menuitem id="apply_discounts_action_menu"
name="Apply Discount"
sequence="87"
parent="website.menu_website_global_configuration"
action="apply_discounts_action"/>
</odoo>

56
refer_friend_and_earn/views/apply_points_template.xml

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Introduce an interface to provide the points in website-->
<odoo>
<template id="have_points" inherit_id="website_sale.total"
name="Referral Code">
<xpath expr="//div[@id='cart_total']//table/tr[last()]" position="after">
<div class="wrap">
<t t-set="discount_product" t-value="request.env['product.product'].sudo().search([('default_code','=','DISCOUNT001')])"/>
<t t-foreach="website_sale_order.order_line" t-as="line">
<t t-if="line.product_id.id==discount_product.id">
<t t-set="has_point" t-value="1"/>
</t>
</t>
<t t-if="website_sale_order.partner_id.points">
<t t-if="not has_point">
<tr t-if="not hide_promotions">
<td colspan="3"
class="text-center text-xl-end border-0">
<span class=''>
<t t-set='force_point' t-value="website_sale_order.partner_id.points"/>
<t t-if="force_point">
<a href="#" class="show_points">I have points</a>
</t>
<div t-attf-class="point_form #{ force_point and 'd-none'}">
<t t-call="refer_friend_and_earn.point_form"/>
</div>
</span>
</td>
</tr>
</t>
</t>
</div>
</xpath>
</template>
<!-- Template for applying the points-->
<template id='point_form' name='point form'>
<form t-att-action="'/shop/pricelist/points%s' % (redirect and '?r=' + redirect or '')"
method="post" name="coupon_code">
<input type="hidden" name="csrf_token"
t-att-value="request.csrf_token()"/>
<div class="input-group w-100">
<input name="points" class="form-control" type="text"
id="points" placeholder="points..."
t-att-value="website_sale_order.partner_id.points"/>
<div class="input-group-append">
<a href="#" role="button" name="apply"
class="btn btn-secondary a-submit" id="points_apply">
Apply
</a>
</div>
<div>
</div>
</div>
</form>
</template>
</odoo>

12
refer_friend_and_earn/views/auth_signup_login_templates.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Add an input field in sign up page, to have the Referral code-->
<odoo>
<template id="signup_referral_code" inherit_id="auth_signup.signup" name="Referral Code Sign Up">
<xpath expr="//input[@name='token']" position="before">
<div class="mb-3 field-referral_code">
<label for="referral_code">Referral Code</label>
<input type="text" name="referral_code" id="referral_code" class="form-control form-control-sm"/>
</div>
</xpath>
</template>
</odoo>

137
refer_friend_and_earn/views/refer_and_earn_template.xml

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--View of the webpage Refer and Earn, also provide an interface to share their Referral code -->
<odoo>
<template id="refer_earn_template" name="Refer and Earn">
<t t-call="website.layout">
<div class="main1">
<div class ='main-left'>
<b><i><h1 style="color: #6e4975;font-family: revert;margin-left: 33px">
Refer Your Friend and Earn
</h1>
</i></b>
<p class="content">
<span><b>Now</b></span>
,you can introduce us to your friends and earn points.
You have a unique referral code, and can send it to your
friends and request
them to log in to the site by using the referral code and,
they are also able to
refer another friends and can earn.For single sign up of
your fiends, by using the referral code
can have points, and now you can buy the products at
exciting discount price.
<br/><br/>
<b><h3>
<i style="color: #6e4975;font-family: initial; margin-left: 45px;">
Wish you a happy Shopping.........!!!!!!!!!!!!
</i>
</h3></b>
</p>
</div>
<div class ='main-right'>
<div class="image">
</div>
<div id="wrap">
<div class="" style="display: flex;align-items: center;">
<div class="code">
Referral Code
<input type="text" t-att-value="codes"
name="refer_code" id="refer_code" readonly="1"/>
</div>
<div class="sign-btn"><a role="button"
class="btn btn-primary share" data-bs-toggle="modal"
data-bs-target="#modalaccept"
href="#">Share</a></div>
</div>
</div>
<div class="tile1"
style="background: rgb(206, 216, 145); width: 112px;border-radius: 11px;margin: 20px 0px 0px 0px;">
<h4 style="color: #6e4975;">Sign up:</h4>
<b><center style="color: rgb(227, 133, 105);">
<t t-esc="sign_up"/>
</center></b>
</div>
<div class="tile2"
style="background: #bed5db; width: 112px;border-radius: 11px; margin: 20px 0px 50px 200px;">
<h4 style="color: #6e4975;">Points:</h4>
<b><center style="color: rgb(227, 133, 105);">
<t t-esc="points"/>
</center></b>
</div>
<div role="dialog" class="modal fade" id="modalaccept">
<div class="modal-dialog">
<form id="accept" method="POST"
class="js_accept_json modal-content js_website_submit_form"
action="/refer_and_earn/form/submit">
<input class='link-style' type="hidden"
name="csrf_token"
t-att-value="request.csrf_token()"/>
<header class="modal-header">
<h4 class="modal-title"
style="margin-left:193px;">Mail to your friend</h4>
<button type="button" class="btn-close"
data-bs-dismiss="modal"
aria-label="Close"/>
</header>
<main class="modal-body" id="sign-dialog"
align="center">
<center>
<table>
<tr>
<td>Email</td>
<td/><td/>
<td>
<input type="email" id="email"
name="email"
placeholder="email"
required="True"/>
<br/>
</td>
</tr>
<tr>
<td>Referral Code</td>
<td/><td/>
<td>
<input type="text"
id="referral_code"
t-att-value="codes"
name="referral_code"
placeholder="Enter your code"
readonly="1"/>
</td>
</tr>
</table>
</center>
<br/>
<button string="send" type="submit" value="send"
id="send" name="Send"
class="btn-primary"
style="width: 58px;height: 32px;margin-left: 260px;border-radius: 3px;">
Send
</button>
</main>
</form>
</div>
</div>
</div>
</div>
</t>
</template>
<!-- After sending the mail, redirected to this template-->
<template id="website_success_page" name="Message Sent">
<t t-call="website.layout">
<div id="wrap">
<div class="container">
<div class="col-md-12">
<div class="alert alert-success">
Thank you!!!!!!!!!!!!!
<br/>
Your Referral code has been successfully sent
</div>
<a href='/refer/earn'>Go Back</a>
</div>
</div>
</div>
</t>
</template>
</odoo>

17
refer_friend_and_earn/views/res_config_settings_views.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Added a field in res.config.settings to mention how much points will earn for single sign up-->
<odoo>
<record id="res_config_setting_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.refer.friend.and.earn</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="website.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='favicon']" position="after">
<div class="row mt8">
<label class="col-lg-3" for="sign_up_points"/>
<field name="sign_up_points"/>
</div>
</xpath>
</field>
</record>
</odoo>

16
refer_friend_and_earn/views/res_partner_views.xml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Shows the points and number of sign up in the website-->
<odoo>
<record id="res_partner_view_form" model="ir.ui.view">
<field name="name">res.partner.view.form.inherit.refer.friend.and.earn</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='vat']" position="after">
<field name="referral_code"/>
<field name="points"/>
<field name="sign_up"/>
</xpath>
</field>
</record>
</odoo>

15
refer_friend_and_earn/views/sale_order_views.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Added a field in sale.order to have the points applied on that sale order-->
<odoo>
<record id="sale_order_form_inherit_refer_friend_earn" model="ir.ui.view">
<field name="name">sale.order.form.inherit.refer.friend.earn</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='payment_term_id']" position="after">
<field name="points_applied" invisible="1"/>
<field name="discount_applied" invisible="1"/>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save