diff --git a/website_in_store_pickup/README.rst b/website_in_store_pickup/README.rst new file mode 100644 index 000000000..74f32e43b --- /dev/null +++ b/website_in_store_pickup/README.rst @@ -0,0 +1,49 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Website In-Store Pickup +======================= +Manage the website in-store pickup easily with this module. + +Configuration +------------- +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +Affero General Public License v3.0 (AGPL v3) +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +------- +Developer : (V16) Shafna K, + (V15) Ranjith R, +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 `__ + +Further information +------------------- +HTML Description: ``__ diff --git a/website_in_store_pickup/__init__.py b/website_in_store_pickup/__init__.py new file mode 100644 index 000000000..90297a3a0 --- /dev/null +++ b/website_in_store_pickup/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ranjith R(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. + +############################################################################### +from . import controllers +from . import models diff --git a/website_in_store_pickup/__manifest__.py b/website_in_store_pickup/__manifest__.py new file mode 100644 index 000000000..04c8e8b39 --- /dev/null +++ b/website_in_store_pickup/__manifest__.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ranjith R(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. + +############################################################################### +{ + 'name': "Website In-Store Pickup", + 'version': '15.0.1.0.0', + 'category': 'eCommerce', + 'summary': 'To manage the in-store pickups of orders ', + 'description': "To facilitate the management of in-store pickups, we have" + "implemented a system to handle customer orders that can " + "be picked up at the physical store location. This system " + "allows customers to place orders online and then select " + "the option to pick up their purchases at the store.", + 'author': " Cybrosys Techno Solutions", + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'delivery', 'stock', 'website_sale_delivery'], + 'data': [ + 'views/stock_warehouse_views.xml', + 'views/delivery_carrier_views.xml', + ], + 'assets': { + 'web.assets_frontend': [ + 'website_in_store_pickup/static/src/js/website_in_store_pickup.js', + ], + }, + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False +} diff --git a/website_in_store_pickup/controllers/__init__.py b/website_in_store_pickup/controllers/__init__.py new file mode 100644 index 000000000..f3a77598c --- /dev/null +++ b/website_in_store_pickup/controllers/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ranjith R(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. + +############################################################################### +from . import website_in_store_pickup diff --git a/website_in_store_pickup/controllers/website_in_store_pickup.py b/website_in_store_pickup/controllers/website_in_store_pickup.py new file mode 100644 index 000000000..f635debd8 --- /dev/null +++ b/website_in_store_pickup/controllers/website_in_store_pickup.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ranjith R(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. + +############################################################################### +from odoo import http +from odoo.http import request +from odoo.addons.website_sale_delivery.controllers.main import ( + WebsiteSaleDelivery) +from odoo.addons.website_sale.controllers.main import WebsiteSale + + +class WebsiteInStorePickup(WebsiteSaleDelivery): + """ Inherited Controller to check the carrier and update in corresponding + sale order""" + + @http.route(['/shop/check_carrier'], type='json', auth='public', + methods=['POST'], website=True, csrf=False) + def check_carrier(self, **post): + """To check the carrier details and returns the relevant details + whether the delivery method is store pick or not and returns the + available stores""" + carrier_id = int(post.get('carrier_id')) + carrier = request.env['delivery.carrier'].browse(carrier_id) + store = carrier.store_ids + sale_order_id = http.request.session.get('sale_order_id') + if sale_order_id: + sale_order = http.request.env['sale.order'].sudo().browse( + sale_order_id) + if not carrier.is_store_pick: + sale_order.write({ + 'partner_invoice_id': sale_order.partner_id.id, + 'partner_shipping_id': sale_order.partner_id.id, + }) + return { + 'is_store_pick': carrier.is_store_pick, + 'store_ids': carrier.store_ids.read(), + 'store_id': store.read(), + } + + @http.route(['/shop/update_address'], type='json', auth='public', + methods=['POST'], website=True, csrf=False) + def update_address(self, **post): + """To update the address of store address to sale order on choosing + the store for pickup""" + if post.get('store_id'): + store_address = request.env['stock.warehouse'].browse( + int(post['store_id'])) + if post['store_id']: + sale_order_id = http.request.session.get('sale_order_id') + if sale_order_id: + sale_order = http.request.env['sale.order'].sudo().browse( + sale_order_id) + sale_order.write({ + 'partner_invoice_id': store_address.partner_id.id, + 'partner_shipping_id': store_address.partner_id.id + }) + return { + 'store_id': store_address.partner_id.read() + } + return { + 'store_id': store_address.partner_id.read() + } + + +class WebsiteSaleInStorePickup(WebsiteSale): + @http.route('/shop/payment', type='http', auth='public', website=True, + sitemap=False) + def shop_payment(self, **post): + """ Payment step. This page proposes several payment means based on + available payment.acquirer. State at this point : + + - a draft sales order with lines; otherwise, clean context / session + and back to the shop + - no transaction in context / session, or only a draft one, if the + customer did go to a payment.acquirer website but closed the tab + without paying / canceling + """ + order = request.website.sale_get_order() + redirection = self.checkout_redirection( + order) or self.checkout_check_address(order) + if redirection: + return redirection + render_values = self._get_shop_payment_values(order, **post) + render_values['only_services'] = order and order.only_services or False + if render_values['errors']: + render_values.pop('acquirers', '') + render_values.pop('tokens', '') + return request.render("website_sale.payment", render_values) diff --git a/website_in_store_pickup/doc/RELEASE_NOTES.md b/website_in_store_pickup/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..54e32eaaa --- /dev/null +++ b/website_in_store_pickup/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 20.07.2024 +#### Version 15.0.1.0.0 +#### ADD + + - Initial Commit for Website In-Store Pickup diff --git a/website_in_store_pickup/models/__init__.py b/website_in_store_pickup/models/__init__.py new file mode 100644 index 000000000..77754eaba --- /dev/null +++ b/website_in_store_pickup/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ranjith R(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. + +############################################################################### +from . import deliver_carrier +from . import stock_warehouse diff --git a/website_in_store_pickup/models/deliver_carrier.py b/website_in_store_pickup/models/deliver_carrier.py new file mode 100644 index 000000000..609963412 --- /dev/null +++ b/website_in_store_pickup/models/deliver_carrier.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ranjith R(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. + +############################################################################### +from odoo import fields, models + + +class DeliveryCarrier(models.Model): + """Class to add the fields to identify a method as a store picking + delivery method and choose the stores to be available for that particular + delivery method""" + _inherit = 'delivery.carrier' + + is_store_pick = fields.Boolean(string='In-Store Pickup', + help="Enable this to identify this as an " + "In-store PickUp delivery method") + store_ids = fields.Many2many('stock.warehouse', + string="Available Stores", + domain="[('is_store', '=', True)]", + help="Choose the stores available for " + "in-store picking and if no stores " + "implies all stores are available") diff --git a/website_in_store_pickup/models/stock_warehouse.py b/website_in_store_pickup/models/stock_warehouse.py new file mode 100644 index 000000000..75b93ea44 --- /dev/null +++ b/website_in_store_pickup/models/stock_warehouse.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ranjith R(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. + +############################################################################### +from odoo import fields, models + + +class StockWarehouse(models.Model): + """Class to add a field to identify a warehouse as a store""" + _inherit = 'stock.warehouse' + + is_store = fields.Boolean(string='Store', + help="Enable this to identify this Warehouse " + "as a store") diff --git a/website_in_store_pickup/static/description/assets/icons/check.png b/website_in_store_pickup/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/check.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/chevron.png b/website_in_store_pickup/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/chevron.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/cogs.png b/website_in_store_pickup/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/cogs.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/consultation.png b/website_in_store_pickup/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/consultation.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/ecom-black.png b/website_in_store_pickup/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/ecom-black.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/education-black.png b/website_in_store_pickup/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/education-black.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/hotel-black.png b/website_in_store_pickup/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/hotel-black.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/license.png b/website_in_store_pickup/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/license.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/lifebuoy.png b/website_in_store_pickup/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/lifebuoy.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/manufacturing-black.png b/website_in_store_pickup/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/manufacturing-black.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/pos-black.png b/website_in_store_pickup/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/pos-black.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/puzzle.png b/website_in_store_pickup/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/puzzle.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/restaurant-black.png b/website_in_store_pickup/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/restaurant-black.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/service-black.png b/website_in_store_pickup/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/service-black.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/trading-black.png b/website_in_store_pickup/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/trading-black.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/training.png b/website_in_store_pickup/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/training.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/update.png b/website_in_store_pickup/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/update.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/user.png b/website_in_store_pickup/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/user.png differ diff --git a/website_in_store_pickup/static/description/assets/icons/wrench.png b/website_in_store_pickup/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/website_in_store_pickup/static/description/assets/icons/wrench.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/categories.png b/website_in_store_pickup/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/categories.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/check-box.png b/website_in_store_pickup/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/check-box.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/compass.png b/website_in_store_pickup/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/compass.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/corporate.png b/website_in_store_pickup/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/corporate.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/customer-support.png b/website_in_store_pickup/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/customer-support.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/cybrosys-logo.png b/website_in_store_pickup/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/cybrosys-logo.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/features.png b/website_in_store_pickup/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/features.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/logo.png b/website_in_store_pickup/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/logo.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/pictures.png b/website_in_store_pickup/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/pictures.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/pie-chart.png b/website_in_store_pickup/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/pie-chart.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/right-arrow.png b/website_in_store_pickup/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/right-arrow.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/star.png b/website_in_store_pickup/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/star.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/support.png b/website_in_store_pickup/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/support.png differ diff --git a/website_in_store_pickup/static/description/assets/misc/whatsapp.png b/website_in_store_pickup/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/misc/whatsapp.png differ diff --git a/website_in_store_pickup/static/description/assets/modules/1.png b/website_in_store_pickup/static/description/assets/modules/1.png new file mode 100644 index 000000000..2ce254cea Binary files /dev/null and b/website_in_store_pickup/static/description/assets/modules/1.png differ diff --git a/website_in_store_pickup/static/description/assets/modules/2.png b/website_in_store_pickup/static/description/assets/modules/2.png new file mode 100644 index 000000000..97af8a2d1 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/modules/2.png differ diff --git a/website_in_store_pickup/static/description/assets/modules/3.png b/website_in_store_pickup/static/description/assets/modules/3.png new file mode 100644 index 000000000..6183c3cfa Binary files /dev/null and b/website_in_store_pickup/static/description/assets/modules/3.png differ diff --git a/website_in_store_pickup/static/description/assets/modules/4.png b/website_in_store_pickup/static/description/assets/modules/4.png new file mode 100644 index 000000000..7801761af Binary files /dev/null and b/website_in_store_pickup/static/description/assets/modules/4.png differ diff --git a/website_in_store_pickup/static/description/assets/modules/5.gif b/website_in_store_pickup/static/description/assets/modules/5.gif new file mode 100755 index 000000000..2a5f8e659 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/modules/5.gif differ diff --git a/website_in_store_pickup/static/description/assets/modules/6.png b/website_in_store_pickup/static/description/assets/modules/6.png new file mode 100755 index 000000000..7f2815273 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/modules/6.png differ diff --git a/website_in_store_pickup/static/description/assets/screenshots/hero.gif b/website_in_store_pickup/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..737c5b0e3 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/screenshots/hero.gif differ diff --git a/website_in_store_pickup/static/description/assets/screenshots/store-01.png b/website_in_store_pickup/static/description/assets/screenshots/store-01.png new file mode 100644 index 000000000..ff3b88de6 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/screenshots/store-01.png differ diff --git a/website_in_store_pickup/static/description/assets/screenshots/store-02.png b/website_in_store_pickup/static/description/assets/screenshots/store-02.png new file mode 100644 index 000000000..0d76a7f72 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/screenshots/store-02.png differ diff --git a/website_in_store_pickup/static/description/assets/screenshots/store-03.png b/website_in_store_pickup/static/description/assets/screenshots/store-03.png new file mode 100644 index 000000000..5b89e89c8 Binary files /dev/null and b/website_in_store_pickup/static/description/assets/screenshots/store-03.png differ diff --git a/website_in_store_pickup/static/description/assets/screenshots/store-04.png b/website_in_store_pickup/static/description/assets/screenshots/store-04.png new file mode 100644 index 000000000..141cdbd3b Binary files /dev/null and b/website_in_store_pickup/static/description/assets/screenshots/store-04.png differ diff --git a/website_in_store_pickup/static/description/banner.jpg b/website_in_store_pickup/static/description/banner.jpg new file mode 100644 index 000000000..f4d8e9e12 Binary files /dev/null and b/website_in_store_pickup/static/description/banner.jpg differ diff --git a/website_in_store_pickup/static/description/icon.png b/website_in_store_pickup/static/description/icon.png new file mode 100644 index 000000000..ac94c4a64 Binary files /dev/null and b/website_in_store_pickup/static/description/icon.png differ diff --git a/website_in_store_pickup/static/description/index.html b/website_in_store_pickup/static/description/index.html new file mode 100644 index 000000000..654317425 --- /dev/null +++ b/website_in_store_pickup/static/description/index.html @@ -0,0 +1,582 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+ +

+ Website In-Store Pickup +

+

+ This module is designed to enhance the customer experience by offering an alternative delivery method that allows customers to pick up their purchased items from a physical store location. +

+ + +
+
+
+
+ +
+
+ +
+

+ Explore This Module

+
+ + + +
+
+ +
+

+ Overview +

+
+
+
+ This module is designed to enhance the Customer experience by offering + an alternative Delivery Method that allows Customers to Pick up their + Purchased items from a Physical Store Location. +
+
+ + +
+
+ +
+

+ Features +

+
+
+
+
+ + Provide a new Shipping option during the Checkout + process that allows Customers to choose In-Store Pickup + Delivery Method. +
+
+ + Easier Workflow with Simplified Process. +
+
+
+ +
+ + Customers might be able to select their preferred + Physical Store Location from which they'll pick up their Order + from the available ones. +
+ +
+
+ + +
+
+ +
+

+ Screenshots +

+
+
+
+
+

+ Set up Inventory Warehouse as Store. +

+

+ Choose the Warehouse in Inventory as Store by enabling the + In-Store option. +

+ +
+
+

+ Create an In-Store Pickup Delivery Method. +

+

+ Create and Publish the Delivery Method for In-Store Pickup by + enabling the + Store Pickup option.In the Available Stores field, leave + empty to display all Stores in the Website Sale and choose the + desired Stores to restrict other Stores from display in Website. +

+ +
+
+

+ Select In-Store Pickup Delivery Method. +

+

+ Choose the In-Store Delivery Method and select the Store for + Pickup.The corresponding Store Address will be updated in the + Shipping + Address section. +

+ +
+
+

+ Update Delivery Address in Website Orders. +

+

+ The Store Address will be updated to the Delivery Address and + Invoice Address in the Corresponding Website Order in the + backend. +

+ +
+
+
+ + +
+
+

Suggested Products

+
+ + +
+
+ + +
+
+ +
+

+ Our Services

+
+
+
+
+
+ +
+
+ Odoo Customization
+
+
+
+ +
+
+ Odoo Implementation
+
+
+
+ +
+
+ Odoo Support
+
+
+
+ +
+
+ Hire Odoo Developer
+
+
+
+ +
+
+ Odoo Integration
+
+
+
+ +
+
+ Odoo Migration
+
+
+
+ +
+
+ Odoo Consultancy
+
+
+
+ +
+
+ Odoo Implementation
+
+
+
+ +
+
+ Odoo Licensing Consultancy
+
+
+
+ + +
+
+ +
+

+ Our Industries +

+
+
+
+
+
+ +
+ Trading
+

+ Easily procure and sell your products

+
+
+
+
+ +
+ POS
+

+ Easy configuration and convivial experience

+
+
+
+
+ +
+ Education
+

+ A platform for educational management

+
+
+
+
+ +
+ Manufacturing
+

+ Plan, track and schedule your operations

+
+
+
+
+ +
+ E-commerce & Website
+

+ Mobile friendly, awe-inspiring product pages

+
+
+
+
+ +
+ Service Management
+

+ Keep track of services and invoice

+
+
+
+
+ +
+ Restaurant
+

+ Run your bar or restaurant methodically

+
+
+
+
+ +
+ Hotel Management
+

+ An all-inclusive hotel management application

+
+
+
+
+ + +
+
+ +
+

+ Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? + Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+ +91 86068 27707

+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/website_in_store_pickup/static/src/js/website_in_store_pickup.js b/website_in_store_pickup/static/src/js/website_in_store_pickup.js new file mode 100644 index 000000000..b85ec45cd --- /dev/null +++ b/website_in_store_pickup/static/src/js/website_in_store_pickup.js @@ -0,0 +1,95 @@ +/* @odoo-module */ +import core from "web.core"; +import publicWidget from 'web.public.widget'; +import 'website_sale_delivery.checkout'; +var QWeb = core.qweb; +var store={} +/** + * Extends the websiteSaleDelivery widget to handle store pickup functionality. + */ +publicWidget.registry.websiteSaleDelivery.include({ + /** + * Handles the click event on the store pickup dropdown. + * + * Updates the address display based on the selected store and toggles the + * visibility of UI elements. + * + * @param {Event} ev - The click event. + */ + _onClickDropDown: async function(ev){ + var addressTemplate = {}; + const selectedStoreId = parseInt(ev.target.value) + var self = this; + const address = await this._rpc({ + route: '/shop/update_address', + params: { + store_id: selectedStoreId + }, + }).then(result => { + this.$el.find('#store_address_section').remove() + if (result) { + addressTemplate.address = result.store_id[0].contact_address + } + }) + }, + /** + * Handles the click event on a carrier option. + * + * Performs actions such as checking carrier options, updating UI elements, + * and dynamically rendering store pickup dropdown. + * + * @param {Event} ev - The click event. + */ + _onCarrierClick: function(ev){ + var radio = $(ev.currentTarget).find('input[type="radio"]'); + const status = this._rpc({ + route: '/shop/check_carrier', + params: { + carrier_id: radio.val(), + }, + }).then(async data => { + store=data + this.$el.find('#shipping_and_billing').show() + this.$el.find('#store_address_section').remove() + if (this.$el.find('#shipping_and_billing')){ + var storeDropdown = this.$el.find('.store-pickup-dropdown'); + if (! data.is_store_pick ){ + storeDropdown[0].classList.add('d-none') + } + if (data['is_store_pick']){ + var templateData = {}; + if (data['store_ids'].length === 0) { + templateData.store_all = data['store_id']; + } + else { + templateData.stores = data['store_ids']; + } + var self = this; + if ( storeDropdown.length === 0 ) { + this.el.querySelector('.store-pickup-dropdown').addEventListener('click',this._onClickDropDown.bind(this) ) + storeDropdown.on('click', this._onClickDropDown.bind(this)) + var stores = data['store_ids']; + var options = ""; + + stores.forEach(function(store) { + options += ""; + }); + storeDropdown[0].innerHTML = options; + } + else { + var stores = data['store_ids']; + var options = ""; + + stores.forEach(function(store) { + options += ""; + }); + storeDropdown[0].innerHTML = options; + storeDropdown.on('change', this._onClickDropDown.bind(this)) + storeDropdown[0].classList.remove('d-none') + } + } + } + }); + this._super(...arguments) + } +}) diff --git a/website_in_store_pickup/views/delivery_carrier_views.xml b/website_in_store_pickup/views/delivery_carrier_views.xml new file mode 100644 index 000000000..fb1ccc4da --- /dev/null +++ b/website_in_store_pickup/views/delivery_carrier_views.xml @@ -0,0 +1,22 @@ + + + + + + delivery.carrier.view.form.inherit.website.in.store.pickup + + delivery.carrier + + + + + + + + + + + diff --git a/website_in_store_pickup/views/stock_warehouse_views.xml b/website_in_store_pickup/views/stock_warehouse_views.xml new file mode 100644 index 000000000..4e9c04826 --- /dev/null +++ b/website_in_store_pickup/views/stock_warehouse_views.xml @@ -0,0 +1,25 @@ + + + + + + stock.warehouse.view.form.inherit.website.in.store.pickup + + stock.warehouse + + + + + + + + +