@ -0,0 +1,46 @@ | 
				
			|||||
 | 
					.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg | 
				
			||||
 | 
					    :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html | 
				
			||||
 | 
					    :alt: License: AGPL-3 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					RFQ From Portal | 
				
			||||
 | 
					=============== | 
				
			||||
 | 
					* This module helps to create quotations from portal in odoo16. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Configuration | 
				
			||||
 | 
					============= | 
				
			||||
 | 
					* No additional configurations needed | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Company | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					License | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					GNU AFFERO GENERAL PUBLIC LICENSE v3.0 (AGPL-3) | 
				
			||||
 | 
					(https://www.gnu.org/licenses/agpl-3.0-standalone.html) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Credits | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					* Developer: (V16): Sruthi M Kumar , 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,22 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################### | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions (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 | 
				
			||||
@ -0,0 +1,50 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################### | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions (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': 'RFQ From Portal', | 
				
			||||
 | 
					    'version': '16.0.1.0.0', | 
				
			||||
 | 
					    'category': 'eCommerce', | 
				
			||||
 | 
					    'summary': 'Customers can create quotations from customer portal', | 
				
			||||
 | 
					    'description': 'Customers can use the portal to send a request for a ' | 
				
			||||
 | 
					                   'quotation.They can add a single or multiple products. ' | 
				
			||||
 | 
					                   'They can also add notes.', | 
				
			||||
 | 
					    'author': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'company': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'maintainer': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'website': 'https://www.cybrosys.com', | 
				
			||||
 | 
					    'depends': ['sale_management', 'account', 'website'], | 
				
			||||
 | 
					    'data': [ | 
				
			||||
 | 
					        'views/portal_rfq_templates.xml', | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    'assets': { | 
				
			||||
 | 
					        'web.assets_frontend': [ | 
				
			||||
 | 
					            'website_portal_rfq/static/src/js/customer_portal.js', | 
				
			||||
 | 
					            'website_portal_rfq/static/src/css/website_rfq.css', | 
				
			||||
 | 
					            'https://unpkg.com/sweetalert/dist/sweetalert.min.js', | 
				
			||||
 | 
					        ], | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    'images': ['static/description/banner.jpg'], | 
				
			||||
 | 
					    'license': 'AGPL-3', | 
				
			||||
 | 
					    'installable': True, | 
				
			||||
 | 
					    'application': False, | 
				
			||||
 | 
					    'auto_install': False, | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,22 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    This program is free software: you can modify | 
				
			||||
 | 
					#    it under the terms of the GNU Affero General Public License (AGPL) as | 
				
			||||
 | 
					#    published by the Free Software Foundation, either version 3 of the | 
				
			||||
 | 
					#    License, or (at your option) any later version. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU Affero General Public License | 
				
			||||
 | 
					#    along with this program.  If not, see <https://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################# | 
				
			||||
 | 
					from . import website_portal_rfq | 
				
			||||
@ -0,0 +1,123 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################### | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | 
				
			||||
 | 
					#    Author: Cybrosys Techno Solutions (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 http | 
				
			||||
 | 
					from odoo.http import request | 
				
			||||
 | 
					from odoo.addons.portal.controllers import portal | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class CustomerPortal(portal.CustomerPortal): | 
				
			||||
 | 
					    """Helps to manage the customer portal controller""" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def _prepare_home_portal_values(self, counters): | 
				
			||||
 | 
					        """Update count of document to None""" | 
				
			||||
 | 
					        values = super()._prepare_home_portal_values(counters) | 
				
			||||
 | 
					        if 'qtn_count' in counters: | 
				
			||||
 | 
					            values['qtn_count'] = None | 
				
			||||
 | 
					        return values | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @http.route( | 
				
			||||
 | 
					        ['/my/quotation_request', '/my/quotation_request/page/<int:page>'], | 
				
			||||
 | 
					        type='http', auth="user", | 
				
			||||
 | 
					        website=True) | 
				
			||||
 | 
					    def portal_my_mo(self): | 
				
			||||
 | 
					        """Returns quotation template with values.""" | 
				
			||||
 | 
					        values = self._prepare_portal_layout_values() | 
				
			||||
 | 
					        values.update({ | 
				
			||||
 | 
					            'page_name': 'rfq_p', | 
				
			||||
 | 
					            'login_partner': request.env.user.partner_id, | 
				
			||||
 | 
					            'partners': request.env['res.partner'].search([]), | 
				
			||||
 | 
					            'default_url': '/my/quotation_request', | 
				
			||||
 | 
					        }) | 
				
			||||
 | 
					        return request.render( | 
				
			||||
 | 
					            "website_portal_rfq.portal_my_rfq_requests", | 
				
			||||
 | 
					            values) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @http.route(['/my/send_request'], type="http", auth="public", website=True) | 
				
			||||
 | 
					    def button_send_request(self, **kw): | 
				
			||||
 | 
					        """Create a new quotation by submitting the request from the portal""" | 
				
			||||
 | 
					        login_partner = request.env.user.partner_id | 
				
			||||
 | 
					        partner_address = request.env['res.partner'].browse( | 
				
			||||
 | 
					            [int(kw.get('address1', 0)), int(kw.get('address2', 0))]) | 
				
			||||
 | 
					        price_list = login_partner.property_product_pricelist | 
				
			||||
 | 
					        order_lines = [(0, 0, { | 
				
			||||
 | 
					            'product_id': product.id, | 
				
			||||
 | 
					            'product_template_id': product.product_tmpl_id.id, | 
				
			||||
 | 
					            'product_uom': request.env['uom.uom'].sudo().browse( | 
				
			||||
 | 
					                int(kw.get('uom_' + key.split('_')[1]))).id, | 
				
			||||
 | 
					            'price_unit': price_list._get_product_price(product, float(kw.get( | 
				
			||||
 | 
					                'quantity_' + key.split('_')[ | 
				
			||||
 | 
					                    1]))) if price_list else product.list_price, | 
				
			||||
 | 
					            'product_uom_qty': kw.get('quantity_' + key.split('_')[1]), | 
				
			||||
 | 
					        }) for key, value in kw.items() if key.startswith('product_') for | 
				
			||||
 | 
					                       product in | 
				
			||||
 | 
					                       [request.env['product.product'].sudo().browse( | 
				
			||||
 | 
					                           int(value))]] | 
				
			||||
 | 
					        if len(partner_address) == 2 and order_lines: | 
				
			||||
 | 
					            sale_order = request.env['sale.order'].sudo().create({ | 
				
			||||
 | 
					                'partner_id': login_partner.id, | 
				
			||||
 | 
					                'partner_invoice_id': partner_address[0].id, | 
				
			||||
 | 
					                'partner_shipping_id': partner_address[1].id, | 
				
			||||
 | 
					                'note': kw.get('description'), | 
				
			||||
 | 
					                'order_line': order_lines, | 
				
			||||
 | 
					                'pricelist_id': price_list.id if price_list else False, | 
				
			||||
 | 
					            }) | 
				
			||||
 | 
					            if sale_order: | 
				
			||||
 | 
					                return request.render('quotation.thanks', | 
				
			||||
 | 
					                                      {'sale_order': sale_order.name}) | 
				
			||||
 | 
					        return request.redirect('/my/quotation_request') | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @http.route( | 
				
			||||
 | 
					        ['/my/product_details'], | 
				
			||||
 | 
					        type='json', auth="user", | 
				
			||||
 | 
					        website=True) | 
				
			||||
 | 
					    def portal_product(self): | 
				
			||||
 | 
					        """When add new product from portal the function will return the | 
				
			||||
 | 
					         selected product from product.product""" | 
				
			||||
 | 
					        products = request.env['product.product'].sudo().search( | 
				
			||||
 | 
					            [('sale_ok', '=', True)]) | 
				
			||||
 | 
					        return {'product_id': [[product.display_name, product.id] for product in | 
				
			||||
 | 
					                               products]} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @http.route('/my/product_uom', type='json', auth="public", methods=['POST'], | 
				
			||||
 | 
					                website=True) | 
				
			||||
 | 
					    def get_product_uom(self, product_id=None, **kw): | 
				
			||||
 | 
					        """Get Unit of measures based on the product""" | 
				
			||||
 | 
					        if product_id: | 
				
			||||
 | 
					            product = request.env['product.product'].sudo().browse( | 
				
			||||
 | 
					                int(product_id)) | 
				
			||||
 | 
					            if product: | 
				
			||||
 | 
					                uom_options = [(uom.id, uom.name) for uom in | 
				
			||||
 | 
					                               product.uom_id.category_id.uom_ids] | 
				
			||||
 | 
					                return { | 
				
			||||
 | 
					                    'uom_ids': uom_options, | 
				
			||||
 | 
					                } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @http.route( | 
				
			||||
 | 
					        ['/my/product_image'], | 
				
			||||
 | 
					        type='json', auth="user", | 
				
			||||
 | 
					        website=True, csrf=False) | 
				
			||||
 | 
					    def portal_product_image(self, **kw): | 
				
			||||
 | 
					        """When onchange the product, it will call this function to get | 
				
			||||
 | 
					        the image of the product""" | 
				
			||||
 | 
					        if kw.get('onchange_product_id'): | 
				
			||||
 | 
					            return request.env['product.product'].sudo().browse( | 
				
			||||
 | 
					                int(kw.get('onchange_product_id'))).image_1920 | 
				
			||||
@ -0,0 +1,5 @@ | 
				
			|||||
 | 
					## Module <website_portal_rfq> | 
				
			||||
 | 
					#### 09.01.2024 | 
				
			||||
 | 
					#### Version 16.0.1.0.0 | 
				
			||||
 | 
					#### ADD | 
				
			||||
 | 
					- Initial Commit for RFQ From Portal | 
				
			||||
| 
		 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: 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: 81 KiB  | 
| 
		 After Width: | Height: | Size: 83 KiB  | 
| 
		 After Width: | Height: | Size: 82 KiB  | 
| 
		 After Width: | Height: | Size: 82 KiB  | 
| 
		 After Width: | Height: | Size: 81 KiB  | 
| 
		 After Width: | Height: | Size: 1006 KiB  | 
| 
		 After Width: | Height: | Size: 188 KiB  | 
| 
		 After Width: | Height: | Size: 45 KiB  | 
| 
		 After Width: | Height: | Size: 64 KiB  | 
| 
		 After Width: | Height: | Size: 49 KiB  | 
| 
		 After Width: | Height: | Size: 58 KiB  | 
| 
		 After Width: | Height: | Size: 63 KiB  | 
| 
		 After Width: | Height: | Size: 61 KiB  | 
| 
		 After Width: | Height: | Size: 56 KiB  | 
| 
		 After Width: | Height: | Size: 75 KiB  | 
| 
		 After Width: | Height: | Size: 35 KiB  | 
| 
		 After Width: | Height: | Size: 119 KiB  | 
| 
		 After Width: | Height: | Size: 89 KiB  | 
| 
		 After Width: | Height: | Size: 10 KiB  | 
@ -0,0 +1,674 @@ | 
				
			|||||
 | 
					<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>Enterprise | 
				
			||||
 | 
					            </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: #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>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;"> | 
				
			||||
 | 
					                    RFQ From Portal</h1> | 
				
			||||
 | 
					                <p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;"> | 
				
			||||
 | 
					                    This module is helps to create RFQ from portal.</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 to request the quotation from customer portal. They can add single or multiple products, Also they can send some notes about the quotations. | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!-- END OF OVERVIEW SECTION --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- FEATURES SECTION --> | 
				
			||||
 | 
					<div class="d-flex align-items-center" | 
				
			||||
 | 
					     style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features"> | 
				
			||||
 | 
					    <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					         style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					        <img src="assets/misc/features.png"/> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <h2 class="mt-2" | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | 
				
			||||
 | 
					        Features | 
				
			||||
 | 
					    </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="row" | 
				
			||||
 | 
					     style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | 
				
			||||
 | 
					    <div class="col-sm-12 col-md-6"> | 
				
			||||
 | 
					        <div class="d-flex align-items-center" | 
				
			||||
 | 
					             style="margin-top: 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;">An option to send quotation request from customer 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;">Compatible with Odoo16 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;"> | 
				
			||||
 | 
					            <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | 
				
			||||
 | 
					                Go to My Account. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq0.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;"> | 
				
			||||
 | 
					                Open Quotation Request from the Documents. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq1.png" class="img-thumbnail"> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div style="display: block; margin: 30px auto;"> | 
				
			||||
 | 
					            <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | 
				
			||||
 | 
					                Click on the button to Add Product. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq2.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 Product and add Total Qty. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq3.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;"> | 
				
			||||
 | 
					                If you click Add Product button again without adding the product in first line, it will show a Popup. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq4.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;"> | 
				
			||||
 | 
					                If you click on the Send Request button without adding the product, it will show a Popup. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq5.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;"> | 
				
			||||
 | 
					                Add products and then click Send Request button. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq6.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;"> | 
				
			||||
 | 
					                It will redirect to a success message page. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq7.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;"> | 
				
			||||
 | 
					                The created quotation from portal. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq8.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;"> | 
				
			||||
 | 
					                Requested Quotation from the portal. | 
				
			||||
 | 
					            </h3> | 
				
			||||
 | 
					            <img src="assets/screenshots/rfq9.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/hide_menu_user/" | 
				
			||||
 | 
					                           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/sales_credit_limit/" | 
				
			||||
 | 
					                           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/inventory_barcode_scanning/" | 
				
			||||
 | 
					                           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/sale_discount_total/" | 
				
			||||
 | 
					                           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/hr_payroll_community/" | 
				
			||||
 | 
					                           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/ohrms_core/" | 
				
			||||
 | 
					                           target="_blank"> | 
				
			||||
 | 
					                            <div style="border-radius:10px"> | 
				
			||||
 | 
					                                <img class="img img-responsive center-block" | 
				
			||||
 | 
					                                     style="border-radius: 0px;" | 
				
			||||
 | 
					                                     src="assets/modules/6.gif"> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                        </a> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <!-- Left and right controls --> | 
				
			||||
 | 
					            <a class="carousel-control-prev" href="#demo1" data-slide="prev" | 
				
			||||
 | 
					               style="width:35px; color:#000"> <span | 
				
			||||
 | 
					                    class="carousel-control-prev-icon"><i | 
				
			||||
 | 
					                    class="fa fa-chevron-left" | 
				
			||||
 | 
					                    style="font-size:24px"></i></span> | 
				
			||||
 | 
					            </a> <a class="carousel-control-next" href="#demo1" | 
				
			||||
 | 
					                    data-slide="next" style="width:35px; color:#000"> | 
				
			||||
 | 
					            <span class="carousel-control-next-icon"><i | 
				
			||||
 | 
					                    class="fa fa-chevron-right" | 
				
			||||
 | 
					                    style="font-size:24px"></i></span> | 
				
			||||
 | 
					        </a> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!-- END OF RELATED PRODUCTS --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- OUR SERVICES --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<div class="d-flex align-items-center" | 
				
			||||
 | 
					     style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | 
				
			||||
 | 
					    <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					         style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					        <img src="assets/misc/star.png"/> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <h2 class="mt-2" | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | 
				
			||||
 | 
					        Our Services | 
				
			||||
 | 
					    </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<div class="container my-5"> | 
				
			||||
 | 
					    <div class="row"> | 
				
			||||
 | 
					        <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					            <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					                 style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					                <img src="assets/icons/cogs.png" class="img-responsive" | 
				
			||||
 | 
					                     height="48px" width="48px"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <h6 class="text-center" | 
				
			||||
 | 
					                style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					                Odoo | 
				
			||||
 | 
					                Customization</h6> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					            <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					                 style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					                <img src="assets/icons/wrench.png" class="img-responsive" | 
				
			||||
 | 
					                     height="48px" width="48px"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <h6 class="text-center" | 
				
			||||
 | 
					                style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					                Odoo | 
				
			||||
 | 
					                Implementation</h6> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					            <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					                 style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					                <img src="assets/icons/lifebuoy.png" class="img-responsive" | 
				
			||||
 | 
					                     height="48px" width="48px"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <h6 class="text-center" | 
				
			||||
 | 
					                style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					                Odoo | 
				
			||||
 | 
					                Support</h6> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					            <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					                 style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					                <img src="assets/icons/user.png" class="img-responsive" | 
				
			||||
 | 
					                     height="48px" width="48px"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <h6 class="text-center" | 
				
			||||
 | 
					                style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					                Hire | 
				
			||||
 | 
					                Odoo | 
				
			||||
 | 
					                Developer</h6> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					            <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					                 style="background-color: #54a0ff  !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					                <img src="assets/icons/puzzle.png" class="img-responsive" | 
				
			||||
 | 
					                     height="48px" width="48px"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <h6 class="text-center" | 
				
			||||
 | 
					                style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					                Odoo | 
				
			||||
 | 
					                Integration</h6> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					            <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					                 style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					                <img src="assets/icons/update.png" class="img-responsive" | 
				
			||||
 | 
					                     height="48px" width="48px"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <h6 class="text-center" | 
				
			||||
 | 
					                style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					                Odoo | 
				
			||||
 | 
					                Migration</h6> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					            <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					                 style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					                <img src="assets/icons/consultation.png" class="img-responsive" | 
				
			||||
 | 
					                     height="48px" width="48px"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <h6 class="text-center" | 
				
			||||
 | 
					                style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					                Odoo | 
				
			||||
 | 
					                Consultancy</h6> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					            <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					                 style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					                <img src="assets/icons/training.png" class="img-responsive" | 
				
			||||
 | 
					                     height="48px" width="48px"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <h6 class="text-center" | 
				
			||||
 | 
					                style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					                Odoo | 
				
			||||
 | 
					                Implementation</h6> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					            <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					                 style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					                <img src="assets/icons/license.png" class="img-responsive" | 
				
			||||
 | 
					                     height="48px" width="48px"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <h6 class="text-center" | 
				
			||||
 | 
					                style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					                Odoo | 
				
			||||
 | 
					                Licensing Consultancy</h6> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- END OF OUR SERVICES --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- OUR INDUSTRIES --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<div class="d-flex align-items-center" | 
				
			||||
 | 
					     style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | 
				
			||||
 | 
					    <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					         style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					        <img src="assets/misc/corporate.png"/> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <h2 class="mt-2" | 
				
			||||
 | 
					        style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | 
				
			||||
 | 
					        Our | 
				
			||||
 | 
					        Industries | 
				
			||||
 | 
					    </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<div class="container my-5"> | 
				
			||||
 | 
					    <div class="row"> | 
				
			||||
 | 
					        <div class="col-lg-3"> | 
				
			||||
 | 
					            <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					                 style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					                <img src="assets/icons/trading-black.png" | 
				
			||||
 | 
					                     class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					                <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					                    Trading | 
				
			||||
 | 
					                </h5> | 
				
			||||
 | 
					                <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					                    Easily procure | 
				
			||||
 | 
					                    and | 
				
			||||
 | 
					                    sell your products</p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-3"> | 
				
			||||
 | 
					            <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					                 style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					                <img src="assets/icons/pos-black.png" | 
				
			||||
 | 
					                     class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					                <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					                    POS | 
				
			||||
 | 
					                </h5> | 
				
			||||
 | 
					                <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					                    Easy | 
				
			||||
 | 
					                    configuration | 
				
			||||
 | 
					                    and convivial experience</p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-3"> | 
				
			||||
 | 
					            <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					                 style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					                <img src="assets/icons/education-black.png" | 
				
			||||
 | 
					                     class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					                <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					                    Education | 
				
			||||
 | 
					                </h5> | 
				
			||||
 | 
					                <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					                    A platform for | 
				
			||||
 | 
					                    educational management</p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-3"> | 
				
			||||
 | 
					            <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					                 style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					                <img src="assets/icons/manufacturing-black.png" | 
				
			||||
 | 
					                     class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					                <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					                    Manufacturing | 
				
			||||
 | 
					                </h5> | 
				
			||||
 | 
					                <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					                    Plan, track and | 
				
			||||
 | 
					                    schedule your operations</p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <div class="col-lg-3"> | 
				
			||||
 | 
					            <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					                 style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					                <img src="assets/icons/ecom-black.png" | 
				
			||||
 | 
					                     class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					                <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					                    E-commerce & 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 --> | 
				
			||||
@ -0,0 +1,7 @@ | 
				
			|||||
 | 
					.image_11 { | 
				
			||||
 | 
					  width: 100px; | 
				
			||||
 | 
					  height: 100px; | 
				
			||||
 | 
					  object-fit: contain; | 
				
			||||
 | 
					  /* Add more CSS styles here */ | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
| 
		 After Width: | Height: | Size: 66 KiB  | 
@ -0,0 +1,125 @@ | 
				
			|||||
 | 
					odoo.define('website_portal_rfq.customer_portal', function (require) { | 
				
			||||
 | 
					    var ajax = require('web.ajax'); | 
				
			||||
 | 
					    var publicWidget = require('web.public.widget'); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    publicWidget.registry.AdvancedPortalImport = publicWidget.Widget.extend({ | 
				
			||||
 | 
					        selector: '.o_portal_wrap', | 
				
			||||
 | 
					        events: { | 
				
			||||
 | 
					            'click #add_image': '_onClickAddProduct', | 
				
			||||
 | 
					            'click .delete_row': '_onClickDeleteRow', | 
				
			||||
 | 
					            'click .send_rfq_request1': '_onClickSubmit', | 
				
			||||
 | 
					            'change .add_product_images': '_onChangeProduct', | 
				
			||||
 | 
					            'change .quantity': '_onChangeQuantity', | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//         This will help add products from the portal to create a new order
 | 
				
			||||
 | 
					        _onClickAddProduct: async function (e) { | 
				
			||||
 | 
					            var rowCount = this.$("#image_table tr").length; | 
				
			||||
 | 
					            if (rowCount === 0) { | 
				
			||||
 | 
					                this.$("#image_table").append('<tr><td colspan="4">Add Products</td></tr>'); | 
				
			||||
 | 
					                return; | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					            var allRowsHaveProducts = true; // Flag to track if all rows have products
 | 
				
			||||
 | 
					            // Loop through each row in the table
 | 
				
			||||
 | 
					            this.$("#image_table tr.products").each(function () { | 
				
			||||
 | 
					                var productSelect = $(this).find("select.add_product_images"); | 
				
			||||
 | 
					                if (productSelect.val() === "") { | 
				
			||||
 | 
					                    allRowsHaveProducts = false; | 
				
			||||
 | 
					                    return false; | 
				
			||||
 | 
					                } | 
				
			||||
 | 
					            }); | 
				
			||||
 | 
					            if (!allRowsHaveProducts) { | 
				
			||||
 | 
					                alert("Please select a product for all rows."); | 
				
			||||
 | 
					                return; | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					            rowCount++; | 
				
			||||
 | 
					            var rowId = "row_" + rowCount; | 
				
			||||
 | 
					            var imageId = "image_" + rowCount; | 
				
			||||
 | 
					            var productId = "product_" + rowCount; | 
				
			||||
 | 
					            var uomId = "uom_" + rowCount; | 
				
			||||
 | 
					            var quantityId = "quantity_" + rowCount; | 
				
			||||
 | 
					            var descriptionId = "description_" + rowCount; | 
				
			||||
 | 
					            table_data='<tr id="' + rowId + '" class="products"> <td style="padding:10px;display: flex; justify-content: center; align-items: center;" class="td-product_name1"><img src="/website_portal_rfq/static/src/img/cam1.png" id="' + imageId + '" value="Product Image" name="' + imageId + '" class="image_11"/></td><td style="padding:10px;"><select class="add_product_images form-control se-form-control select2" name="' + productId + '" id="' + productId + '" required="required"><option value="">Select Products...</option>'; | 
				
			||||
 | 
					            await ajax.jsonRpc('/my/product_details', 'call', {}).then(function (data) { | 
				
			||||
 | 
					                for (let i = 0; i < data.product_id.length; i++) { | 
				
			||||
 | 
					                    table_data+='<option value='+data.product_id[i][1]+'>'+data.product_id[i][0]+'</option>'; | 
				
			||||
 | 
					                } | 
				
			||||
 | 
					            }); | 
				
			||||
 | 
					            table_data+='</select></td>' | 
				
			||||
 | 
					            table_data+='<td style="padding:10px;"><select class="add_uom form-control se-form-control" name="' + uomId + '" id="' + uomId + '" required="required"><option value="">Select UoM...</option></select></td>' | 
				
			||||
 | 
					            table_data+='<td style="padding:10px;" class="quantity td-product_name" name="quantity"><input type="text" class="form-control" value="1" required="required" name="' + quantityId + '" id="' + quantityId + '"/></td><td style="padding-top:10px;padding-right: 10px;padding-bottom: 10px;padding-left: 35px;" class="td-action"><a href="#" aria-label="Remove product" title="Remove Product" class="delete_row no-decoration"><small><i class="fa fa-trash-o"></i></small></a></td></tr>'; | 
				
			||||
 | 
					            this.$("#image_table").append(table_data); | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        // Delete the row if not needed
 | 
				
			||||
 | 
					        _onClickDeleteRow: function (e) { | 
				
			||||
 | 
					            var row = this.$(e.currentTarget).parent().parent()[0].id; | 
				
			||||
 | 
					            this.$('#' + row).remove(); | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        // Submit the request from the portal
 | 
				
			||||
 | 
					        _onClickSubmit: function (e) { | 
				
			||||
 | 
					            e.preventDefault(); | 
				
			||||
 | 
					            var productCount = this.$("#image_table tr.products").length; | 
				
			||||
 | 
					            if (productCount === 0) { | 
				
			||||
 | 
					                alert("Please add at least one product before submitting the form."); | 
				
			||||
 | 
					                return; | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					            // Loop through each row in the table
 | 
				
			||||
 | 
					            var allRowsHaveProducts = true; | 
				
			||||
 | 
					            this.$("#image_table tr.products").each(function () { | 
				
			||||
 | 
					                var productSelect = $(this).find("select.add_product_images"); | 
				
			||||
 | 
					                if (productSelect.val() === "") { | 
				
			||||
 | 
					                    allRowsHaveProducts = false; | 
				
			||||
 | 
					                    return false; | 
				
			||||
 | 
					                } | 
				
			||||
 | 
					            }); | 
				
			||||
 | 
					            if (!allRowsHaveProducts) { | 
				
			||||
 | 
					                alert("Please select a product for all rows."); | 
				
			||||
 | 
					                return; | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					            var form = this.$("#my_send_request"); | 
				
			||||
 | 
					            form.submit(); | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					//        Check if the input is a valid number
 | 
				
			||||
 | 
					        _onChangeQuantity:function (e) { | 
				
			||||
 | 
					             var inputValue = e.target.value; | 
				
			||||
 | 
					              var isNumeric = /^[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?$/.test(inputValue); | 
				
			||||
 | 
					              if (!isNumeric) { | 
				
			||||
 | 
					                alert("Please enter a valid numeric value for quantity."); | 
				
			||||
 | 
					                // Set it back to the default value
 | 
				
			||||
 | 
					                e.target.value = "1"; | 
				
			||||
 | 
					              } | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        // Add image of the product when changing it
 | 
				
			||||
 | 
					        _onChangeProduct: function (e) { | 
				
			||||
 | 
					            const row = this.$(e.currentTarget).closest('tr'); | 
				
			||||
 | 
					            const uomSelect = row.find('select.add_uom'); | 
				
			||||
 | 
					           // Update the image
 | 
				
			||||
 | 
					            const img = row.find('img')[0]; | 
				
			||||
 | 
					            ajax.jsonRpc('/my/product_image', 'call', { | 
				
			||||
 | 
					                'onchange_product_id': e.currentTarget.value, | 
				
			||||
 | 
					            }).then(function (data) { | 
				
			||||
 | 
					                img.src = data ? 'data:image/jpeg;base64,' + data : '/website_portal_rfq/static/src/img/cam1.png'; | 
				
			||||
 | 
					            }); | 
				
			||||
 | 
					            // Fetch and update the UOM options based on the selected product
 | 
				
			||||
 | 
					            const productId = e.currentTarget.value; | 
				
			||||
 | 
					            if (productId) { | 
				
			||||
 | 
					                ajax.jsonRpc('/my/product_uom', 'call', { | 
				
			||||
 | 
					                    'product_id': productId, | 
				
			||||
 | 
					                }).then(function (data) { | 
				
			||||
 | 
					                    // Update the UOM select options
 | 
				
			||||
 | 
					                    uomSelect.empty(); | 
				
			||||
 | 
					                    for (let i = 0; i < data.uom_ids.length; i++) { | 
				
			||||
 | 
					                        uomSelect.append('<option value="' + data.uom_ids[i][0] + '">' + data.uom_ids[i][1] + '</option>'); | 
				
			||||
 | 
					                    } | 
				
			||||
 | 
					                }); | 
				
			||||
 | 
					            } else { | 
				
			||||
 | 
					                // Clear UOM options if no product is selected
 | 
				
			||||
 | 
					                uomSelect.empty(); | 
				
			||||
 | 
					                uomSelect.append('<option value="">Select UoM...</option>'); | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					    }); | 
				
			||||
 | 
					}); | 
				
			||||
@ -0,0 +1,175 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8" ?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <!--        Quotation Request in home--> | 
				
			||||
 | 
					    <template id="portal_my_home_quotation_request" | 
				
			||||
 | 
					              name="Show Quotation Request" | 
				
			||||
 | 
					              inherit_id="portal.portal_my_home" priority="70"> | 
				
			||||
 | 
					        <xpath expr="//div[hasclass('o_portal_docs')]" position="inside"> | 
				
			||||
 | 
					            <t t-call="portal.portal_docs_entry"> | 
				
			||||
 | 
					                <t t-set="title">Quotation Request</t> | 
				
			||||
 | 
					                <t t-set="url" t-value="'/my/quotation_request'"/> | 
				
			||||
 | 
					                <t t-set="placeholder_count" t-value="'qtn_count'"/> | 
				
			||||
 | 
					            </t> | 
				
			||||
 | 
					        </xpath> | 
				
			||||
 | 
					    </template> | 
				
			||||
 | 
					    <!--        Quotation Request portal_breadcrumbs--> | 
				
			||||
 | 
					    <template id="portal_my_home_menu_quotation" | 
				
			||||
 | 
					              name="Portal layout : quotation creation" | 
				
			||||
 | 
					              inherit_id="portal.portal_breadcrumbs" | 
				
			||||
 | 
					              priority="20"> | 
				
			||||
 | 
					        <xpath expr="//ol[hasclass('o_portal_submenu')]" position="inside"> | 
				
			||||
 | 
					            <li t-if="page_name == 'rfq_p'" | 
				
			||||
 | 
					                t-attf-class="breadcrumb-item #{'active '  ''}"> | 
				
			||||
 | 
					                <a t-attf-href="/my/quotation_request?{{ keep_query() }}"> | 
				
			||||
 | 
					                    Quotation Request | 
				
			||||
 | 
					                </a> | 
				
			||||
 | 
					            </li> | 
				
			||||
 | 
					        </xpath> | 
				
			||||
 | 
					    </template> | 
				
			||||
 | 
					    <!--        Quotation Requests form--> | 
				
			||||
 | 
					    <template id="portal_my_rfq_requests" name="My Orders"> | 
				
			||||
 | 
					        <t t-call="portal.portal_layout"> | 
				
			||||
 | 
					            <t t-set="breadcrumbs_searchbar" t-value="True"/> | 
				
			||||
 | 
					            <t t-call="portal.portal_searchbar"> | 
				
			||||
 | 
					                <t t-set="title">Quotation Requests</t> | 
				
			||||
 | 
					            </t> | 
				
			||||
 | 
					            <form action="/my/send_request" method="post" | 
				
			||||
 | 
					                  id="my_send_request" | 
				
			||||
 | 
					                  enctype="multipart/form-data"> | 
				
			||||
 | 
					                <input type="hidden" name="csrf_token" | 
				
			||||
 | 
					                       t-att-value="request.csrf_token()"/> | 
				
			||||
 | 
					                <div class="container"> | 
				
			||||
 | 
					                    <div class="row"> | 
				
			||||
 | 
					                        <div class="col-md"> | 
				
			||||
 | 
					                            <label class="col-form-label" | 
				
			||||
 | 
					                                   for="name1"> | 
				
			||||
 | 
					                                Invoice Address | 
				
			||||
 | 
					                            </label> | 
				
			||||
 | 
					                            <select name="address1" | 
				
			||||
 | 
					                                    t-attf-class=""> | 
				
			||||
 | 
					                                <option selected="selected" | 
				
			||||
 | 
					                                        t-att-value="login_partner.id"> | 
				
			||||
 | 
					                                    <t t-esc="login_partner.name"/> | 
				
			||||
 | 
					                                </option> | 
				
			||||
 | 
					                                <t t-foreach="partners" t-as="part"> | 
				
			||||
 | 
					                                    <option t-att-value="part.id"> | 
				
			||||
 | 
					                                        <t t-esc="part.name"/> | 
				
			||||
 | 
					                                    </option> | 
				
			||||
 | 
					                                </t> | 
				
			||||
 | 
					                            </select> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                        <div class="col-md" | 
				
			||||
 | 
					                             style="padding-left: 10px; margin-top: 10px;"> | 
				
			||||
 | 
					                            <label class="col-form-label" | 
				
			||||
 | 
					                                   for="name2"> | 
				
			||||
 | 
					                                Shipping Address | 
				
			||||
 | 
					                            </label> | 
				
			||||
 | 
					                            <select name="address2" | 
				
			||||
 | 
					                                    t-attf-class=""> | 
				
			||||
 | 
					                                <option selected="selected" | 
				
			||||
 | 
					                                        t-att-value="login_partner.id"> | 
				
			||||
 | 
					                                    <t t-esc="login_partner.name"/> | 
				
			||||
 | 
					                                </option> | 
				
			||||
 | 
					                                <t t-foreach="partners" t-as="part"> | 
				
			||||
 | 
					                                    <option t-att-value="part.id"> | 
				
			||||
 | 
					                                        <t t-esc="part.name"/> | 
				
			||||
 | 
					                                    </option> | 
				
			||||
 | 
					                                </t> | 
				
			||||
 | 
					                            </select> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					                <div> | 
				
			||||
 | 
					                    <table class="table table-bordered" | 
				
			||||
 | 
					                           style="margin-top:10px;" | 
				
			||||
 | 
					                           id="image_table"> | 
				
			||||
 | 
					                        <thead style="padding:10px;width:100px;"> | 
				
			||||
 | 
					                            <tr> | 
				
			||||
 | 
					                                <th style="display: flex; justify-content: center; align-items: center;"> | 
				
			||||
 | 
					                                    Product Image | 
				
			||||
 | 
					                                </th> | 
				
			||||
 | 
					                                <th style="justify-content: center; align-items: center;"> | 
				
			||||
 | 
					                                    Product | 
				
			||||
 | 
					                                </th> | 
				
			||||
 | 
					                                <th style="justify-content: center; align-items: center;"> | 
				
			||||
 | 
					                                    UoM | 
				
			||||
 | 
					                                </th> | 
				
			||||
 | 
					                                <th style="justify-content: center; align-items: center;"> | 
				
			||||
 | 
					                                    Total Qty | 
				
			||||
 | 
					                                </th> | 
				
			||||
 | 
					                                <th style="justify-content: center; align-items: center;"> | 
				
			||||
 | 
					                                    Action | 
				
			||||
 | 
					                                </th> | 
				
			||||
 | 
					                            </tr> | 
				
			||||
 | 
					                        </thead> | 
				
			||||
 | 
					                        <tbody id="tbody"/> | 
				
			||||
 | 
					                    </table> | 
				
			||||
 | 
					                    <div> | 
				
			||||
 | 
					                        <td> | 
				
			||||
 | 
					                            <div class="" | 
				
			||||
 | 
					                                 style="padding-top:30px;"> | 
				
			||||
 | 
					                                <button type="button" | 
				
			||||
 | 
					                                        id="add_image" | 
				
			||||
 | 
					                                        class="btn btn-primary float-right mb32 " | 
				
			||||
 | 
					                                        style="background-color:#16771C;"> | 
				
			||||
 | 
					                                    <span class="fa fa-plus"/> | 
				
			||||
 | 
					                                    Add Product | 
				
			||||
 | 
					                                </button> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                        </td> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					                <div class="col-sm"> | 
				
			||||
 | 
					                    <textarea id="arett2" type="text" | 
				
			||||
 | 
					                              class="form-control s_website_form_input" | 
				
			||||
 | 
					                              name="description" | 
				
			||||
 | 
					                              placeholder="Description.."/> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					                <div class="clearfix" style="padding-top:20px;"> | 
				
			||||
 | 
					                    <button type="submit" id="send_rfq_request" | 
				
			||||
 | 
					                            class="btn btn-primary float-right mb32 send_rfq_request1" | 
				
			||||
 | 
					                            style="background-color:#6495ED;"> | 
				
			||||
 | 
					                        Send Request | 
				
			||||
 | 
					                    </button> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </form> | 
				
			||||
 | 
					        </t> | 
				
			||||
 | 
					    </template> | 
				
			||||
 | 
					    <!--        Success message template--> | 
				
			||||
 | 
					    <record id="thanks" model="website.page"> | 
				
			||||
 | 
					        <field name="name">Thanks</field> | 
				
			||||
 | 
					        <field name="type">qweb</field> | 
				
			||||
 | 
					        <field name="url">/ticket-thanks</field> | 
				
			||||
 | 
					        <field name="website_published">True</field> | 
				
			||||
 | 
					        <field name="key">quotation.thanks</field> | 
				
			||||
 | 
					        <field name="arch" type="xml"> | 
				
			||||
 | 
					            <t name="Thanks" t-name="helpdesk_ticket.thanks"> | 
				
			||||
 | 
					                <t t-call="website.layout"> | 
				
			||||
 | 
					                    <div id="wrap"> | 
				
			||||
 | 
					                        <div class="container"> | 
				
			||||
 | 
					                            <h1>Thank You</h1> | 
				
			||||
 | 
					                            <div class="row"> | 
				
			||||
 | 
					                                <div class="col-lg-8"> | 
				
			||||
 | 
					                                    <div class="alert alert-success" | 
				
			||||
 | 
					                                         role="status"> | 
				
			||||
 | 
					                                        Sucess! Quotation | 
				
			||||
 | 
					                                        <t t-esc="sale_order"/> | 
				
			||||
 | 
					                                        created successfully. | 
				
			||||
 | 
					                                        <a style="float: right; margin-top: -7px;" | 
				
			||||
 | 
					                                           t-attf-href="/my/quotation_request"> | 
				
			||||
 | 
					                                            <button type="button" | 
				
			||||
 | 
					                                                    name="button_cancel" | 
				
			||||
 | 
					                                                    class="btn btn-primary"> | 
				
			||||
 | 
					                                                Back | 
				
			||||
 | 
					                                            </button> | 
				
			||||
 | 
					                                        </a> | 
				
			||||
 | 
					                                    </div> | 
				
			||||
 | 
					                                </div> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </t> | 
				
			||||
 | 
					            </t> | 
				
			||||
 | 
					        </field> | 
				
			||||
 | 
					    </record> | 
				
			||||
 | 
					</odoo> | 
				
			||||