| @ -1,46 +0,0 @@ | |||||
| .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg |  | ||||
|     :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html |  | ||||
|     :alt: License: AGPL-3 |  | ||||
| 
 |  | ||||
| Wallee Payment Gateway |  | ||||
| ====================== |  | ||||
| Accept Payments with Wallee on Odoo Website |  | ||||
| 
 |  | ||||
| Configuration |  | ||||
| ============= |  | ||||
| Install Wallee Python Library and Create Space in Wallee and Generate Space Id, User Id, Space Secret Key. |  | ||||
| 
 |  | ||||
| Company |  | ||||
| ------- |  | ||||
| * `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |  | ||||
| 
 |  | ||||
| License |  | ||||
| ------- |  | ||||
| General Public License, Version 3 (AGPL v3). |  | ||||
| (https://www.gnu.org/licenses/agpl-3.0-standalone.html) |  | ||||
| 
 |  | ||||
| Credits |  | ||||
| ------- |  | ||||
| * Developers: (V16) Ansil pv, 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>`__ |  | ||||
| @ -1,36 +0,0 @@ | |||||
| # -*- coding: utf-8 -*- |  | ||||
| ############################################################################### |  | ||||
| # |  | ||||
| #    Cybrosys Technologies Pvt. Ltd. |  | ||||
| # |  | ||||
| #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |  | ||||
| #    Author: Ansil pv (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 odoo.addons.payment import setup_provider, reset_payment_provider |  | ||||
| 
 |  | ||||
| 
 |  | ||||
| def post_init_hook(cr, registry): |  | ||||
|     """Function to set up the payment provider 'wallee' after |  | ||||
|     module installation.""" |  | ||||
|     setup_provider(cr, registry, 'wallee') |  | ||||
| 
 |  | ||||
| 
 |  | ||||
| def uninstall_hook(cr, registry): |  | ||||
|     """Function to reset the payment provider 'wallee' before module |  | ||||
|     uninstallation.""" |  | ||||
|     reset_payment_provider(cr, registry, 'wallee') |  | ||||
| @ -1,50 +0,0 @@ | |||||
| # -*- coding: utf-8 -*- |  | ||||
| ############################################################################### |  | ||||
| # |  | ||||
| #    Cybrosys Technologies Pvt. Ltd. |  | ||||
| # |  | ||||
| #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |  | ||||
| #    Author: Ansil pv (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": "Wallee Payment Gateway", |  | ||||
|     "version": "16.0.1.0.0", |  | ||||
|     "category": "Accounting", |  | ||||
|     "summary": "Accept Payments with Wallee on Odoo Website", |  | ||||
|     "description": "This module integrates Wallee payment gateway " |  | ||||
|     "with Odoo, allowing customers to securely make payments " |  | ||||
|     "using Wallee on your website.", |  | ||||
|     "author": "Cybrosys Techno Solutions", |  | ||||
|     "company": "Cybrosys Techno Solutions", |  | ||||
|     "maintainer": "Cybrosys Techno Solutions", |  | ||||
|     "website": "https://www.cybrosys.com", |  | ||||
|     "depends": ["base", "payment", "account", "website_sale"], |  | ||||
|     "data": [ |  | ||||
|         "views/payment_provider_templates.xml", |  | ||||
|         "views/payment_provider_views.xml", |  | ||||
|         "data/payment_provider_data.xml", |  | ||||
|     ], |  | ||||
|     "external_dependencies": { |  | ||||
|         "python": ["wallee"], |  | ||||
|     }, |  | ||||
|     "images": ["static/description/banner.jpg"], |  | ||||
|     "post_init_hook": "post_init_hook", |  | ||||
|     "uninstall_hook": "uninstall_hook", |  | ||||
|     "license": "AGPL-3", |  | ||||
|     "installable": True, |  | ||||
|     "auto_install": False, |  | ||||
|     "application": False, |  | ||||
| } |  | ||||
| @ -1,22 +0,0 @@ | |||||
| # -*- coding: utf-8 -*- |  | ||||
| ############################################################################### |  | ||||
| # |  | ||||
| #    Cybrosys Technologies Pvt. Ltd. |  | ||||
| # |  | ||||
| #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |  | ||||
| #    Author: Ansil pv (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 wallee_payment_gateway |  | ||||
| @ -1,72 +0,0 @@ | |||||
| # -*- coding: utf-8 -*- |  | ||||
| ############################################################################### |  | ||||
| # |  | ||||
| #    Cybrosys Technologies Pvt. Ltd. |  | ||||
| # |  | ||||
| #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |  | ||||
| #    Author: Ansil pv (odoo@cybrosys.com) |  | ||||
| # |  | ||||
| #    You can modify it under the terms of the GNU AFFERO |  | ||||
| #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |  | ||||
| # |  | ||||
| #    This program is distributed in the hope that it will be useful, |  | ||||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||
| #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |  | ||||
| # |  | ||||
| #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |  | ||||
| #    (AGPL v3) along with this program. |  | ||||
| #    If not, see <http://www.gnu.org/licenses/>. |  | ||||
| # |  | ||||
| ############################################################################### |  | ||||
| import logging |  | ||||
| import pprint |  | ||||
| from odoo import http |  | ||||
| from odoo.http import request |  | ||||
| from wallee import Configuration |  | ||||
| from wallee.api import TransactionServiceApi |  | ||||
| _logger = logging.getLogger(__name__) |  | ||||
| 
 |  | ||||
| 
 |  | ||||
| class PaymentWalleeController(http.Controller): |  | ||||
|     """ |  | ||||
|         PaymentWalleeController class provides the functionality of redirecting |  | ||||
|         of Wallee payment page to Odoo payment status page and pass status to |  | ||||
|         value to transaction functions |  | ||||
|         Methods: |  | ||||
|             webhook_listener(self): |  | ||||
|                 for fetching payment status from Wallee webhook service and |  | ||||
|                 redirecting to Odoo payment status page and pass status |  | ||||
|     """ |  | ||||
|     @http.route('/webhook', type='http', auth='public', |  | ||||
|                 methods=['GET', 'POST'], csrf=False, save_session=False) |  | ||||
|     def webhook_listener(self): |  | ||||
|         """ |  | ||||
|            For pass records transaction model and redirect to status page |  | ||||
|         """ |  | ||||
|         value = {} |  | ||||
|         data = request.env['payment.transaction'].sudo().search( |  | ||||
|             [('provider_id.code', '=', 'wallee')]) |  | ||||
|         for transaction in data: |  | ||||
|             if transaction.provider_reference: |  | ||||
|                 config = Configuration( |  | ||||
|                     user_id=transaction.provider_id.wallee_user_id, |  | ||||
|                     api_secret=transaction.provider_id.wallee_user_secret_key, |  | ||||
|                     # set a custom request timeout if needed. |  | ||||
|                     # (If not set, then the default value is: 25 seconds) |  | ||||
|                     request_timeout=30 |  | ||||
|                 ) |  | ||||
|                 transaction_service = TransactionServiceApi( |  | ||||
|                     configuration=config) |  | ||||
|                 transaction_read = transaction_service.read( |  | ||||
|                     space_id=transaction.provider_id.wallee_user_space_id, |  | ||||
|                     id=int(transaction.provider_reference)) |  | ||||
|                 value["state"] = transaction_read.state.name |  | ||||
|                 value["reference"] = transaction.reference |  | ||||
|                 break |  | ||||
|         _logger.info("Received Wallee return data:\n%s", |  | ||||
|                      pprint.pformat(value)) |  | ||||
|         tx_sudo = (request.env['payment.transaction'].sudo(). |  | ||||
|                    _get_tx_from_notification_data('wallee', value)) |  | ||||
|         tx_sudo._handle_notification_data('wallee', value) |  | ||||
|         return request.redirect('/payment/status') |  | ||||
| @ -1,15 +0,0 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> |  | ||||
| <odoo noupdate="1"> |  | ||||
|     <data> |  | ||||
|         <!-- Default records of Wallee payment provider --> |  | ||||
|         <record id="wallee_payment_gateway.payment_provider_wallee" |  | ||||
|                 model="payment.provider"> |  | ||||
|             <field name="name">Wallee</field> |  | ||||
|             <field name="code">wallee</field> |  | ||||
|             <field name="image_128" type="base64" |  | ||||
|                    file="wallee_payment_gateway/static/description/icon.png"/> |  | ||||
|             <field name="company_id" ref="base.main_company"/> |  | ||||
|             <field name="redirect_form_view_id" ref="redirect_form"/> |  | ||||
|         </record> |  | ||||
|     </data> |  | ||||
| </odoo> |  | ||||
| @ -1,7 +0,0 @@ | |||||
| ## Module <wallee_payment_gateway> |  | ||||
| 
 |  | ||||
| #### 03.11.2023 |  | ||||
| #### Version 16.0.1.0.0 |  | ||||
| #### ADD |  | ||||
| 
 |  | ||||
| - Initial commit for Wallee Payment Gateway |  | ||||
| @ -1,23 +0,0 @@ | |||||
| # -*- coding: utf-8 -*- |  | ||||
| ############################################################################### |  | ||||
| # |  | ||||
| #    Cybrosys Technologies Pvt. Ltd. |  | ||||
| # |  | ||||
| #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |  | ||||
| #    Author: Ansil pv (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 payment_provider |  | ||||
| from . import payment_transaction |  | ||||
| @ -1,45 +0,0 @@ | |||||
| # -*- coding: utf-8 -*- |  | ||||
| ############################################################################### |  | ||||
| # |  | ||||
| #    Cybrosys Technologies Pvt. Ltd. |  | ||||
| # |  | ||||
| #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |  | ||||
| #    Author: Ansil pv (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 api, fields, models |  | ||||
| 
 |  | ||||
| 
 |  | ||||
| class PaymentProvider(models.Model): |  | ||||
|     _inherit = 'payment.provider' |  | ||||
| 
 |  | ||||
|     code = fields.Selection( |  | ||||
|         selection_add=[('wallee', "Wallee")], |  | ||||
|         ondelete={'wallee': 'set default'}, help='Wallee code selection') |  | ||||
|     wallee_user_id = fields.Integer(string='User ID', |  | ||||
|                                     help='User id of wallee portal') |  | ||||
|     wallee_user_secret_key = fields.Char(string='User secret key', |  | ||||
|                                          help='API secret key for wallee') |  | ||||
|     wallee_user_space_id = fields.Integer(string='Wallee user space', |  | ||||
|                                           help='Space ID of wallee') |  | ||||
| 
 |  | ||||
|     @api.model |  | ||||
|     def _get_payment_method_information(self): |  | ||||
|         """Override to add Wallee payment method information to the |  | ||||
|         existing methods. |  | ||||
|         """ |  | ||||
|         res = super()._get_payment_method_information() |  | ||||
|         res['wallee'] = {'mode': 'multi', 'domain': [('type', '=', 'bank')]} |  | ||||
|         return res |  | ||||
| @ -1,222 +0,0 @@ | |||||
| # -*- coding: utf-8 -*- |  | ||||
| ############################################################################### |  | ||||
| # |  | ||||
| #    Cybrosys Technologies Pvt. Ltd. |  | ||||
| # |  | ||||
| #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |  | ||||
| #    Author: Ansil pv (odoo@cybrosys.com) |  | ||||
| # |  | ||||
| #    You can modify it under the terms of the GNU AFFERO |  | ||||
| #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |  | ||||
| # |  | ||||
| #    This program is distributed in the hope that it will be useful, |  | ||||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||
| #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |  | ||||
| # |  | ||||
| #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |  | ||||
| #    (AGPL v3) along with this program. |  | ||||
| #    If not, see <http://www.gnu.org/licenses/>. |  | ||||
| # |  | ||||
| ############################################################################### |  | ||||
| # Import required libraries (make sure it is installed!) |  | ||||
| import logging |  | ||||
| from odoo import _, models |  | ||||
| from odoo.exceptions import ValidationError |  | ||||
| import requests |  | ||||
| from wallee import Configuration |  | ||||
| from wallee.api import ( |  | ||||
|     TransactionServiceApi, |  | ||||
|     TransactionPaymentPageServiceApi, |  | ||||
|     CustomerServiceApi, |  | ||||
| ) |  | ||||
| from wallee.models import ( |  | ||||
|     LineItem, |  | ||||
|     LineItemType, |  | ||||
|     TransactionCreate, |  | ||||
|     CustomerCreate, |  | ||||
|     CustomerPostalAddressCreate, |  | ||||
| ) |  | ||||
| 
 |  | ||||
| _logger = logging.getLogger(__name__) |  | ||||
| 
 |  | ||||
| 
 |  | ||||
| class PaymentTransaction(models.Model): |  | ||||
|     _inherit = "payment.transaction" |  | ||||
| 
 |  | ||||
|     def _get_specific_rendering_values(self, processing_values): |  | ||||
|         """ |  | ||||
|         For get specific rendering values and execute execute_payment |  | ||||
|         function |  | ||||
|         """ |  | ||||
|         res = super()._get_specific_rendering_values(processing_values) |  | ||||
|         if self.provider_code != "wallee": |  | ||||
|             return res |  | ||||
|         return self.execute_payment() |  | ||||
| 
 |  | ||||
|     def execute_payment(self): |  | ||||
|         """Fetching data and Executing Payment |  | ||||
|         :return: The response content.""" |  | ||||
|         odoo_base_url = self.env["ir.config_parameter"].get_param("web.base.url") |  | ||||
|         sale_order = ( |  | ||||
|             self.env["payment.transaction"] |  | ||||
|             .search([("id", "=", self.id)]) |  | ||||
|             .sale_order_ids |  | ||||
|         ) |  | ||||
|         if self.provider_id.code == "wallee": |  | ||||
|             config = Configuration( |  | ||||
|                 user_id=self.provider_id.wallee_user_id, |  | ||||
|                 api_secret=self.provider_id.wallee_user_secret_key, |  | ||||
|                 # set a custom request timeout if needed. (If not set, then the |  | ||||
|                 # default value is: 25 seconds) |  | ||||
|                 request_timeout=30, |  | ||||
|             ) |  | ||||
|             transaction_service = TransactionServiceApi(configuration=config) |  | ||||
|             customer_service = CustomerServiceApi(configuration=config) |  | ||||
|             transaction_payment_page_service = TransactionPaymentPageServiceApi( |  | ||||
|                 configuration=config |  | ||||
|             ) |  | ||||
|             line_items = [] |  | ||||
|             for index, lines in enumerate(sale_order.order_line): |  | ||||
|                 locals()[f"line_item_{index}"] = LineItem( |  | ||||
|                     name=lines.product_id.name, |  | ||||
|                     unique_id=str(lines.id), |  | ||||
|                     sku=lines.product_id.detailed_type, |  | ||||
|                     quantity=lines.product_uom_qty, |  | ||||
|                     amount_including_tax=lines.price_total, |  | ||||
|                     type=LineItemType.PRODUCT, |  | ||||
|                 ) |  | ||||
|                 line_items.append(locals()[f"line_item_{index}"]) |  | ||||
|             address_create = CustomerCreate( |  | ||||
|                 customer_id=str(sale_order.partner_id.id), |  | ||||
|                 email_address=sale_order.partner_id.email, |  | ||||
|                 family_name="", |  | ||||
|                 given_name=sale_order.partner_id.name, |  | ||||
|                 street=sale_order.partner_id.street, |  | ||||
|                 postcode=sale_order.partner_id.zip, |  | ||||
|                 city=sale_order.partner_id.city, |  | ||||
|                 country=sale_order.partner_id.country_id, |  | ||||
|                 postal_state=sale_order.partner_id.state_id, |  | ||||
|             ) |  | ||||
| 
 |  | ||||
|             user_address = CustomerPostalAddressCreate( |  | ||||
|                 customer_id=str(sale_order.partner_id.id), |  | ||||
|                 email_address=sale_order.partner_id.email, |  | ||||
|                 family_name="", |  | ||||
|                 given_name=sale_order.partner_id.name, |  | ||||
|                 street=sale_order.partner_id.street, |  | ||||
|                 postcode=sale_order.partner_id.zip, |  | ||||
|                 city=sale_order.partner_id.city, |  | ||||
|                 country=sale_order.partner_id.country_id.name, |  | ||||
|                 postal_state=sale_order.partner_id.state_id.name, |  | ||||
|             ) |  | ||||
| 
 |  | ||||
|             # create transaction model |  | ||||
|             transaction = TransactionCreate( |  | ||||
|                 customer_id=sale_order.partner_id.id, |  | ||||
|                 merchant_reference=sale_order.name, |  | ||||
|                 invoice_merchant_reference=sale_order.name, |  | ||||
|                 line_items=line_items, |  | ||||
|                 auto_confirmation_enabled=True, |  | ||||
|                 currency=self.env.user.currency_id.name, |  | ||||
|                 shipping_address=user_address, |  | ||||
|                 billing_address=user_address, |  | ||||
|                 failed_url=f"{odoo_base_url}/webhook", |  | ||||
|                 success_url=f"{odoo_base_url}/webhook", |  | ||||
|             ) |  | ||||
| 
 |  | ||||
|             transaction_create = transaction_service.create( |  | ||||
|                 space_id=self.provider_id.wallee_user_space_id, transaction=transaction |  | ||||
|             ) |  | ||||
| 
 |  | ||||
|             payment_page_url = transaction_payment_page_service.payment_page_url( |  | ||||
|                 space_id=self.provider_id.wallee_user_space_id, id=transaction_create.id |  | ||||
|             ) |  | ||||
|             self.provider_reference = transaction_create.id |  | ||||
|             response = requests.request("POST", payment_page_url) |  | ||||
|             return {"api_url": payment_page_url} |  | ||||
| 
 |  | ||||
|     def _get_tx_from_notification_data(self, provider_code, notification_data): |  | ||||
|         """ |  | ||||
|         Get payment status from Wallee. |  | ||||
| 
 |  | ||||
|         :param provider_code: The code of the provider handling the transaction |  | ||||
|         :param notification_data: The data received from Wallee notification. |  | ||||
|         :return: The transaction matching the reference. |  | ||||
|         """ |  | ||||
|         tx = super()._get_tx_from_notification_data(provider_code, notification_data) |  | ||||
|         if provider_code != "wallee": |  | ||||
|             return tx |  | ||||
|         reference = notification_data.get("reference") |  | ||||
|         if not reference: |  | ||||
|             raise ValidationError( |  | ||||
|                 "Wallee: " |  | ||||
|                 + _( |  | ||||
|                     "No reference found.", |  | ||||
|                 ) |  | ||||
|             ) |  | ||||
|         tx = self.search( |  | ||||
|             [ |  | ||||
|                 ("reference", "=", notification_data.get("reference")), |  | ||||
|                 ("provider_code", "=", "wallee"), |  | ||||
|             ] |  | ||||
|         ) |  | ||||
|         if not tx: |  | ||||
|             raise ValidationError( |  | ||||
|                 "Wallee: " |  | ||||
|                 + _( |  | ||||
|                     "No transaction found " "matching reference %s.", |  | ||||
|                     notification_data.get("reference"), |  | ||||
|                 ) |  | ||||
|             ) |  | ||||
|         return tx |  | ||||
| 
 |  | ||||
|     def _handle_notification_data(self, provider_code, notification_data): |  | ||||
|         """ |  | ||||
|         Handle the notification data received from Wallee. |  | ||||
|         This method retrieves the transaction corresponding to the |  | ||||
|         notification data, processes the notification data, and executes the |  | ||||
|         callback. |  | ||||
|         :param provider_code: The code of the provider handling the transaction |  | ||||
|         :param notification_data: The data received from Wallee notification. |  | ||||
|         :return: The transaction object. |  | ||||
|         """ |  | ||||
|         tx = self._get_tx_from_notification_data(provider_code, notification_data) |  | ||||
|         tx._process_notification_data(notification_data) |  | ||||
|         tx._execute_callback() |  | ||||
|         return tx |  | ||||
| 
 |  | ||||
|     def _process_notification_data(self, notification_data): |  | ||||
|         """ |  | ||||
|         Process the notification data received from Wallee. |  | ||||
| 
 |  | ||||
|         This method processes the notification data and updates the payment |  | ||||
|         state of the transaction accordingly. |  | ||||
| 
 |  | ||||
|         :param notification_data: The data received from Wallee notification. |  | ||||
|         """ |  | ||||
|         super()._process_notification_data(notification_data) |  | ||||
|         if self.provider_code != "wallee": |  | ||||
|             return |  | ||||
|         status = notification_data.get("state") |  | ||||
|         if status == "FULFILL": |  | ||||
|             self._set_done(state_message="Authorised") |  | ||||
|         elif status in ( |  | ||||
|             "COMPLETED", |  | ||||
|             "PENDING", |  | ||||
|             "CONFIRMED", |  | ||||
|             "PROCESSING", |  | ||||
|             "AUTHORIZED", |  | ||||
|         ): |  | ||||
|             self._set_pending( |  | ||||
|                 state_message="Authorised but on hold for " "further anti-fraud review" |  | ||||
|             ) |  | ||||
|         elif status in ("FAILED", "VOIDED", "DECLINE"): |  | ||||
|             self._set_canceled(state_message="Error") |  | ||||
|         else: |  | ||||
|             _logger.warning( |  | ||||
|                 "received unrecognized payment state %s for " |  | ||||
|                 "transaction with reference %s", |  | ||||
|                 notification_data.get("reference"), |  | ||||
|             ) |  | ||||
|             self._set_error("wallee: " + _("Invalid payment status.")) |  | ||||
| @ -1 +0,0 @@ | |||||
| wallee==4.0.0 |  | ||||
| Before Width: | Height: | Size: 3.6 KiB | 
| Before Width: | Height: | Size: 310 B | 
| Before Width: | Height: | Size: 1.3 KiB | 
| Before Width: | Height: | Size: 1.4 KiB | 
| Before Width: | Height: | Size: 576 B | 
| Before Width: | Height: | Size: 733 B | 
| Before Width: | Height: | Size: 911 B | 
| Before Width: | Height: | Size: 1.1 KiB | 
| Before Width: | Height: | Size: 1.2 KiB | 
| Before Width: | Height: | Size: 673 B | 
| Before Width: | Height: | Size: 878 B | 
| Before Width: | Height: | Size: 653 B | 
| Before Width: | Height: | Size: 905 B | 
| Before Width: | Height: | Size: 839 B | 
| Before Width: | Height: | Size: 427 B | 
| Before Width: | Height: | Size: 627 B | 
| Before Width: | Height: | Size: 1.2 KiB | 
| Before Width: | Height: | Size: 988 B | 
| Before Width: | Height: | Size: 1.2 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.1 KiB | 
| Before Width: | Height: | Size: 1.9 KiB | 
| Before Width: | Height: | Size: 1.1 KiB | 
| Before Width: | Height: | Size: 2.1 KiB | 
| Before Width: | Height: | Size: 4.4 KiB | 
| Before Width: | Height: | Size: 589 B | 
| Before Width: | Height: | Size: 3.4 KiB | 
| Before Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 2.3 KiB | 
| Before Width: | Height: | Size: 967 B | 
| Before Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 3.8 KiB | 
| Before Width: | Height: | Size: 5.0 KiB | 
| Before Width: | Height: | Size: 81 KiB | 
| Before Width: | Height: | Size: 86 KiB | 
| Before Width: | Height: | Size: 18 KiB | 
| Before Width: | Height: | Size: 186 KiB | 
| Before Width: | Height: | Size: 92 KiB | 
| Before Width: | Height: | Size: 89 KiB | 
| Before Width: | Height: | Size: 53 KiB | 
| Before Width: | Height: | Size: 108 KiB | 
| Before Width: | Height: | Size: 118 KiB | 
| Before Width: | Height: | Size: 102 KiB | 
| Before Width: | Height: | Size: 176 KiB | 
| Before Width: | Height: | Size: 172 KiB | 
| Before Width: | Height: | Size: 270 KiB | 
| Before Width: | Height: | Size: 72 KiB | 
| Before Width: | Height: | Size: 128 KiB | 
| Before Width: | Height: | Size: 173 KiB | 
| Before Width: | Height: | Size: 243 KiB | 
| Before Width: | Height: | Size: 66 KiB | 
| Before Width: | Height: | Size: 310 KiB | 
| Before Width: | Height: | Size: 96 KiB | 
| Before Width: | Height: | Size: 2.7 KiB | 
| @ -1,733 +0,0 @@ | |||||
| <div style="background-color: #714B67; min-height: 600px; 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 --> |  | ||||
| 
 |  | ||||
|     <!-- APP HERO --> |  | ||||
|     <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;"> |  | ||||
|                     Wallee Payment Gateway</h1> |  | ||||
|                 <p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;"> |  | ||||
|                     This module allows us to enable Wallee payment acquirer on |  | ||||
|                     our system</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">Wallee is a payment service provider that |  | ||||
|         offers |  | ||||
|         a wide range of features for handling payments. When integrated with |  | ||||
|         Odoo, it can enhance your e-commerce and payment processing |  | ||||
|         capabilities |  | ||||
|         , its provide a smooth and secure payment experience for your customers |  | ||||
|         while streamlining your payment processing operations |  | ||||
|     </div> |  | ||||
| </div> |  | ||||
| <!-- END OF OVERVIEW SECTION --> |  | ||||
| 
 |  | ||||
| <!-- FEATURES SECTION --> |  | ||||
| <div class="d-flex align-items-center" |  | ||||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;" |  | ||||
|      id="features"> |  | ||||
|     <div class="d-flex justify-content-center align-items-center mr-2" |  | ||||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |  | ||||
|         <img src="./assets/misc/features.png"/> |  | ||||
|     </div> |  | ||||
|     <h2 class="mt-2" |  | ||||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |  | ||||
|         Features |  | ||||
|     </h2> |  | ||||
| </div> |  | ||||
| <div class="row" |  | ||||
|      style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> |  | ||||
|     <div class="col-sm-12 col-md-6"> |  | ||||
|         <div class="d-flex align-items-start" |  | ||||
|              style="margin-top: 40px; margin-bottom: 40px"> |  | ||||
|             <img src="./assets/misc/check-box.png" class="mr-2"/> |  | ||||
|             <div> |  | ||||
|                 <span |  | ||||
|                         style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Diverse Payment Methods</span> |  | ||||
|                 <span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 12px;">Wallee offers support for a wide range of |  | ||||
|                     payment methods, from credit cards and debit cards to |  | ||||
|                     digital wallets and bank transfers. This enables businesses |  | ||||
|                     to cater to the diverse payment preferences of their |  | ||||
|                     customers.</span> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="d-flex align-items-start" |  | ||||
|              style="margin-top: 30px; margin-bottom: 30px"> |  | ||||
|             <img src="./assets/misc/check-box.png" class="mr-2"/> |  | ||||
|             <div> |  | ||||
|                 <span |  | ||||
|                         style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">International Support</span> |  | ||||
|                 <span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 14px;">Wallee supports multiple currencies and languages, making it suitable for businesses operating in different regions and serving a global customer base.</span> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|     </div> |  | ||||
|     <div class="col-sm-12 col-md-6"> |  | ||||
|         <div class="d-flex align-items-start" |  | ||||
|              style="margin-top: 30px; margin-bottom: 30px"> |  | ||||
|             <img src="./assets/misc/check-box.png" class="mr-2"/> |  | ||||
|             <div> |  | ||||
|                 <span |  | ||||
|                         style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">PCI Compliance</span> |  | ||||
|                 <span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 14px;">Wallee helps you maintain PCI DSS compliance, which is essential for ensuring the security of credit card data. It reduces the burden of compliance on your end.</span> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
|         <div class="d-flex align-items-start" |  | ||||
|              style="margin-top: 30px; margin-bottom: 30px"> |  | ||||
|             <img src="./assets/misc/check-box.png" class="mr-2"/> |  | ||||
|             <div> |  | ||||
|                 <span |  | ||||
|                         style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Automatic Payment Processing</span> |  | ||||
|                 <span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 14px;"> Wallee can handle automatic payment processing, reducing manual effort. This is particularly useful for subscription renewals and recurring payments.</span> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|     </div> |  | ||||
| </div> |  | ||||
| <!-- END OF FEATURES SECTION --> |  | ||||
| 
 |  | ||||
| <!-- SCREENSHOTS SECTION --> |  | ||||
| <div class="d-flex align-items-center" |  | ||||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;" |  | ||||
|      id="screenshots"> |  | ||||
|     <div class="d-flex justify-content-center align-items-center mr-2" |  | ||||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |  | ||||
|         <img src="./assets/misc/pictures.png"/> |  | ||||
|     </div> |  | ||||
|     <h2 class="mt-2" |  | ||||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |  | ||||
|         Screenshots |  | ||||
|     </h2> |  | ||||
| </div> |  | ||||
| <div class="row"> |  | ||||
|     <div class="col-sm-12"> |  | ||||
| 
 |  | ||||
|         <div style="display: block; margin: 30px auto;"> |  | ||||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |  | ||||
|                 Enable Wallee Payment Provider</h3> |  | ||||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |  | ||||
|                 You can enable Wallee payment provider and provide the |  | ||||
|                 Credentials and Publish it, or we can use the test mode for |  | ||||
|                 testing purpose.</p> |  | ||||
|             <img src="assets/screenshots/Wallee01.png" class="img-thumbnail"> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div style="display: block; margin: 30px auto;"> |  | ||||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |  | ||||
|                 Set-up the Journal</h3> |  | ||||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |  | ||||
|                 Provide Payment Journal for Recording Transactions .</p> |  | ||||
|             <img src="assets/screenshots/Wallee02.png" class="img-thumbnail"> |  | ||||
|         </div> |  | ||||
|         <div style="display: block; margin: 30px auto;"> |  | ||||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |  | ||||
|                 Select Payment Provider Wallee</h3> |  | ||||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |  | ||||
|                 After selecting products and in checkout page select Wallee as |  | ||||
|                 payment provider and pay |  | ||||
|             </p> |  | ||||
|             <img src="assets/screenshots/Wallee03.png" class="img-thumbnail"> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div style="display: block; margin: 30px auto;"> |  | ||||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |  | ||||
|                 Provide Card Details</h3> |  | ||||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |  | ||||
|                 When we click on pay button, it will redirect to |  | ||||
|                 Wallee Payment Transaction page, provide the card details and |  | ||||
|                 click pay |  | ||||
|             </p> |  | ||||
|             <img src="assets/screenshots/Wallee05.png" class="img-thumbnail"> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
| 
 |  | ||||
|         <div style="display: block; margin: 30px auto;"> |  | ||||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |  | ||||
|                 Redirected to payment status page after successful Payment</h3> |  | ||||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |  | ||||
|                 If the payment was successful we will be redirected |  | ||||
|                 to payment status page and it save as success payment.</p> |  | ||||
|             <img src="assets/screenshots/Wallee06.png" class="img-thumbnail"> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div style="display: block; margin: 30px auto;"> |  | ||||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |  | ||||
|                 Order details in Sale Order Model</h3> |  | ||||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |  | ||||
|                 In Sale Order, record stage is in "SALES ORDER" and |  | ||||
|                 the successful payment preview in log note</p> |  | ||||
|             <img src="assets/screenshots/Wallee08.png" class="img-thumbnail"> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div style="display: block; margin: 30px auto;"> |  | ||||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |  | ||||
|                 Failed Payment</h3> |  | ||||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |  | ||||
|                 If the payment is a failure</p> |  | ||||
|             <img src="assets/screenshots/Wallee09.png" class="img-thumbnail"> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div style="display: block; margin: 30px auto;"> |  | ||||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |  | ||||
|                 Redirect to Payment Canceled page in Odoo</h3> |  | ||||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |  | ||||
|                 When click cancel payment Its redirect to Odoo and shows order |  | ||||
|                 payment is cancelled</p> |  | ||||
|             <img src="assets/screenshots/Wallee10.png" class="img-thumbnail"> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div style="display: block; margin: 30px auto;"> |  | ||||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |  | ||||
|                 In SO view</h3> |  | ||||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |  | ||||
|                 Its shows the payment is pending in SO</p> |  | ||||
|             <img src="assets/screenshots/Wallee12.png" class="img-thumbnail"> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|     </div> |  | ||||
| </div> |  | ||||
| <!-- END OF SCREENSHOTS SECTION --> |  | ||||
| 
 |  | ||||
| <!-- RELATED PRODUCTS --> |  | ||||
| <div class="d-flex align-items-center" |  | ||||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |  | ||||
|     <div class="d-flex justify-content-center align-items-center mr-2" |  | ||||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |  | ||||
|         <img src="assets/misc/categories.png"/> |  | ||||
|     </div> |  | ||||
|     <h2 class="mt-2" |  | ||||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |  | ||||
|         Related |  | ||||
|         Products |  | ||||
|     </h2> |  | ||||
| </div> |  | ||||
| <div class="row"> |  | ||||
|     <div class="col-sm-12"> |  | ||||
|         <div id="demo1" class="row carousel slide" data-ride="carousel"> |  | ||||
|             <!-- The slideshow --> |  | ||||
|             <div class="carousel-inner" style="padding:30px"> |  | ||||
|                 <div class="carousel-item" style="min-height:198.656px"> |  | ||||
|                     <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |  | ||||
|                          style="float:left"> |  | ||||
|                         <a href="https://apps.odoo.com/apps/modules/16.0/index_and_follow/" |  | ||||
|                            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/website_product_attachments/" |  | ||||
|                            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/odoo_website_helpdesk_dashboard/#" |  | ||||
|                            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/education_student_portal/" |  | ||||
|                            target="_blank"> |  | ||||
|                             <div style="border-radius:10px"> |  | ||||
|                                 <img class="img img-responsive center-block" |  | ||||
|                                      style="border-radius:0px" |  | ||||
|                                      src="assets/modules/4.jpg"> |  | ||||
|                             </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/featured_brand_snippet/#" |  | ||||
|                            target="_blank"> |  | ||||
|                             <div style="border-radius:10px"> |  | ||||
|                                 <img class="img img-responsive center-block" |  | ||||
|                                      style="border-radius:0px" |  | ||||
|                                      src="assets/modules/5.jpg"> |  | ||||
|                             </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/website_hide_button/#" |  | ||||
|                            target="_blank"> |  | ||||
|                             <div style="border-radius:10px"> |  | ||||
|                                 <img class="img img-responsive center-block" |  | ||||
|                                      style="border-radius:0px" |  | ||||
|                                      src="assets/modules/6.jpg"> |  | ||||
|                             </div> |  | ||||
|                         </a> |  | ||||
|                     </div> |  | ||||
|                 </div> |  | ||||
|             </div> |  | ||||
|             <!-- Left and right controls --> |  | ||||
|             <a class="carousel-control-prev" href="#demo1" data-slide="prev" |  | ||||
|                style="width:35px; color:#000"> <span |  | ||||
|                     class="carousel-control-prev-icon"><i |  | ||||
|                     class="fa fa-chevron-left" |  | ||||
|                     style="font-size:24px"></i></span> |  | ||||
|             </a> <a class="carousel-control-next" href="#demo1" |  | ||||
|                     data-slide="next" style="width:35px; color:#000"> |  | ||||
|                 <span class="carousel-control-next-icon"><i |  | ||||
|                         class="fa fa-chevron-right" |  | ||||
|                         style="font-size:24px"></i></span> |  | ||||
|         </a> |  | ||||
|         </div> |  | ||||
|     </div> |  | ||||
| </div> |  | ||||
| <!-- END OF RELATED PRODUCTS --> |  | ||||
| 
 |  | ||||
| <!-- OUR SERVICES --> |  | ||||
| 
 |  | ||||
| <div class="d-flex align-items-center" |  | ||||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |  | ||||
|     <div class="d-flex justify-content-center align-items-center mr-2" |  | ||||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |  | ||||
|         <img src="./assets/misc/star.png"/> |  | ||||
|     </div> |  | ||||
|     <h2 class="mt-2" |  | ||||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |  | ||||
|         Our Services |  | ||||
|     </h2> |  | ||||
| </div> |  | ||||
| 
 |  | ||||
| <div class="container my-5"> |  | ||||
|     <div class="row"> |  | ||||
|         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |  | ||||
|             <div class="d-flex justify-content-center align-items-center mx-3 my-3" |  | ||||
|                  style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |  | ||||
|                 <img src="assets/icons/cogs.png" class="img-responsive" |  | ||||
|                      height="48px" width="48px"> |  | ||||
|             </div> |  | ||||
|             <h6 class="text-center" |  | ||||
|                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |  | ||||
|                 Odoo |  | ||||
|                 Customization</h6> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |  | ||||
|             <div class="d-flex justify-content-center align-items-center mx-3 my-3" |  | ||||
|                  style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> |  | ||||
|                 <img src="assets/icons/wrench.png" class="img-responsive" |  | ||||
|                      height="48px" width="48px"> |  | ||||
|             </div> |  | ||||
|             <h6 class="text-center" |  | ||||
|                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |  | ||||
|                 Odoo |  | ||||
|                 Implementation</h6> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |  | ||||
|             <div class="d-flex justify-content-center align-items-center mx-3 my-3" |  | ||||
|                  style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> |  | ||||
|                 <img src="assets/icons/lifebuoy.png" class="img-responsive" |  | ||||
|                      height="48px" width="48px"> |  | ||||
|             </div> |  | ||||
|             <h6 class="text-center" |  | ||||
|                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |  | ||||
|                 Odoo |  | ||||
|                 Support</h6> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
| 
 |  | ||||
|         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |  | ||||
|             <div class="d-flex justify-content-center align-items-center mx-3 my-3" |  | ||||
|                  style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |  | ||||
|                 <img src="assets/icons/user.png" class="img-responsive" |  | ||||
|                      height="48px" width="48px"> |  | ||||
|             </div> |  | ||||
|             <h6 class="text-center" |  | ||||
|                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |  | ||||
|                 Hire |  | ||||
|                 Odoo |  | ||||
|                 Developer</h6> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |  | ||||
|             <div class="d-flex justify-content-center align-items-center mx-3 my-3" |  | ||||
|                  style="background-color: #54a0ff  !important; border-radius: 15px !important; height: 80px; width: 80px;"> |  | ||||
|                 <img src="assets/icons/puzzle.png" class="img-responsive" |  | ||||
|                      height="48px" width="48px"> |  | ||||
|             </div> |  | ||||
|             <h6 class="text-center" |  | ||||
|                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |  | ||||
|                 Odoo |  | ||||
|                 Integration</h6> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |  | ||||
|             <div class="d-flex justify-content-center align-items-center mx-3 my-3" |  | ||||
|                  style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |  | ||||
|                 <img src="assets/icons/update.png" class="img-responsive" |  | ||||
|                      height="48px" width="48px"> |  | ||||
|             </div> |  | ||||
|             <h6 class="text-center" |  | ||||
|                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |  | ||||
|                 Odoo |  | ||||
|                 Migration</h6> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
| 
 |  | ||||
|         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |  | ||||
|             <div class="d-flex justify-content-center align-items-center mx-3 my-3" |  | ||||
|                  style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |  | ||||
|                 <img src="assets/icons/consultation.png" class="img-responsive" |  | ||||
|                      height="48px" width="48px"> |  | ||||
|             </div> |  | ||||
|             <h6 class="text-center" |  | ||||
|                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |  | ||||
|                 Odoo |  | ||||
|                 Consultancy</h6> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |  | ||||
|             <div class="d-flex justify-content-center align-items-center mx-3 my-3" |  | ||||
|                  style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |  | ||||
|                 <img src="assets/icons/training.png" class="img-responsive" |  | ||||
|                      height="48px" width="48px"> |  | ||||
|             </div> |  | ||||
|             <h6 class="text-center" |  | ||||
|                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |  | ||||
|                 Odoo |  | ||||
|                 Implementation</h6> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |  | ||||
|             <div class="d-flex justify-content-center align-items-center mx-3 my-3" |  | ||||
|                  style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |  | ||||
|                 <img src="assets/icons/license.png" class="img-responsive" |  | ||||
|                      height="48px" width="48px"> |  | ||||
|             </div> |  | ||||
|             <h6 class="text-center" |  | ||||
|                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |  | ||||
|                 Odoo |  | ||||
|                 Licensing Consultancy</h6> |  | ||||
|         </div> |  | ||||
|     </div> |  | ||||
| 
 |  | ||||
| </div> |  | ||||
| 
 |  | ||||
| <!-- END OF END OF OUR SERVICES --> |  | ||||
| 
 |  | ||||
| <!-- OUR INDUSTRIES --> |  | ||||
| 
 |  | ||||
| <div class="d-flex align-items-center" |  | ||||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |  | ||||
|     <div class="d-flex justify-content-center align-items-center mr-2" |  | ||||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |  | ||||
|         <img src="./assets/misc/corporate.png"/> |  | ||||
|     </div> |  | ||||
|     <h2 class="mt-2" |  | ||||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |  | ||||
|         Our |  | ||||
|         Industries |  | ||||
|     </h2> |  | ||||
| </div> |  | ||||
| 
 |  | ||||
| <div class="container my-5"> |  | ||||
|     <div class="row"> |  | ||||
|         <div class="col-lg-3"> |  | ||||
|             <div class="my-4 d-flex flex-column justify-content-center" |  | ||||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |  | ||||
|                 <img src="./assets/icons/trading-black.png" |  | ||||
|                      class="img-responsive mb-3" height="48px" width="48px"> |  | ||||
|                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |  | ||||
|                     Trading |  | ||||
|                 </h5> |  | ||||
|                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |  | ||||
|                     Easily procure |  | ||||
|                     and |  | ||||
|                     sell your products</p> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-3"> |  | ||||
|             <div class="my-4 d-flex flex-column justify-content-center" |  | ||||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |  | ||||
|                 <img src="./assets/icons/pos-black.png" |  | ||||
|                      class="img-responsive mb-3" height="48px" width="48px"> |  | ||||
|                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |  | ||||
|                     POS |  | ||||
|                 </h5> |  | ||||
|                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |  | ||||
|                     Easy |  | ||||
|                     configuration |  | ||||
|                     and convivial experience</p> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-3"> |  | ||||
|             <div class="my-4 d-flex flex-column justify-content-center" |  | ||||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |  | ||||
|                 <img src="./assets/icons/education-black.png" |  | ||||
|                      class="img-responsive mb-3" height="48px" width="48px"> |  | ||||
|                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |  | ||||
|                     Education |  | ||||
|                 </h5> |  | ||||
|                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |  | ||||
|                     A platform for |  | ||||
|                     educational management</p> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-3"> |  | ||||
|             <div class="my-4 d-flex flex-column justify-content-center" |  | ||||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |  | ||||
|                 <img src="./assets/icons/manufacturing-black.png" |  | ||||
|                      class="img-responsive mb-3" height="48px" |  | ||||
|                      width="48px"> |  | ||||
|                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |  | ||||
|                     Manufacturing |  | ||||
|                 </h5> |  | ||||
|                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |  | ||||
|                     Plan, track and |  | ||||
|                     schedule your operations</p> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-3"> |  | ||||
|             <div class="my-4 d-flex flex-column justify-content-center" |  | ||||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |  | ||||
|                 <img src="./assets/icons/ecom-black.png" |  | ||||
|                      class="img-responsive mb-3" height="48px" width="48px"> |  | ||||
|                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |  | ||||
|                     E-commerce & Website |  | ||||
|                 </h5> |  | ||||
|                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |  | ||||
|                     Mobile |  | ||||
|                     friendly, |  | ||||
|                     awe-inspiring product pages</p> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-3"> |  | ||||
|             <div class="my-4 d-flex flex-column justify-content-center" |  | ||||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |  | ||||
|                 <img src="./assets/icons/service-black.png" |  | ||||
|                      class="img-responsive mb-3" height="48px" width="48px"> |  | ||||
|                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |  | ||||
|                     Service Management |  | ||||
|                 </h5> |  | ||||
|                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |  | ||||
|                     Keep track of |  | ||||
|                     services and invoice</p> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-3"> |  | ||||
|             <div class="my-4 d-flex flex-column justify-content-center" |  | ||||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |  | ||||
|                 <img src="./assets/icons/restaurant-black.png" |  | ||||
|                      class="img-responsive mb-3" height="48px" width="48px"> |  | ||||
|                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |  | ||||
|                     Restaurant |  | ||||
|                 </h5> |  | ||||
|                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |  | ||||
|                     Run your bar or |  | ||||
|                     restaurant methodically</p> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
| 
 |  | ||||
|         <div class="col-lg-3"> |  | ||||
|             <div class="my-4 d-flex flex-column justify-content-center" |  | ||||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |  | ||||
|                 <img src="./assets/icons/hotel-black.png" |  | ||||
|                      class="img-responsive mb-3" height="48px" width="48px"> |  | ||||
|                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |  | ||||
|                     Hotel Management |  | ||||
|                 </h5> |  | ||||
|                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |  | ||||
|                     An |  | ||||
|                     all-inclusive |  | ||||
|                     hotel management application</p> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
|     </div> |  | ||||
| </div> |  | ||||
| 
 |  | ||||
| <!-- END OF END OF OUR INDUSTRIES --> |  | ||||
| 
 |  | ||||
| <!-- SUPPORT --> |  | ||||
| <div class="d-flex align-items-center" |  | ||||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |  | ||||
|     <div class="d-flex justify-content-center align-items-center mr-2" |  | ||||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |  | ||||
|         <img src="./assets/misc/customer-support.png"/> |  | ||||
|     </div> |  | ||||
|     <h2 class="mt-2" |  | ||||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |  | ||||
|         Support |  | ||||
|     </h2> |  | ||||
| </div> |  | ||||
| <div class="container mt-5"> |  | ||||
|     <div class="row"> |  | ||||
|         <div class="col-sm-12 col-md-6"> |  | ||||
|             <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> |  | ||||
|                 <div class="mr-4" |  | ||||
|                      style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> |  | ||||
|                     <img src="./assets/misc/support.png" height="48" width="48" |  | ||||
|                          style="width: 42px; height: 42px;"/> |  | ||||
|                 </div> |  | ||||
|                 <div> |  | ||||
|                     <h4>Need Help?</h4> |  | ||||
|                     <p style="line-height: 100%;">Got questions or need help? |  | ||||
|                         Get in touch.</p> |  | ||||
|                     <a href="mailto:odoo@cybrosys.com"> |  | ||||
|                         <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> |  | ||||
|                             odoo@cybrosys.com</p> |  | ||||
|                     </a> |  | ||||
|                 </div> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
|         <div class="col-sm-12 col-md-6"> |  | ||||
|             <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> |  | ||||
|                 <div class="mr-4" |  | ||||
|                      style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> |  | ||||
|                     <img src="./assets/misc/whatsapp.png" height="52" width="52" |  | ||||
|                          style="width: 52px; height: 52px;"/> |  | ||||
|                 </div> |  | ||||
|                 <div> |  | ||||
|                     <h4>WhatsApp</h4> |  | ||||
|                     <p style="line-height: 100%;">Say hi to us on WhatsApp!</p> |  | ||||
|                     <a href="https://api.whatsapp.com/send?phone=918606827707"> |  | ||||
|                         <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> |  | ||||
|                             +91 86068 |  | ||||
|                             27707</p> |  | ||||
|                     </a> |  | ||||
|                 </div> |  | ||||
|             </div> |  | ||||
|         </div> |  | ||||
|     </div> |  | ||||
|     <div class="row"> |  | ||||
|         <div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> |  | ||||
|             <img src="./assets/misc/logo.png" width="144" height="31" |  | ||||
|                  style="width:144px; height: 31px; margin-top: 40px;"/> |  | ||||
|         </div> |  | ||||
|     </div> |  | ||||
| </div> |  | ||||
| <!-- END OF SUPPORT --> |  | ||||
| @ -1,9 +0,0 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> |  | ||||
| <odoo> |  | ||||
|     <!--    This template defines a form used for |  | ||||
|     redirecting to the payment provider.--> |  | ||||
|     <template id="redirect_form"> |  | ||||
|         <t t-log="api_url"/> |  | ||||
|         <form t-att-action="api_url" method="POST"/> |  | ||||
|     </template> |  | ||||
| </odoo> |  | ||||
| @ -1,18 +0,0 @@ | |||||
| <?xml version="1.0" encoding="UTF-8" ?> |  | ||||
| <odoo> |  | ||||
|     <!--  Creating Wallee mandatory fields  --> |  | ||||
|     <record id="payment_provider_form" model="ir.ui.view"> |  | ||||
|         <field name="name">payment.provider.view.form.inherit.wallee.payment.gateway</field> |  | ||||
|         <field name="model">payment.provider</field> |  | ||||
|         <field name="inherit_id" ref="payment.payment_provider_form"/> |  | ||||
|         <field name="arch" type="xml"> |  | ||||
|             <group name="provider_credentials" position='inside'> |  | ||||
|                 <group attrs="{'invisible': [('code', '!=', 'wallee')]}"> |  | ||||
|                     <field name="wallee_user_id" password="True" attrs="{'required':[ ('code', '=', 'wallee'), ('state', '!=', 'disabled')]}"/> |  | ||||
|                     <field name="wallee_user_secret_key" password="True" attrs="{'required':[ ('code', '=', 'wallee'), ('state', '!=', 'disabled')]}"/> |  | ||||
|                     <field name="wallee_user_space_id" password="True" attrs="{'required':[ ('code', '=', 'wallee'), ('state', '!=', 'disabled')]}"/> |  | ||||
|                 </group> |  | ||||
|             </group> |  | ||||
|         </field> |  | ||||
|     </record> |  | ||||
| </odoo> |  | ||||