@ -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>`__ |
@ -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 |
@ -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, |
|||
} |
@ -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 |
@ -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 |
@ -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 |
@ -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") |
|||
|
@ -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 |
@ -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 |
@ -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") |
@ -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> |
@ -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> |
@ -0,0 +1,5 @@ |
|||
## Module <website_customer_wallet> |
|||
#### 19.09.2023 |
|||
#### Version 16.0.1.0.0 |
|||
#### ADD |
|||
-Initial Commit for Website Customer EWallet |
@ -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 |
@ -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") |
@ -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 |
@ -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') |
@ -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 |
|
@ -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; |
|||
} |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 967 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 228 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 264 KiB |
After Width: | Height: | Size: 200 KiB |
After Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 197 KiB |
After Width: | Height: | Size: 198 KiB |
After Width: | Height: | Size: 128 KiB |
After Width: | Height: | Size: 173 KiB |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 174 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 179 KiB |
After Width: | Height: | Size: 147 KiB |
After Width: | Height: | Size: 200 KiB |
After Width: | Height: | Size: 159 KiB |
After Width: | Height: | Size: 202 KiB |
After Width: | Height: | Size: 188 KiB |
After Width: | Height: | Size: 226 KiB |
After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 412 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 16 KiB |
@ -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 & |
|||
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 & 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> |
@ -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; |
@ -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; |
@ -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; |
@ -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; |
@ -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; |
@ -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; |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |