Browse Source

Jan 06 : [ADD] Initial Commit 'refer_friend_and_earn'

pull/254/merge
RisvanaCybro 1 year ago
parent
commit
50a26cedcb
  1. 46
      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. 46
      refer_friend_and_earn/controllers/main.py
  6. 229
      refer_friend_and_earn/controllers/refer_friend_and_earn.py
  7. 22
      refer_friend_and_earn/data/lack_of_points_templates.xml
  8. 13
      refer_friend_and_earn/data/product_template_data.xml
  9. 10
      refer_friend_and_earn/data/refer_and_earn_mail_data.xml
  10. 10
      refer_friend_and_earn/data/website_menu_data.xml
  11. 6
      refer_friend_and_earn/doc/RELEASE_NOTES.md
  12. 25
      refer_friend_and_earn/models/__init__.py
  13. 38
      refer_friend_and_earn/models/apply_discounts.py
  14. 34
      refer_friend_and_earn/models/res_config_settings.py
  15. 37
      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.png
  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/5.png
  58. BIN
      refer_friend_and_earn/static/description/assets/screenshots/hero.gif
  59. BIN
      refer_friend_and_earn/static/description/assets/screenshots/re0001.png
  60. BIN
      refer_friend_and_earn/static/description/assets/screenshots/re0002.png
  61. BIN
      refer_friend_and_earn/static/description/assets/screenshots/re0003.png
  62. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr01.png
  63. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr02.png
  64. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr03.png
  65. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr04.png
  66. BIN
      refer_friend_and_earn/static/description/assets/screenshots/rfr05.png
  67. BIN
      refer_friend_and_earn/static/description/banner.png
  68. BIN
      refer_friend_and_earn/static/description/icon.png
  69. 583
      refer_friend_and_earn/static/description/index.html
  70. 51
      refer_friend_and_earn/static/src/css/refer_and_earn.css
  71. BIN
      refer_friend_and_earn/static/src/img/refer_earn.jpg
  72. 19
      refer_friend_and_earn/static/src/js/website_sale.js
  73. 26
      refer_friend_and_earn/views/apply_discounts_views.xml
  74. 61
      refer_friend_and_earn/views/apply_points_templates.xml
  75. 14
      refer_friend_and_earn/views/auth_signup_login_templates.xml
  76. 163
      refer_friend_and_earn/views/refer_and_earn_templates.xml
  77. 20
      refer_friend_and_earn/views/res_config_settings_views.xml
  78. 17
      refer_friend_and_earn/views/res_partner_views.xml
  79. 17
      refer_friend_and_earn/views/sale_order_views.xml

46
refer_friend_and_earn/README.rst

@ -0,0 +1,46 @@
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
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.
Configuration
=============
Need to set the signup points in the settings of Website
License
-------
General Public License, Version 3 (AGPL v3).
(https://www.gnu.org/licenses/agpl-3.0-standalone.html)
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developer: (V15) Ammu Raj, 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>`__

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: Ammu Raj (odoo@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

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: Ammu Raj (odoo@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': 'Refer and Earn',
'version': '15.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': ['mail', 'website_sale', 'contacts'],
'data': [
'security/ir.model.access.csv',
'data/product_template_data.xml',
'data/lack_of_points_templates.xml',
'data/website_menu_data.xml',
'data/refer_and_earn_mail_data.xml',
'views/refer_and_earn_templates.xml',
'views/res_partner_views.xml',
'views/res_config_settings_views.xml',
'views/auth_signup_login_templates.xml',
'views/apply_points_templates.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': 'AGPL-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: Ammu Raj (odoo@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 main
from . import refer_friend_and_earn

46
refer_friend_and_earn/controllers/main.py

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Ammu Raj (odoo@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.http import request
from odoo.addons.website_sale_product_configurator.controllers.main import \
WebsiteSale
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)
for line in request.website.sale_get_order().order_line:
if line.product_id.id == request.env[
'product.product'].sudo().search(
[('default_code', '=', 'DISCOUNT001')]).id:
original_total_price = sum(
request.website.sale_get_order().order_line.mapped(
'price_subtotal')) - line.price_unit
discount_amount = original_total_price * (
request.website.sale_get_order().discount_applied / 100)
request.website.sale_get_order().order_line.browse(
line.id).write({'price_unit': -discount_amount})
return res

229
refer_friend_and_earn/controllers/refer_friend_and_earn.py

@ -0,0 +1,229 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Ammu Raj (odoo@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/>.
#
################################################################################
import random, werkzeug
from werkzeug.urls import url_encode
from odoo import http, _
from odoo.exceptions import UserError
from odoo.http import _logger, request
from odoo.addons.auth_signup.controllers.main import AuthSignupHome
from odoo.addons.auth_signup.models.res_users import SignupError
from odoo.addons.website_sale.controllers.main import WebsiteSale
class WebsiteLogin(AuthSignupHome):
"""This class used to get the referral code from the website"""
@http.route('/web/signup', type='http', auth='public', website=True,
sitemap=False)
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:
res_user = request.env['res.users'].sudo().search(
[('email', '=', qcontext.get('signup_email')),
('state', '!=', 'new')], limit=1)
if res_user:
return request.redirect('/web/signup?%s' % url_encode(
{'login': res_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)
res_user = request.env["res.users"].sudo().search(
[("login", "=", qcontext.get("login"))])
if not res_user:
partner_rec = request.env['res.partner'].sudo().search(
[('referral_code', '=', qcontext.get('referral_code'))])
if partner_rec:
partner_rec.points = partner_rec.points + float(
request.env['ir.config_parameter'].sudo().get_param(
'refer_friend_and_earn.sign_up_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"""
url = '%s/web/signup?' % request.env[
'ir.config_parameter'].sudo().get_param('web.base.url')
email_values = {'email_to': post.get('email'),
'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, post.get('referral_code')),
}
request.env.ref(
'refer_friend_and_earn.mail_template_refer_and_earn').send_mail(
request.env.user.partner_id.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"""
if kw.get('points'):
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'))
discount_amount = (sum(sale_order.order_line.mapped(
'price_subtotal')) *
(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(kw.get('r', '/shop/cart'))
@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)
discount_order_line_id = 0
order_line = request.website.sale_get_order().order_line
if sum(order_line.mapped('price_subtotal')) <= 0:
for line in 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 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 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)
@http.route(['/shop/confirmation'], type='http', auth="public",
website=True, sitemap=False)
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

22
refer_friend_and_earn/data/lack_of_points_templates.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Template for giving the message to user that, they are not entered valid
points-->
<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 or Set the Discount on
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"?>
<odoo>
<!--Creates a discount product-->
<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_data.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Specify the mail subject and the from address-->
<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>

10
refer_friend_and_earn/data/website_menu_data.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Create a menu named 'Refer and Earn' in website-->
<record id="refer_and_earn_menu" 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>
</odoo>

6
refer_friend_and_earn/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <refer_friend_and_earn>
#### 28.11.2023
#### Version 15.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: Ammu Raj (odoo@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 apply_discounts
from . import res_config_settings
from . import res_partner
from . import sale_order

38
refer_friend_and_earn/models/apply_discounts.py

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Ammu Raj (odoo@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 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 point for getting the'
'discount')
end_points = fields.Integer(string='Ending points',
help='The ending point of discount')
discount = fields.Float(string='Discount in %',
help='The percentage discount that can give between'
'these point')

34
refer_friend_and_earn/models/res_config_settings.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Ammu Raj (odoo@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 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')

37
refer_friend_and_earn/models/res_partner.py

@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Ammu Raj (odoo@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 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", readonly=True,
help="Referral code of the partner")
points = fields.Integer(string='Points', help='Points acquired',
readonly=True)
sign_up = fields.Integer(string='Signups', readonly=True,
help='Shows number of signups happens by using'
'your referral code')

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: Ammu Raj (odoo@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 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,access.mail.template.portal,mail.model_mail_template,base.group_portal,1,1,1,1
access_apply_discounts_user,access.apply.discounts.user,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 access.mail.template.portal mail.model_mail_template base.group_portal 1 1 1 1
3 access_apply_discounts_user access.apply.discounts.user 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.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
refer_friend_and_earn/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
refer_friend_and_earn/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 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/hero.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/re0003.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/15.0/odoo_website_helpdesk/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;"
src="assets/modules/w1.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/15.0/website_product_attachments/" 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/15.0/website_multi_variant/" 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/15.0/wishlist_product_website_backend/" 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/15.0/website_product_publish/" 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/15.0/index_and_follow/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;"
src="assets/modules/w6.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="width:35px; color:#000"> <span
class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</div>
<!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &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 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 -->

51
refer_friend_and_earn/static/src/css/refer_and_earn.css

@ -0,0 +1,51 @@
.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;
});

26
refer_friend_and_earn/views/apply_discounts_views.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- 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>
<!-- 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>
<!--Created a submenu of the name Apply Discounts -->
<menuitem id="apply_discounts_menu"
name="Apply Discount"
parent="website.menu_website_global_configuration"
action="apply_discounts_action"/>
</odoo>

61
refer_friend_and_earn/views/apply_points_templates.xml

@ -0,0 +1,61 @@
<?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>

14
refer_friend_and_earn/views/auth_signup_login_templates.xml

@ -0,0 +1,14 @@
<?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>

163
refer_friend_and_earn/views/refer_and_earn_templates.xml

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!--View of the webpage Refer and Earn, also provide an interface to share
their Referral code -->
<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 friend and can earn. For single sign-up of your
friends, by using the referral code can have points, and
now you can buy the products at exciting discount
prices.
<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-toggle="modal"
data-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: 40px 40px 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="close"
data-dismiss="modal"
aria-label="Close">×
</button>
</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>

20
refer_friend_and_earn/views/res_config_settings_views.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Added a field in res.config.settings to mention how much points will
earn for single sign up-->
<record id="res_config_settings_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="col-12 col-lg-6 o_setting_box">
<label for="sign_up_points"/>
<field name="sign_up_points"/>
</div>
</xpath>
</field>
</record>
</odoo>

17
refer_friend_and_earn/views/res_partner_views.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Shows the points and number of sign up in the website-->
<record id="view_partner_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>

17
refer_friend_and_earn/views/sale_order_views.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Added a field in sale.order to have the points applied on that sale
order-->
<record id="view_order_form" model="ir.ui.view">
<field name="name">sale.order.view.form.inherit.refer.friend.and.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