Browse Source

Feb 28 : [ADD] Initial Commit 'website_customer_wallet'

pull/267/merge
RisvanaCybro 1 year ago
parent
commit
fc76a2b515
  1. 46
      website_customer_wallet/README.rst
  2. 24
      website_customer_wallet/__init__.py
  3. 68
      website_customer_wallet/__manifest__.py
  4. 27
      website_customer_wallet/controllers/__init__.py
  5. 71
      website_customer_wallet/controllers/add_money.py
  6. 37
      website_customer_wallet/controllers/check_pin_number.py
  7. 40
      website_customer_wallet/controllers/main.py
  8. 34
      website_customer_wallet/controllers/recheck_pin_number.py
  9. 48
      website_customer_wallet/controllers/wallet_transactions.py
  10. 31
      website_customer_wallet/controllers/website_customer_wallet.py
  11. 15
      website_customer_wallet/data/ir_sequence_data.xml
  12. 31
      website_customer_wallet/data/mail_data_templates.xml
  13. 5
      website_customer_wallet/doc/RELEASE_NOTES.md
  14. 25
      website_customer_wallet/models/__init__.py
  15. 64
      website_customer_wallet/models/customer_wallet_transaction.py
  16. 76
      website_customer_wallet/models/loyalty_card.py
  17. 36
      website_customer_wallet/models/res_config_settings.py
  18. 50
      website_customer_wallet/models/res_users.py
  19. 3
      website_customer_wallet/security/ir.model.access.csv
  20. 15
      website_customer_wallet/static/css/conditionalstyle.css
  21. BIN
      website_customer_wallet/static/description/assets/icons/check.png
  22. BIN
      website_customer_wallet/static/description/assets/icons/chevron.png
  23. BIN
      website_customer_wallet/static/description/assets/icons/cogs.png
  24. BIN
      website_customer_wallet/static/description/assets/icons/consultation.png
  25. BIN
      website_customer_wallet/static/description/assets/icons/ecom-black.png
  26. BIN
      website_customer_wallet/static/description/assets/icons/education-black.png
  27. BIN
      website_customer_wallet/static/description/assets/icons/hotel-black.png
  28. BIN
      website_customer_wallet/static/description/assets/icons/license.png
  29. BIN
      website_customer_wallet/static/description/assets/icons/lifebuoy.png
  30. BIN
      website_customer_wallet/static/description/assets/icons/logo.png
  31. BIN
      website_customer_wallet/static/description/assets/icons/manufacturing-black.png
  32. BIN
      website_customer_wallet/static/description/assets/icons/pos-black.png
  33. BIN
      website_customer_wallet/static/description/assets/icons/puzzle.png
  34. BIN
      website_customer_wallet/static/description/assets/icons/restaurant-black.png
  35. BIN
      website_customer_wallet/static/description/assets/icons/service-black.png
  36. BIN
      website_customer_wallet/static/description/assets/icons/trading-black.png
  37. BIN
      website_customer_wallet/static/description/assets/icons/training.png
  38. BIN
      website_customer_wallet/static/description/assets/icons/update.png
  39. BIN
      website_customer_wallet/static/description/assets/icons/user.png
  40. BIN
      website_customer_wallet/static/description/assets/icons/wrench.png
  41. BIN
      website_customer_wallet/static/description/assets/misc/categories.png
  42. BIN
      website_customer_wallet/static/description/assets/misc/check-box.png
  43. BIN
      website_customer_wallet/static/description/assets/misc/compass.png
  44. BIN
      website_customer_wallet/static/description/assets/misc/corporate.png
  45. BIN
      website_customer_wallet/static/description/assets/misc/customer-support.png
  46. BIN
      website_customer_wallet/static/description/assets/misc/cybrosys-logo.png
  47. BIN
      website_customer_wallet/static/description/assets/misc/features.png
  48. BIN
      website_customer_wallet/static/description/assets/misc/logo.png
  49. BIN
      website_customer_wallet/static/description/assets/misc/pictures.png
  50. BIN
      website_customer_wallet/static/description/assets/misc/pie-chart.png
  51. BIN
      website_customer_wallet/static/description/assets/misc/right-arrow.png
  52. BIN
      website_customer_wallet/static/description/assets/misc/star.png
  53. BIN
      website_customer_wallet/static/description/assets/misc/support.png
  54. BIN
      website_customer_wallet/static/description/assets/misc/whatsapp.png
  55. BIN
      website_customer_wallet/static/description/assets/modules/1.png
  56. BIN
      website_customer_wallet/static/description/assets/modules/2.png
  57. BIN
      website_customer_wallet/static/description/assets/modules/3.png
  58. BIN
      website_customer_wallet/static/description/assets/modules/4.png
  59. BIN
      website_customer_wallet/static/description/assets/modules/5.gif
  60. BIN
      website_customer_wallet/static/description/assets/modules/5.png
  61. BIN
      website_customer_wallet/static/description/assets/modules/6.png
  62. BIN
      website_customer_wallet/static/description/assets/screenshots/Screenshot from 2023-11-14 20-24-19.png
  63. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet100.png
  64. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet101.png
  65. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet102.png
  66. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet103.png
  67. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet104.png
  68. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet11.png
  69. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet201.png
  70. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet202.png
  71. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet203.png
  72. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet204.png
  73. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet205.png
  74. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet206.png
  75. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet22.png
  76. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet33.png
  77. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet55.png
  78. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet66.png
  79. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet77.png
  80. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet88.png
  81. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet99.png
  82. BIN
      website_customer_wallet/static/description/assets/screenshots/ewallet_3_list.png
  83. BIN
      website_customer_wallet/static/description/assets/screenshots/hero.gif
  84. BIN
      website_customer_wallet/static/description/banner.jpg
  85. BIN
      website_customer_wallet/static/description/icon.png
  86. 753
      website_customer_wallet/static/description/index.html
  87. 29
      website_customer_wallet/static/src/js/add_wallet_money.js
  88. 35
      website_customer_wallet/static/src/js/change_pin.js
  89. 39
      website_customer_wallet/static/src/js/forgot_pin.js
  90. 50
      website_customer_wallet/static/src/js/wallet_info.js
  91. 48
      website_customer_wallet/static/src/js/wallet_login.js
  92. 32
      website_customer_wallet/static/src/js/wallet_transfer.js
  93. 27
      website_customer_wallet/views/add_wallet_money_templates.xml
  94. 49
      website_customer_wallet/views/customer_wallet_transactions_views.xml
  95. 44
      website_customer_wallet/views/forgot_pin_templates.xml
  96. 67
      website_customer_wallet/views/login_templates.xml
  97. 18
      website_customer_wallet/views/portal_views.xml
  98. 41
      website_customer_wallet/views/res_config_settings_views.xml
  99. 17
      website_customer_wallet/views/res_users_views.xml
  100. 55
      website_customer_wallet/views/wallet_change_pin_templates.xml

46
website_customer_wallet/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
Website Customer EWallet
========================
This module allows us to use our wallet from website.By using this wallet ,we can transfer the amount to another person ,add amount into it.we can use the wallet for future purchases.
Installation
============
- www.odoo.com/documentation/16.0/setup/install.html
- Install our custom addon
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
License
-------
Affero General Public License v3.0 (AGPL v3)
(https://www.gnu.org/licenses/agpl-3.0-standalone.html)
Credits
-------
* Developer: (V16): Dhanya Babu, 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>`__

24
website_customer_wallet/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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
from . import wizard

68
website_customer_wallet/__manifest__.py

@ -0,0 +1,68 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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': "website customer e-wallet",
'version': '16.0.1.0.0',
'category': 'Website',
'summary': 'Enables wallet in portal.in odoo community',
'description': "This module allows us to use our wallet from website."
"By using this wallet ,we can transfer the amount tot "
"another person ,add amount into it.we can use the wallet for"
"future purchases.",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'depends': ['base', 'sale_management', 'loyalty', 'portal', 'website_sale',
'mail'],
'data': [
'security/ir.model.access.csv',
'data/mail_data_templates.xml',
'data/ir_sequence_data.xml',
'views/portal_views.xml',
'views/forgot_pin_templates.xml',
'views/login_templates.xml',
'views/wallet_templates.xml',
'views/res_config_settings_views.xml',
'views/res_users_views.xml',
'views/wallet_history_templates.xml',
'views/add_wallet_money_templates.xml',
'views/wallet_change_pin_templates.xml',
'views/customer_wallet_transactions_views.xml',
'wizard/wallet_amount_views.xml'
],
'assets': {
'web.assets_frontend': [
'website_customer_wallet/static/src/js/wallet_info.js',
'website_customer_wallet/static/src/js/add_wallet_money.js',
'website_customer_wallet/static/src/js/wallet_login.js',
'website_customer_wallet/static/src/js/wallet_transfer.js',
'website_customer_wallet/static/src/js/forgot_pin.js',
'website_customer_wallet/static/src/js/change_pin.js',
],
},
'images': ['static/description/banner.png'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

27
website_customer_wallet/controllers/__init__.py

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 add_money
from . import check_pin_number
from . import main
from . import recheck_pin_number
from . import wallet_transactions
from . import website_customer_wallet

71
website_customer_wallet/controllers/add_money.py

@ -0,0 +1,71 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 Controller, request, route
class WalletAmount(Controller):
"""Added amount in wallet and send mail to the user."""
@route(['/web/add/money/<int:wallet_amount>'], csrf=False, type='json',
auth="public",
website=True)
def wallet_add_amount(self, wallet_amount):
"""Add amount in wallet."""
order = request.website.sale_get_order(force_create=True)
loyalty_program = request.env['loyalty.program'].search(
[('ecommerce_ok', '=', True), ('program_type', '=', 'ewallet')],
limit=1)
loyalty_product = loyalty_program.trigger_product_ids
loyalty_product.write({'list_price': wallet_amount})
sale_order_line_data = {
'name': loyalty_product.name,
'product_id': loyalty_product.id,
'product_uom_qty': 1,
'price_unit': wallet_amount,
}
if order:
sale_order_line_data['order_id'] = order.id
request.env['sale.order.line'].create(sale_order_line_data)
else:
sale_order = request.website.sale_get_order(force_create=True)
sale_order_line_data['order_id'] = sale_order.id
request.env['sale.order.line'].create(sale_order_line_data)
request.env['customer.wallet.transaction'].create({
'date': order.date_order,
'partner_id': order.partner_id.id,
'amount_type': 'added',
'amount': wallet_amount
})
recipient_wallet = request.env['loyalty.card'].search(
[('partner_id', '=', order.partner_id.id)])
new_points = recipient_wallet.points + wallet_amount
recipient_wallet.update({'points': new_points})
body = f'<p>Mr {order.partner_id.name},<br>' \
f'Amount is added. Current balance is {new_points}.</p>'
mail_template = request.env.ref(
'website_customer_wallet.transfer_email_template')
mail_template.sudo().write({
'email_to': order.partner_id.email,
'body_html': body
})
mail_template.send_mail(recipient_wallet.id, force_send=True)
return

37
website_customer_wallet/controllers/check_pin_number.py

@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 Controller, request, route
class WalletLogin(Controller):
"""Created a login function for the user."""
@route(['/web/check/pin/<int:pin>'], csrf=False, type='json',
auth="public",
website=True)
def wallet_login(self, pin):
"""Function will check the user pin to log in."""
if pin != 0 and request.env.user.pin_number != 0:
if request.env.user.pin_number == pin:
return True
else:
return False

40
website_customer_wallet/controllers/main.py

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 Controller, request, route
class WalletInfo(Controller):
"""Controller for the customer portal."""
@route(['/my/wallet/info'], type='http', csrf=False, auth="user",
website=True)
def wallet(self):
"""Return wallet page with current wallet amount."""
wallet_amount = request.env['loyalty.card'].search(
[('partner_id', '=', request.env.user.partner_id.id)])
if wallet_amount:
data = {
'points': wallet_amount.points}
return request.render("website_customer_wallet.wallet_data", data)
else:
return request.render("website_customer_wallet.website_wallet_not_found_template")

34
website_customer_wallet/controllers/recheck_pin_number.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 Controller, request, route
class WalletReLogin(Controller):
"""Controller for handling wallet re-login."""
@route(['/web/re_check/pin/'], csrf=False, type='json', auth="public",
website=True)
def wallet_relogin(self, **kw):
"""Function will change the user-pin to log in."""
user_id = request.env.user
user_id.write({'pin_number': int(kw.get('new_pswd'))})
return True

48
website_customer_wallet/controllers/wallet_transactions.py

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 Controller, route, request
from odoo import http
class WalletTransactions(Controller):
"""Controller for handling wallet transactions."""
@route(['/web/wallet/transactions/'], type='json', csrf=False,
auth="user", website=True)
def transaction_history(self):
"""Rendering transactions details into wallet transactions history
template."""
transactions = request.env['customer.wallet.transaction'].search([])
if transactions:
values = {
'transactions': transactions
}
response = http.Response(
template='website_customer_wallet.wallet_history_data',
qcontext=values)
rendered_template = response.render()
return rendered_template
else:
response = http.Response(
template='website_customer_wallet.no_histories')
rendered_template = response.render()
return rendered_template

31
website_customer_wallet/controllers/website_customer_wallet.py

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 Controller, request, route
class CustomerPortal(Controller):
"""Rendering login page."""
@route(['/my/wallet'], type='http', csrf=False, auth="user",
website=True)
def wallet(self):
"""Return the login page template."""
return request.render("website_customer_wallet.login_data")

15
website_customer_wallet/data/ir_sequence_data.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Sequence of Wallet Transaction -->
<data noupdate="1">
<record id="seq_customer_wallet_transaction" model="ir.sequence">
<field name="name">Customer Wallet Transactions</field>
<field name="code">wallet.transaction</field>
<field name="active">TRUE</field>
<field name="prefix">WT/00</field>
<field name="padding">3</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
</record>
</data>
</odoo>

31
website_customer_wallet/data/mail_data_templates.xml

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<!-- This XML snippet defines a mail template for notifying users about wallet amount transfers. -->
<record id="transfer_email_template" model="mail.template">
<field name="name">Wallet Amount Transfer</field>
<field name="model_id"
ref="website_customer_wallet.model_loyalty_card"/>
<field name="auto_delete" eval="True"/>
<field name="email_to"/>
<field name="subject">Wallet Amount Transfer</field>
<field name="body_html"/>
</record>
<!-- This XML snippet defines a mail template for notifying users about wallet amount crediting. -->
<record id="wallet_credit_template" model="mail.template">
<field name="name">Wallet:Amount Credited</field>
<field name="model_id" ref="website_customer_wallet.model_loyalty_card"/>
<field name="auto_delete" eval="True"/>
<field name="subject">Amount Credited</field>
<field name="body_html"/>
</record>
<!-- This XML snippet defines a mail template for notifying users about wallet pin changed. -->
<record id="wallet_change_pin_template" model="mail.template">
<field name="name">Wallet:PIN Changed</field>
<field name="model_id" ref="website_customer_wallet.model_loyalty_card"/>
<field name="auto_delete" eval="True"/>
<field name="subject">Amount Credited</field>
<field name="body_html"/>
</record>
</data>
</odoo>

5
website_customer_wallet/doc/RELEASE_NOTES.md

@ -0,0 +1,5 @@
## Module <website_customer_wallet>
#### 19.09.2023
#### Version 16.0.1.0.0
#### ADD
-Initial Commit for Website Customer EWallet

25
website_customer_wallet/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: Dhanya Babu (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 customer_wallet_transaction
from . import loyalty_card
from . import res_config_settings
from . import res_users

64
website_customer_wallet/models/customer_wallet_transaction.py

@ -0,0 +1,64 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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.exceptions import ValidationError
from odoo import api, fields, models
class CustomerWalletTransaction(models.Model):
"""Record the transactions of wallet."""
_name = 'customer.wallet.transaction'
_inherit = ['mail.thread', 'mail.activity.mixin']
name = fields.Text(string='Name', help='Name of the transaction',
readonly=True, default='New')
date = fields.Date(string='Date', default=fields.Date.today,
help='Date of the transaction')
partner_id = fields.Many2one('res.partner', string='Partner',
help='Partner of wallet transaction',
required=True)
amount_type = fields.Selection(
selection=[('transfer', 'Transferred'),
('added', 'Added')], string='Amount Type',
help='Type of the amount in wallet.')
amount = fields.Float(string='Amount', help='Amount in the transaction')
@api.model
def create(self, vals):
"""Generate sequence number on creating a record"""
if vals.get('name', 'New') == 'New':
vals['name'] = self.env['ir.sequence'].next_by_code(
'wallet.transaction')
res = super(CustomerWalletTransaction, self).create(vals)
return res
@api.constrains('amount_type')
def check_amount_type(self):
"""Constraint to check whether the partner has an E-wallet when performing a transfer or adding an amount."""
for record in self:
if record.amount_type == 'transfer':
if not self.env['loyalty.card'].search([('partner_id', '=', record.partner_id.id)]):
raise ValidationError(
f"{record.partner_id.name} hasn't any E-wallet. Then how can you transfer the amount")
elif record.amount_type == 'added':
if not self.env['loyalty.card'].search([('partner_id', '=', record.partner_id.id)]):
raise ValidationError(
f"{record.partner_id.name} hasn't any E-wallet. Then how can you add the amount")

76
website_customer_wallet/models/loyalty_card.py

@ -0,0 +1,76 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 LoyaltyCard(models.Model):
"""This class extends the 'loyalty.card' model to
add a wallet_amount function for transferring loyalty
points between partners."""
_inherit = 'loyalty.card'
def wallet_amount(self, args):
"""Transfer an amount from one customer's wallet to another."""
recipient = self.env['res.partner'].sudo().search(
[('phone', '=', args.get('number'))])
recipient_wallet = self.search([('partner_id', '=', recipient.id)])
payer_wallet = self.search(
[('partner_id', '=', self.env.user.partner_id.id)])
if recipient_wallet and int(args.get('amount')) <= payer_wallet.points:
recipient_wallet.update(
{'points': recipient_wallet.points + int(args.get('amount'))})
payer_wallet.update(
{'points': payer_wallet.points - int(args.get('amount'))})
recipient_name = recipient.name
recipient_wallet_points = recipient_wallet.points
partner_name = self.env.user.partner_id.name
body = f'<p>Mr {recipient_name},<br>' \
f'Amount is added from {partner_name}. ' \
f'Current balance is {recipient_wallet_points}.</p>'
mail_template = self.env.ref(
'website_customer_wallet.transfer_email_template')
mail_template.sudo().write({
'email_to': recipient.email,
'body_html': body
})
mail_template.send_mail(self.id, force_send=True)
self.env['customer.wallet.transaction'].create({
'date': fields.Date.today(),
'partner_id': self.env.user.partner_id.id,
'amount_type': 'transfer',
'amount': int(args.get('amount'))
})
values = {
'payer_current_balance': payer_wallet.points,
'recipient_current_balance': recipient_wallet.points
}
return values
else:
return False

36
website_customer_wallet/models/res_config_settings.py

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 models, fields
class ResConfigSettings(models.TransientModel):
"""Added fields in settings."""
_inherit = 'res.config.settings'
customer_wallet = fields.Boolean(string='Customer Wallet',
help='Enable this feature to add in '
'the portal.',
config_parameter='website_customer_wallet.customer_wallet')
wallet_transfer = fields.Boolean(string='Wallet Transfer',
help='Enable this feature to transfer '
'wallet amount to recipient.',
config_parameter='website_customer_wallet.wallet_transfer')

50
website_customer_wallet/models/res_users.py

@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Dhanya Babu (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 models, fields
class ResUsers(models.Model):
"""Inherited and added the pin number and aded function for change the
pin-number."""
_inherit = 'res.users'
pin_number = fields.Integer(string='PIN Number',
help='PIN Number of the users.')
def change_pin(self, kw):
"""Reset the pin."""
if not self.env.user.pin_number == int(kw.get('current_pswd')):
return True
else:
self.env.user.write({'pin_number': int(kw.get('new_pswd'))})
recipient = self.env.user.partner_id
recipient_name = recipient.name
body = '<p>Mr ' + str(
recipient_name) + ',<br>' 'Your Wallet PIN is Changed. ' '.</p>'
mail_template = self.env.ref(
'website_customer_wallet.wallet_change_pin_template')
mail_template.sudo().write({
'email_to': recipient.email,
'body_html': body
})
mail_template.send_mail(self.id, force_send=True)
return False

3
website_customer_wallet/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_customer_wallet_transaction,access.customer.wallet.transaction,model_customer_wallet_transaction,base.group_user,1,1,1,1
access_wallet_amount,access.wallet.amount,model_wallet_amount,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_customer_wallet_transaction access.customer.wallet.transaction model_customer_wallet_transaction base.group_user 1 1 1 1
3 access_wallet_amount access.wallet.amount model_wallet_amount base.group_user 1 1 1 1

15
website_customer_wallet/static/css/conditionalstyle.css

@ -0,0 +1,15 @@
.square-container {
width: 200px; /* Adjust the width to control the size of the square */
height: 200px; /* Adjust the height to match the width for a square */
border: 2px solid #000; /* Border for the square */
padding: 20px; /* Padding to create space inside the square */
text-align: center; /* Center the content horizontally */
}
.square-container h2 {
margin: 0;
}
.square-container form {
margin-top: 20px;
}

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
website_customer_wallet/static/description/assets/icons/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
website_customer_wallet/static/description/assets/modules/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
website_customer_wallet/static/description/assets/modules/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
website_customer_wallet/static/description/assets/modules/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
website_customer_wallet/static/description/assets/modules/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
website_customer_wallet/static/description/assets/modules/5.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

BIN
website_customer_wallet/static/description/assets/modules/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
website_customer_wallet/static/description/assets/modules/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/Screenshot from 2023-11-14 20-24-19.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet100.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet101.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet102.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet103.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet104.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet201.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet202.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet203.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet204.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet205.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet206.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet22.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet33.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet55.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet66.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet77.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet88.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet99.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

BIN
website_customer_wallet/static/description/assets/screenshots/ewallet_3_list.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 KiB

BIN
website_customer_wallet/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
website_customer_wallet/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

753
website_customer_wallet/static/description/index.html

@ -0,0 +1,753 @@
<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;">
Website Customer Wallet</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Website Customer Wallet is a Feature that Allows Customers
to Manage their Virtual Wallet, Often Associated with an
E-commerce Platform.</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 for this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Overview
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
This Module Helps us to choose wallet in website.By using this module we
can credit the amount from portal,we can transfer the wallet amount to
the recipient,see the transaction history of wallet.
</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;">Community &amp;
Enterprise Support.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User need to log in the wallet.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User can see the transaction history.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User can add wallet amount from the portal.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User can transfer wallet amount from the portal to the recipient.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User have the option for to set the pin for the wallet.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User will get email for each transaction.</span>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Available in Odoo 16.0
Community and Enterprise.</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;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Need to create E-wallet Program.</p>
<img src="assets/screenshots/ewallet33.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Need to create E-wallet for the user.</p>
<img src="assets/screenshots/ewallet_3_list.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Enable option of Customer Wallet and Wallet Transfer from
settings .</p>
<img src="assets/screenshots/ewallet11.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We can see the Option in Portal Menu.</p>
<img src="assets/screenshots/ewallet22.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Set PIN.</p>
<img src="assets/screenshots/ewallet55.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Log in .</p>
<img src="assets/screenshots/ewallet66.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
By enter the Log in pin we navigate to the wallet
information template Where we can see the current wallet
amount.</p>
<img src="assets/screenshots/ewallet77.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Corresponding E-wallet product will be sale.</p>
<img src="assets/screenshots/ewallet88.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Sale will be confirmed.</p>
<img src="assets/screenshots/ewallet99.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
By clicking the "Change PIN" button ,we can change the pin
.</p>
<img src="assets/screenshots/ewallet101.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
It will Display Success message.
</p>
<img src="assets/screenshots/ewallet102.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
By enabling the "Wallet Transfer" filed in settings ,it will
show "Wallet Transfer" button in wallet template .</p>
<img src="assets/screenshots/ewallet103.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
If the transfer amount is greater or phone number is not
valid raise Alert .</p>
<img src="assets/screenshots/Screenshot from 2023-11-14 20-24-19.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We have the forgot pin option.Click on Forgot PIN
Button.</p>
<img src="assets/screenshots/ewallet201.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Current wallet amount of user will update here.</p>
<img src="assets/screenshots/ewallet77.png "
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
By clicking the "PassBook" button ,will display the
transaction histories.</p>
<img src="assets/screenshots/ewallet100.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We can see menus in Invoicing Module.</p>
<img src="assets/screenshots/ewallet203.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Transaction history we can see from backend.</p>
<img src="assets/screenshots/ewallet204.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Transaction history we can see from backend in Form
View.</p>
<img src="assets/screenshots/ewallet205.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Add Wallet Amount from backend.It will update in the
wallet.</p>
<img src="assets/screenshots/ewallet206.png"
class="img-thumbnail">
</div>
</div>
</div>
<!-- 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/export_stockinfo_xls/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/1.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/inventory_stock_dashboard_odoo/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/2.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/customer_product_qrcode/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/3.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/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/4.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/openai_product_tag_descrption/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/5.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/advanced_vat_invoice/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/6.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 -->
<!-- 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 d-flex justify-content-center align-items-center"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48"
width="48"
style="width: 42px; height: 42px;"/>
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need
help?
Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52"
width="52"
style="width: 52px; height: 52px;"/>
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on
WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;"/>
</div>
</div>
</div>
<!-- END OF SUPPORT -->
</div>

29
website_customer_wallet/static/src/js/add_wallet_money.js

@ -0,0 +1,29 @@
/** @odoo-module **/
//Handles the click event on the 'proceed' button to add money to the user's wallet.
var ajax = require('web.ajax');
var rpc = require('web.rpc');
var publicWidget = require('web.public.widget');
var utils = require('web.utils');
publicWidget.registry.WebsiteAddMoney = publicWidget.Widget.extend({
selector: '#wallet_amount',
events: {
'click #proceed': 'WalletAmountProceed',
},
WalletAmountProceed: function (ev) {
var amount = this.$('#wallet_amount').val();
rpc.query({
route: "/web/add/money/" + amount,
params: {
amount: amount,
}
}).then(function (result) {
window.location.href = '/shop/cart';
console.log('pppppppp[p[p[p[')
});
},
});
var WebsiteAddMoney = new publicWidget.registry.WebsiteAddMoney(this);
WebsiteAddMoney.appendTo($("#wallet_amount"));
return publicWidget.registry.WebsiteAddMoney;

35
website_customer_wallet/static/src/js/change_pin.js

@ -0,0 +1,35 @@
/** @odoo-module **/
// Handles the click event on the 'change_button' to change the user's PIN.
var rpc = require('web.rpc');
import { qweb, _t } from 'web.core';
var publicWidget = require('web.public.widget');
var session = require('web.session');
publicWidget.registry.WebsiteChangePin = publicWidget.Widget.extend({
selector: '#re_login_data',
events: {
'click #change_button': 'ChangePin',
},
ChangePin: function (ev) {
ev.preventDefault();
var current_pswd = this.$("#current_pswd").val();
var new_pswd = this.$("#new_confirm_pswd").val();
rpc.query({
model: "res.users",
method: "change_pin",
args: [[], { 'current_pswd': current_pswd, 'new_pswd': new_pswd }],
}).then(function (result) {
if (result == false) {
$('.change_pin').removeClass('d-none');
$('.forgot_pin').addClass('d-none');
} else {
$('.wrong_change_pin').removeClass('d-none');
$('.wrong_loginn').addClass('d-none');
}
});
},
});
var WebsiteChangePin = new publicWidget.registry.WebsiteChangePin(this);
WebsiteChangePin.appendTo($("#re_login_data"));
return publicWidget.registry.WebsiteChangePin;

39
website_customer_wallet/static/src/js/forgot_pin.js

@ -0,0 +1,39 @@
/** @odoo-module **/
var rpc = require('web.rpc');
var publicWidget = require('web.public.widget');
const { Component } = owl;
publicWidget.registry.WebsiteForgotPin = publicWidget.Widget.extend({
selector: '.change_pin_form',
events: {
'submit': 'Validation',
'click #go_back_submit': 'GoBack'
},
// Handles the form submission event for PIN validation and communication with the server.
Validation: function (ev) {
ev.preventDefault();
var current_pswd = this.$("#new_pswd").val();
var new_pswd = this.$("#new_confirm_pswd").val();
if (current_pswd !== new_pswd) {
$('.wrong_forgot_pin').removeClass('d-none');
}
rpc.query({
route: "/web/re_check/pin/",
params: {
new_pswd: new_pswd
}
}).then(function (result) {
$('.login_none').removeClass('d-none');
$('.forgot_pin_number').addClass('d-none');
});
},
// Handles the 'Go Back' click event, allowing users to return to the login screen.
GoBack: function (ev) {
$('.login_none').removeClass('d-none');
$('.forgot_pin_number').addClass('d-none');
}
});
var WebsiteForgotPin = new publicWidget.registry.WebsiteForgotPin(this);
WebsiteForgotPin.appendTo($("#re_login_data"));
return publicWidget.registry.WebsiteForgotPin;

50
website_customer_wallet/static/src/js/wallet_info.js

@ -0,0 +1,50 @@
/** @odoo-module **/
//It provides a widget that listens for click events on various buttons and displays different templates
var ajax = require('web.ajax');
var rpc = require('web.rpc');
var publicWidget = require('web.public.widget');
var utils = require('web.utils');
publicWidget.registry.WebsiteWalletInfo = publicWidget.Widget.extend({
selector: '.buttons',
events: {
'click #add_money': 'AddMoneyTemplate',
'click #passbook': 'PassBookTemplate',
'click #change_pin_button': 'ChangePinTemplate',
},
//Displays the wallet money template when the 'Add Money' button is clicked.
AddMoneyTemplate:function(ev) {
$('.wallet_money').removeClass('d-none');
$('.forgot_pin').addClass('d-none');
$('.wallet_history').addClass('d-none');
$('#success_info').addClass('d-none')
$('.change_pin').addClass('d-none');
},
//Displays the wallet history template when the 'Passbook' button is clicked.
PassBookTemplate:function(ev) {
$('.wallet_history').removeClass('d-none');
$('.forgot_pin').addClass('d-none');
$('.wallet_money').addClass('d-none');
$('#success_info').addClass('d-none');
$('.change_pin').addClass('d-none');
rpc.query({
'route':'/web/wallet/transactions/',
'params':{}
}).then(function(data) {
$('.wallet_history').empty().append(data);
});
},
//Displays the forgot PIN template when the 'Change PIN' button is clicked.
ChangePinTemplate:function(ev) {
$('.wallet_money').addClass('d-none');
$('.wallet_history').addClass('d-none');
$('.forgot_pin').removeClass('d-none');
$('#success_info').addClass('d-none');
$('.change_pin').addClass('d-none');
$('.wrong_login').addClass('d-none');
},
});
var WebsiteWalletInfo = new publicWidget.registry.WebsiteWalletInfo(this);
WebsiteWalletInfo.appendTo($(".buttons"));
return publicWidget.registry.WebsiteWalletInfo;

48
website_customer_wallet/static/src/js/wallet_login.js

@ -0,0 +1,48 @@
/** @odoo-module **/
// When the form is submitted, it checks the entered PIN with the server and redirects to the wallet info page if the PIN is correct.
var rpc = require('web.rpc');
import { qweb, _t } from 'web.core';
var publicWidget = require('web.public.widget');
publicWidget.registry.WebsiteCustomerWallet = publicWidget.Widget.extend({
selector: '.login_form',
events: {
'submit': '_onSubmit',
'click #forgot_login_pin': 'ReLogin'
},
//Handles the form submission event for PIN validation and redirection to the wallet info page.
_onSubmit: function (ev) {
ev.preventDefault();
var data=this.$("#user_id").val();
var data_name=this.$('#user_name').val();
var pin=this.$('#login_value').val();
console.log(data,'ererrerrtryygy')
console.log(data_name,'ererrerrtryygy')
console.log(pin,'ererrerrtryygy')
rpc.query({
route: "/web/check/pin/"+pin,
params: {
pin:pin
}
})
.then(function (result) {
if(result==true){
console.log(result,'000-ew0-e9e8e')
window.location.href = '/my/wallet/info';
}
else{
$('.wrong_loginn').removeClass('d-none');
}
})
},
//Handles the 'Forgot Login PIN' click event, initiating the process of recovering or changing the PIN.
ReLogin: function (ev) {
ev.preventDefault();
$('.login_none').addClass('d-none');
$('.forgot_pin_number').removeClass('d-none')
},
});
var WebsiteCustomerWallet = new publicWidget.registry.WebsiteCustomerWallet(this);
WebsiteCustomerWallet.appendTo($(".login_form"));
return publicWidget.registry.WebsiteCustomerWallet;

32
website_customer_wallet/static/src/js/wallet_transfer.js

@ -0,0 +1,32 @@
/** @odoo-module **/
var rpc = require('web.rpc');
var publicWidget = require('web.public.widget');
publicWidget.registry.WebsiteTransfer = publicWidget.Widget.extend({
selector: '#AmountTransferForm',
events: {
'submit': '_onSubmit',
},
_onSubmit: function (e) {
e.preventDefault();
var number = $("#number").val();
var amount = $('#amount').val();
rpc.query({
model: 'loyalty.card',
method: 'wallet_amount',
args: [[], { 'number': number, 'amount': amount }],
}).then(function (ev) {
if (ev == false) {
alert("Please specify the right number or correct amount.");
} else {
$('#wrong_login').removeClass('d-none');
$('#success_info').removeClass('d-none');
location.reload();
}
});
}
});
var WebsiteTransfer = new publicWidget.registry.WebsiteTransfer(this);
WebsiteTransfer.appendTo($("#AmountTransferForm"));
return publicWidget.registry.WebsiteTransfer;

27
website_customer_wallet/views/add_wallet_money_templates.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- This is a template for displaying wallet details and adding money to the wallet. -->
<template id="wallet_money_add" name="Wallet Details">
<div id="wallet_amount">
<br/>
<center>
<h3>ADD Money To Wallet</h3>
</center>
<div class="col-12 col-lg-6 o_setting_box"
style="float:top max-width:300px;">
<input type="hidden" name="csrf_token"
t-att-value="request.csrf_token()"/>
<t t-esc="user_id.company_id.currency_id.symbol"/>
<input type="number" placeholder="Enter your amount here"
name="wallet_amount"
id="wallet_amount"
t-attf-class="form-control #{'form-control-sm' if form_small else ''}"
required="required" autofocus="autofocus"
autocapitalize="off"/>
<div t-attf-class="clearfix oe_login_buttons text-center gap-1 d-grid mb-1 {{'pt-2' if form_small else 'pt-3'}}">
<button id="proceed" class="btn btn-primary">Proceed</button>
</div>
</div>
</div>
</template>
</odoo>

49
website_customer_wallet/views/customer_wallet_transactions_views.xml

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- A form view for the "customer wallet transactions" model with fields -->
<record id="customer_wallet_transactions_view_form" model="ir.ui.view">
<field name="name">customer.wallet.transaction.view.form</field>
<field name="model">customer.wallet.transaction</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<div class="oe_title">
<h1>
<field name="name"/>
</h1>
</div>
</group>
<group>
<group>
<field name="date"/>
<field name="partner_id"/>
</group>
<group>
<field name="amount"/>
<field name="amount_type"/>
</group>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- An action that opens a window for the "wallet amount" model.-->
<record id="customer_wallet_transactions_action"
model="ir.actions.act_window">
<field name="name">Customer Wallet Transaction</field>
<field name="res_model">customer.wallet.transaction</field>
<field name="view_mode">tree,form</field>
</record>
<!-- A menu item named "Add wallet Amount" added to the
"account.menu_finance_receivables" parent menu.-->
<menuitem id="menu_customer_wallet_transactions_action"
name="Wallet Transactions"
parent="account.menu_finance_receivables"
action="customer_wallet_transactions_action"/>
</odoo>

44
website_customer_wallet/views/forgot_pin_templates.xml

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- This is a template for displaying PIN input for user authentication. -->
<template id="forgot_pin_template" name="Forgot PIN">
<br/>
<h3 style="align:left;">Forgot Pin</h3>
<br/>
<div class="col-12 col-lg-13 o_setting_box"
style="float:top max-width:600px;">
<form class="change_pin_form" role="form" action="">
<input type="hidden" name="csrf_token"
t-att-value="request.csrf_token()"/>
<div class="col-12 col-lg-6 o_setting_box" id="change_pin_div">
<label for="new_pswd" class="form-label">Enter New Password</label>
<input type="password"
placeholder="Enter your new password here"
name="password"
id="new_pswd"
required="required" autofocus="autofocus"
autocapitalize="off" class="form-control mb-3"/>
<label for="new_confirm_pswd" class="form-label">Confirm Password</label>
<input type="password"
placeholder="Confirm your password "
name="confirm password"
class="form-control mb-3"
id="new_confirm_pswd" autofocus="autofocus"
required="required"
autocapitalize="off"/>
<button type="submit" class="btn btn-primary"
id="forgot_pin_submit" >Set
Pin
</button>
<button type="button" class="btn btn-primary"
id="go_back_submit" >Go Back
</button>
</div>
<p class="alert alert-danger wrong_forgot_pin d-none"
role="alert">
<span>Wrong/Login Password</span>
</p>
</form>
</div>
</template>
</odoo>

67
website_customer_wallet/views/login_templates.xml

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- This XML template defines the structure and elements for a user login page. -->
<template id="login_data" name="Login Details">
<t t-call="website.layout">
<div class="oe_structure">
<div class="container">
<div class="login_none ">
<br/>
<h3>Login</h3>
<br/>
<div class="col-12 col-lg-6 o_setting_box" style="float:top max-width:300px;">
<form class="login_form" role="form">
<input type="hidden" name="csrf_token"
t-att-value="request.csrf_token()"/>
<div class="mb-3 field-login" id="login_data">
<input type="hidden"
t-att-value="user_id.id"
id="user_id"/>
<input type="hidden"
t-att-value="user_id.name"
id="user_name"/>
<input type="hidden"
t-att-value="login_value"
id="login_pin"/>
<label for="login" class="form-label">Enter
PIN
</label>
<input type="password"
placeholder="Enter your pin here"
name="login"
id="login_value"
t-attf-class="form-control #{'form-control-sm' if form_small else ''}"
required="required"
autofocus="autofocus"
autocapitalize="off"/>
<p class="alert alert-danger wrong_loginn d-none"
role="alert">
<span>Wrong/Login Password</span>
</p>
</div>
<div t-attf-class="clearfix oe_login_buttons text-center gap-1 d-grid mb-1 {{'pt-2' if form_small else 'pt-3'}}"
id="div_login">
<button id="login" type="submit"
class="btn btn-primary">Log in
</button>
</div>
<div t-attf-class="clearfix oe_login_buttons text-center gap-1 d-grid mb-1 {{'pt-2' if form_small else 'pt-3'}}">
<button type="button"
class="btn btn-primary"
id="forgot_login_pin"
>
Forgot
PIN
</button>
</div>
</form>
</div>
</div>
<div class="forgot_pin_number d-none">
<t t-call="website_customer_wallet.forgot_pin_template"/>
</div>
</div>
</div>
</t>
</template>
</odoo>

18
website_customer_wallet/views/portal_views.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- This XML template extends the frontend portal by adding a link to the user's wallet page in the user dropdown menu. -->
<template id="portal_inherit_website_customer_wallet"
name="Link to frontend portal"
inherit_id="portal.user_dropdown">
<xpath expr="//*[@id='o_logout_divider']" position="before">
<t t-set="customer_wallet"
t-value="request.env['ir.config_parameter'].sudo().get_param('website_customer_wallet.customer_wallet')"/>
<t t-if="customer_wallet">
<a href="/my/wallet" role="menuitem" class="dropdown-item">
<i class=" fa fa-fw fa-credit-card me-1 small text-muted"/>
Wallet
</a>
</t>
</xpath>
</template>
</odoo>

41
website_customer_wallet/views/res_config_settings_views.xml

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Added fields in settings-->
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">
res.config.settings.view.form.inherit.website.customer.wallet</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="//div[hasclass('row') and hasclass('mt16')]"
position="after">
<h2>Customer Wallet</h2>
<div class="row mt16 o_settings_container"
id="crm_setting_container">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="customer_wallet"/>
</div>
<div class="o_setting_right_pane">
<label for="customer_wallet"/>
<div class="text-muted">
Allow signed in users to use e-wallet.
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="wallet_transfer"/>
</div>
<div class="o_setting_right_pane">
<label for="wallet_transfer"/>
<div class="text-muted">
Allow signed-in users to transfer the amount.
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

17
website_customer_wallet/views/res_users_views.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Added pin field-->
<record id="view_users_form" model="ir.ui.view">
<field name="name">res.users.view.form.inherit.website.customer.wallet
</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='login']" position="after">
<group>
<field name="pin_number"/>
</group>
</xpath>
</field>
</record>
</odoo>

55
website_customer_wallet/views/wallet_change_pin_templates.xml

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- This XML template defines the structure for changing the PIN in a wallet and-->
<!-- displaying chang pin success message.-->
<template id="wallet_forgot_pin" name="Wallet Details">
<br/>
<center>
<h3>Change PIN</h3>
</center>
<br/>
<div class="col-12 col-lg-6 o_setting_box" id="re_login_data">
<input type="text"
placeholder="Enter your current password "
name="pswd"
class="form-control"
id="current_pswd"
required="required"
autocapitalize="off"/>
<br/>
<input type="password"
placeholder="Confirm your password "
name="new_pswd"
class="form-control"
id="new_confirm_pswd"
t-attf-class="form-control #{'form-control-sm' if form_small else ''}"
required="required"
autocapitalize="off"/>
<div t-attf-class="clearfix oe_login_buttons text-center gap-1 d-grid mb-1 {{'pt-2' if form_small else 'pt-3'}}">
<button class="btn btn-primary" id="change_button"
type="submit">
Set PIN
</button>
</div>
<p class="alert alert-danger wrong_change_pin d-none"
role="alert">
<span>Wrong/Login Password</span>
</p>
</div>
</template>
<!-- Displaying the Transaction histories.-->
<template id="no_histories" name="Wallet Details">
<br/>
<center>
<h3>No Histories</h3>
</center>
<br/>
</template>
<template id="change_pin_success" name="Wallet Details">
<br/>
<center>
<h3>Changed PIN Successfully</h3>
</center>
<br/>
</template>
</odoo>

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save