diff --git a/product_brand_ecommerce/README.rst b/product_brand_ecommerce/README.rst new file mode 100644 index 000000000..d9635a990 --- /dev/null +++ b/product_brand_ecommerce/README.rst @@ -0,0 +1,43 @@ +.. 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 + +Product Brand In Ecommerce +========================== +* This module allows you to manage the Product brands easily. + +License +------- +GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3) +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Afras Habis, + (V15) Midilaj V K, + (V16) Neenu Merlin Jose, + (V17) Akhil Ashok, + (V18) Ammu Raj, Contact : odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@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 + +For support and more information, please visit https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ diff --git a/product_brand_ecommerce/__init__.py b/product_brand_ecommerce/__init__.py new file mode 100644 index 000000000..ccf8bfa40 --- /dev/null +++ b/product_brand_ecommerce/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ammu Raj (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 . +# +############################################################################### +from . import controllers diff --git a/product_brand_ecommerce/__manifest__.py b/product_brand_ecommerce/__manifest__.py new file mode 100644 index 000000000..3acf6556b --- /dev/null +++ b/product_brand_ecommerce/__manifest__.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ammu Raj (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 . +# +############################################################################### +{ + 'name': 'Product Brand In Ecommerce', + 'version': '18.0.1.0.0', + 'category': 'eCommerce', + 'summary': 'Manage Product brand in eCommerce', + 'description': 'This module allows you to manage the Product brands ' + 'easily.', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['product_brand_sale', 'website_sale'], + 'data': [ + 'views/product_brand_templates.xml', + 'views/sale_report_views.xml' + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/product_brand_ecommerce/controllers/__init__.py b/product_brand_ecommerce/controllers/__init__.py new file mode 100644 index 000000000..0156a4fec --- /dev/null +++ b/product_brand_ecommerce/controllers/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ammu Raj (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 . +# +############################################################################### +from . import main diff --git a/product_brand_ecommerce/controllers/main.py b/product_brand_ecommerce/controllers/main.py new file mode 100644 index 000000000..4cd46df4d --- /dev/null +++ b/product_brand_ecommerce/controllers/main.py @@ -0,0 +1,303 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ammu Raj (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 . +# +############################################################################### +import logging +from datetime import datetime +from werkzeug.exceptions import NotFound +from odoo import fields +from odoo.http import request, route +from odoo.osv import expression +from odoo.tools import float_round, groupby, lazy, SQL +from odoo.addons.website_sale.controllers.main import WebsiteSale +from odoo.addons.website.controllers.main import QueryURL +from odoo.addons.website.models.ir_http import sitemap_qs2dom +from odoo.addons.website_sale.controllers.main import TableCompute + +_logger = logging.getLogger(__name__) + + +class WebsiteSales(WebsiteSale): + def sitemap_shop(env, rule, qs): + if not qs or qs.lower() in '/shop': + yield {'loc': '/shop'} + + Category = env['product.public.category'] + dom = sitemap_qs2dom(qs, '/shop/category', Category._rec_name) + dom += env['website'].get_current_website().website_domain() + for cat in Category.search(dom): + loc = '/shop/category/%s' % env['ir.http']._slug(cat) + if not qs or qs.lower() in loc: + yield {'loc': loc} + + @route([ + '/shop', + '/shop/page/', + '/shop/category/', + '/shop/category//page/', + '''/shop/brand/''' + ], type='http', auth="public", website=True, sitemap=sitemap_shop) + def shop(self, page=0, category=None, search='', min_price=0.0, + max_price=0.0, ppg=False, brand=None, **post): + """Overrides the function for adding Brand""" + if not request.website.has_ecommerce_access(): + return request.redirect('/web/login') + try: + min_price = float(min_price) + except ValueError: + min_price = 0 + try: + max_price = float(max_price) + except ValueError: + max_price = 0 + compute_brand = brand + Category = request.env['product.public.category'] + if category: + category = Category.search([('id', '=', int(category))], limit=1) + if not category or not category.can_access_from_current_website(): + raise NotFound() + else: + category = Category + product_brand = request.env['product.brand'] + if not brand: + brand = product_brand + website = request.env['website'].get_current_website() + website_domain = website.website_domain() + if ppg: + try: + ppg = int(ppg) + post['ppg'] = ppg + except ValueError: + ppg = False + if not ppg: + ppg = website.shop_ppg or 20 + ppr = website.shop_ppr or 4 + request_args = request.httprequest.args + attrib_list = request_args.getlist('attribute_value') + attrib_values = [[int(x) for x in v.split("-")] for v in attrib_list if + v] + attributes_ids = {v[0] for v in attrib_values} + attrib_set = {v[1] for v in attrib_values} + + filter_by_tags_enabled = website.is_view_active( + 'website_sale.filter_products_tags') + if filter_by_tags_enabled: + tags = request_args.getlist('tags') + # Allow only numeric tag values to avoid internal error. + if tags and all(tag.isnumeric() for tag in tags): + post['tags'] = tags + tags = {int(tag) for tag in tags} + else: + post['tags'] = None + tags = {} + + keep = QueryURL('/shop', **self._shop_get_query_url_kwargs( + category and int(category), search, min_price, max_price, **post)) + + now = datetime.timestamp(datetime.now()) + pricelist = website.pricelist_id + if 'website_sale_pricelist_time' in request.session: + # Check if we need to refresh the cached pricelist + pricelist_save_time = request.session['website_sale_pricelist_time'] + if pricelist_save_time < now - 60 * 60: + request.session.pop('website_sale_current_pl', None) + website.invalidate_recordset(['pricelist_id']) + pricelist = website.pricelist_id + request.session['website_sale_pricelist_time'] = now + request.session['website_sale_current_pl'] = pricelist.id + else: + request.session['website_sale_pricelist_time'] = now + request.session['website_sale_current_pl'] = pricelist.id + + filter_by_price_enabled = website.is_view_active( + 'website_sale.filter_products_price') + if filter_by_price_enabled: + company_currency = website.company_id.sudo().currency_id + conversion_rate = request.env['res.currency']._get_conversion_rate( + company_currency, website.currency_id, + request.website.company_id, fields.Date.today()) + else: + conversion_rate = 1 + + url = '/shop' + if search: + post['search'] = search + + options = self._get_search_options( + category=category, + attrib_values=attrib_values, + min_price=min_price, + max_price=max_price, + conversion_rate=conversion_rate, + display_currency=website.currency_id, + **post + ) + fuzzy_search_term, product_count, search_product = self._shop_lookup_products( + attrib_set, options, post, search, website) + + filter_by_price_enabled = website.is_view_active( + 'website_sale.filter_products_price') + if filter_by_price_enabled: + # TODO Find an alternative way to obtain the domain through the search metadata. + Product = request.env['product.template'].with_context( + bin_size=True) + domain = self._get_shop_domain(search, category, attrib_values) + + # This is ~4 times more efficient than a search for the cheapest and most expensive products + query = Product._where_calc(domain) + Product._apply_ir_rules(query, 'read') + sql = query.select( + SQL( + "COALESCE(MIN(list_price), 0) * %(conversion_rate)s, COALESCE(MAX(list_price), 0) * %(conversion_rate)s", + conversion_rate=conversion_rate, + ) + ) + available_min_price, available_max_price = \ + request.env.execute_query(sql)[0] + + if min_price or max_price: + # The if/else condition in the min_price / max_price value assignment + # tackles the case where we switch to a list of products with different + # available min / max prices than the ones set in the previous page. + # In order to have logical results and not yield empty product lists, the + # price filter is set to their respective available prices when the specified + # min exceeds the max, and / or the specified max is lower than the available min. + if min_price: + min_price = min_price if min_price <= available_max_price else available_min_price + post['min_price'] = min_price + if max_price: + max_price = max_price if max_price >= available_min_price else available_max_price + post['max_price'] = max_price + + ProductTag = request.env['product.tag'] + if filter_by_tags_enabled and search_product: + all_tags = ProductTag.search( + expression.AND([ + [('product_ids.is_published', '=', True), + ('visible_on_ecommerce', '=', True)], + website_domain + ]) + ) + else: + all_tags = ProductTag + + categs_domain = [('parent_id', '=', False)] + website_domain + if search: + search_categories = Category.search( + [( + 'product_tmpl_ids', 'in', search_product.ids)] + website_domain + ).parents_and_self + categs_domain.append(('id', 'in', search_categories.ids)) + else: + search_categories = Category + categs = lazy(lambda: Category.search(categs_domain)) + + if category: + url = "/shop/category/%s" % request.env['ir.http']._slug(category) + + pager = website.pager(url=url, total=product_count, page=page, step=ppg, + scope=5, url_args=post) + offset = pager['offset'] + products = search_product[offset:offset + ppg] + ProductAttribute = request.env['product.attribute'] + if products: + # get all products without limit + attributes = lazy(lambda: ProductAttribute.search([ + ('product_tmpl_ids', 'in', search_product.ids), + ('visibility', '=', 'visible'), + ])) + else: + attributes = lazy(lambda: ProductAttribute.browse(attributes_ids)) + + layout_mode = request.session.get('website_sale_shop_layout_mode') + if not layout_mode: + if website.viewref('website_sale.products_list_view').active: + layout_mode = 'list' + else: + layout_mode = 'grid' + request.session['website_sale_shop_layout_mode'] = layout_mode + + products_prices = lazy(lambda: products._get_sales_prices(website)) + products_prices_brand = lazy( + lambda: search_product._get_sales_prices(website)) + product_brand = request.env['product.brand'].search([]) + products_brand = request.env['product.template'].search( + ['&', '&', ('brand_id', '=', brand.id), ('sale_ok', '=', True), + ('is_published', '=', True)]) + product_brand_count = len(products_brand) + pager_brand = website.pager(url=url, + total=product_brand_count, + page=page, step=ppg, scope=5, + url_args=post) + + attributes_values = request.env['product.attribute.value'].browse( + attrib_set) + sorted_attributes_values = attributes_values.sorted('sequence') + multi_attributes_values = sorted_attributes_values.filtered( + lambda av: av.display_type == 'multi') + single_attributes_values = sorted_attributes_values - multi_attributes_values + grouped_attributes_values = list( + groupby(single_attributes_values, lambda av: av.attribute_id.id)) + grouped_attributes_values.extend( + [(av.attribute_id.id, [av]) for av in multi_attributes_values]) + + selected_attributes_hash = grouped_attributes_values and "#attribute_values=%s" % ( + ','.join(str(v[0].id) for k, v in grouped_attributes_values) + ) or '' + values = { + 'brand': brand, + 'search': fuzzy_search_term or search, + 'original_search': fuzzy_search_term and search, + 'order': post.get('order', ''), + 'category': category, + 'attrib_values': attrib_values, + 'attrib_set': attrib_set, + 'pager': pager_brand, + 'products': products, + 'search_product': search_product, + 'search_count': product_brand_count, # common for all searchbox + 'bins': lazy( + lambda: TableCompute().process(products_brand, ppg, ppr)), + 'ppg': ppg, + 'ppr': ppr, + 'categories': categs, + 'attributes': attributes, + 'keep': keep, + 'selected_attributes_hash': selected_attributes_hash, + 'search_categories_ids': search_categories.ids, + 'layout_mode': layout_mode, + 'brands': product_brand, + 'products_prices': products_prices, + 'get_product_prices': lambda product: lazy( + lambda: products_prices_brand[product.id]), + 'float_round': float_round, + } + if filter_by_price_enabled: + values['min_price'] = min_price or available_min_price + values['max_price'] = max_price or available_max_price + values['available_min_price'] = float_round(available_min_price, 2) + values['available_max_price'] = float_round(available_max_price, 2) + if filter_by_tags_enabled: + values.update({'all_tags': all_tags, 'tags': tags}) + if category: + values['main_object'] = category + values.update(self._get_additional_extra_shop_values(values, **post)) + return request.render("website_sale.products", values) + diff --git a/product_brand_ecommerce/doc/RELEASE_NOTES.md b/product_brand_ecommerce/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..ceebb339c --- /dev/null +++ b/product_brand_ecommerce/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 09.04.2025 +#### Version 18.0.1.0.0 +#### ADD +- Initial commit for Product Brand In Ecommerce diff --git a/product_brand_ecommerce/static/description/assets/cybro-icon.png b/product_brand_ecommerce/static/description/assets/cybro-icon.png new file mode 100644 index 000000000..06e73e11d Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/cybro-icon.png differ diff --git a/product_brand_ecommerce/static/description/assets/cybro-odoo.png b/product_brand_ecommerce/static/description/assets/cybro-odoo.png new file mode 100644 index 000000000..ed02e07a4 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/cybro-odoo.png differ diff --git a/product_brand_ecommerce/static/description/assets/h2.png b/product_brand_ecommerce/static/description/assets/h2.png new file mode 100644 index 000000000..0bfc4707d Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/h2.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/arrows-repeat.svg b/product_brand_ecommerce/static/description/assets/icons/arrows-repeat.svg new file mode 100644 index 000000000..1d7efabc5 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/arrows-repeat.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/banner-1.png b/product_brand_ecommerce/static/description/assets/icons/banner-1.png new file mode 100644 index 000000000..c180db172 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/banner-1.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/banner-2.svg b/product_brand_ecommerce/static/description/assets/icons/banner-2.svg new file mode 100644 index 000000000..e606d97d9 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/banner-2.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/banner-bg.png b/product_brand_ecommerce/static/description/assets/icons/banner-bg.png new file mode 100644 index 000000000..a8238d3c0 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/banner-bg.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/banner-bg.svg b/product_brand_ecommerce/static/description/assets/icons/banner-bg.svg new file mode 100644 index 000000000..b1378103e --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/banner-bg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/banner-call.svg b/product_brand_ecommerce/static/description/assets/icons/banner-call.svg new file mode 100644 index 000000000..96c687e81 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/banner-call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/banner-mail.svg b/product_brand_ecommerce/static/description/assets/icons/banner-mail.svg new file mode 100644 index 000000000..cbf0d158d --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/banner-mail.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/banner-pattern.svg b/product_brand_ecommerce/static/description/assets/icons/banner-pattern.svg new file mode 100644 index 000000000..9c1c7e101 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/banner-pattern.svg @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/banner-promo.svg b/product_brand_ecommerce/static/description/assets/icons/banner-promo.svg new file mode 100644 index 000000000..d52791b11 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/banner-promo.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/brand-pair.svg b/product_brand_ecommerce/static/description/assets/icons/brand-pair.svg new file mode 100644 index 000000000..d8db7fc1e --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/brand-pair.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/check.png b/product_brand_ecommerce/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/check.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/chevron.png b/product_brand_ecommerce/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/chevron.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/close-icon.svg b/product_brand_ecommerce/static/description/assets/icons/close-icon.svg new file mode 100644 index 000000000..df8cce37a --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/close-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/cogs.png b/product_brand_ecommerce/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/cogs.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/collabarate-icon.svg b/product_brand_ecommerce/static/description/assets/icons/collabarate-icon.svg new file mode 100644 index 000000000..dd4e10518 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/collabarate-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/consultation.png b/product_brand_ecommerce/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/consultation.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/cybro-logo.png b/product_brand_ecommerce/static/description/assets/icons/cybro-logo.png new file mode 100644 index 000000000..ff4b78220 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/cybro-logo.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/down.svg b/product_brand_ecommerce/static/description/assets/icons/down.svg new file mode 100644 index 000000000..f21c36271 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/product_brand_ecommerce/static/description/assets/icons/ecom-black.png b/product_brand_ecommerce/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/ecom-black.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/education-black.png b/product_brand_ecommerce/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/education-black.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/faq.png b/product_brand_ecommerce/static/description/assets/icons/faq.png new file mode 100644 index 000000000..4250b5b81 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/faq.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/feature-icon.svg b/product_brand_ecommerce/static/description/assets/icons/feature-icon.svg new file mode 100644 index 000000000..fa0ea6850 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/feature-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/feature.png b/product_brand_ecommerce/static/description/assets/icons/feature.png new file mode 100644 index 000000000..ac7a785c0 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/feature.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/gear.svg b/product_brand_ecommerce/static/description/assets/icons/gear.svg new file mode 100644 index 000000000..0cc66b6ea --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/gear.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/hero.gif b/product_brand_ecommerce/static/description/assets/icons/hero.gif new file mode 100644 index 000000000..e598e0185 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/hero.gif differ diff --git a/product_brand_ecommerce/static/description/assets/icons/hire-odoo.svg b/product_brand_ecommerce/static/description/assets/icons/hire-odoo.svg new file mode 100644 index 000000000..e1ac089b0 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/hire-odoo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/hotel-black.png b/product_brand_ecommerce/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/hotel-black.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/license.png b/product_brand_ecommerce/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/license.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/life-ring-icon.svg b/product_brand_ecommerce/static/description/assets/icons/life-ring-icon.svg new file mode 100644 index 000000000..3ae6e1d89 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/life-ring-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/lifebuoy.png b/product_brand_ecommerce/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/lifebuoy.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/mail.svg b/product_brand_ecommerce/static/description/assets/icons/mail.svg new file mode 100644 index 000000000..1eedde695 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/mail.svg @@ -0,0 +1,3 @@ + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/manufacturing-black.png b/product_brand_ecommerce/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/manufacturing-black.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/notes.png b/product_brand_ecommerce/static/description/assets/icons/notes.png new file mode 100644 index 000000000..ee5e95404 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/notes.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/notification icon.svg b/product_brand_ecommerce/static/description/assets/icons/notification icon.svg new file mode 100644 index 000000000..053189973 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/notification icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/odoo-consultancy.svg b/product_brand_ecommerce/static/description/assets/icons/odoo-consultancy.svg new file mode 100644 index 000000000..e05f65bde --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/odoo-consultancy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/odoo-licencing.svg b/product_brand_ecommerce/static/description/assets/icons/odoo-licencing.svg new file mode 100644 index 000000000..2606c88b0 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/odoo-licencing.svg @@ -0,0 +1,3 @@ + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/odoo-logo.png b/product_brand_ecommerce/static/description/assets/icons/odoo-logo.png new file mode 100644 index 000000000..0e4d0eb5a Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/odoo-logo.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/patter.svg b/product_brand_ecommerce/static/description/assets/icons/patter.svg new file mode 100644 index 000000000..25c9c0a8f --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/patter.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/pattern1.png b/product_brand_ecommerce/static/description/assets/icons/pattern1.png new file mode 100644 index 000000000..09ab0fb2d Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/pattern1.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/pos-black.png b/product_brand_ecommerce/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/pos-black.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/puzzle-piece-icon.svg b/product_brand_ecommerce/static/description/assets/icons/puzzle-piece-icon.svg new file mode 100644 index 000000000..3e9ad9373 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/puzzle-piece-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/puzzle.png b/product_brand_ecommerce/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/puzzle.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/replace-icon.svg b/product_brand_ecommerce/static/description/assets/icons/replace-icon.svg new file mode 100644 index 000000000..d0e3a7af1 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/replace-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/restaurant-black.png b/product_brand_ecommerce/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/restaurant-black.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/screenshot-main.png b/product_brand_ecommerce/static/description/assets/icons/screenshot-main.png new file mode 100644 index 000000000..575f8e676 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/screenshot-main.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/screenshot.png b/product_brand_ecommerce/static/description/assets/icons/screenshot.png new file mode 100644 index 000000000..cef272529 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/screenshot.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/service-black.png b/product_brand_ecommerce/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/service-black.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/skype-fill.svg b/product_brand_ecommerce/static/description/assets/icons/skype-fill.svg new file mode 100644 index 000000000..c17423639 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/skype-fill.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/skype.png b/product_brand_ecommerce/static/description/assets/icons/skype.png new file mode 100644 index 000000000..51b409fb3 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/skype.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/skype.svg b/product_brand_ecommerce/static/description/assets/icons/skype.svg new file mode 100644 index 000000000..df3dad39b --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/skype.svg @@ -0,0 +1,3 @@ + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/star-1.svg b/product_brand_ecommerce/static/description/assets/icons/star-1.svg new file mode 100644 index 000000000..7e55ab162 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/star-1.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/star-2.svg b/product_brand_ecommerce/static/description/assets/icons/star-2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/star-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/support.png b/product_brand_ecommerce/static/description/assets/icons/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/support.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/test-1 - Copy.png b/product_brand_ecommerce/static/description/assets/icons/test-1 - Copy.png new file mode 100644 index 000000000..f6a902663 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/test-1 - Copy.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/test-1.png b/product_brand_ecommerce/static/description/assets/icons/test-1.png new file mode 100644 index 000000000..0908add2b Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/test-1.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/test-2.png b/product_brand_ecommerce/static/description/assets/icons/test-2.png new file mode 100644 index 000000000..4671fe91e Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/test-2.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/trading-black.png b/product_brand_ecommerce/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/trading-black.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/training.png b/product_brand_ecommerce/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/training.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/translate.svg b/product_brand_ecommerce/static/description/assets/icons/translate.svg new file mode 100644 index 000000000..af9c8a1aa --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/translate.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/update.png b/product_brand_ecommerce/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/update.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/user.png b/product_brand_ecommerce/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/user.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/video.png b/product_brand_ecommerce/static/description/assets/icons/video.png new file mode 100644 index 000000000..576705b17 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/video.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/whatsapp.png b/product_brand_ecommerce/static/description/assets/icons/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/whatsapp.png differ diff --git a/product_brand_ecommerce/static/description/assets/icons/wrench-icon.svg b/product_brand_ecommerce/static/description/assets/icons/wrench-icon.svg new file mode 100644 index 000000000..174b5a465 --- /dev/null +++ b/product_brand_ecommerce/static/description/assets/icons/wrench-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/product_brand_ecommerce/static/description/assets/icons/wrench.png b/product_brand_ecommerce/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/icons/wrench.png differ diff --git a/product_brand_ecommerce/static/description/assets/modules/1.jpg b/product_brand_ecommerce/static/description/assets/modules/1.jpg new file mode 100644 index 000000000..3cb15fe01 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/modules/1.jpg differ diff --git a/product_brand_ecommerce/static/description/assets/modules/2.jpg b/product_brand_ecommerce/static/description/assets/modules/2.jpg new file mode 100644 index 000000000..662cadcc3 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/modules/2.jpg differ diff --git a/product_brand_ecommerce/static/description/assets/modules/3.jpg b/product_brand_ecommerce/static/description/assets/modules/3.jpg new file mode 100644 index 000000000..717a00443 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/modules/3.jpg differ diff --git a/product_brand_ecommerce/static/description/assets/modules/4.png b/product_brand_ecommerce/static/description/assets/modules/4.png new file mode 100644 index 000000000..00ebf54ad Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/modules/4.png differ diff --git a/product_brand_ecommerce/static/description/assets/modules/5.jpg b/product_brand_ecommerce/static/description/assets/modules/5.jpg new file mode 100644 index 000000000..7c67e2eec Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/modules/5.jpg differ diff --git a/product_brand_ecommerce/static/description/assets/modules/6.gif b/product_brand_ecommerce/static/description/assets/modules/6.gif new file mode 100644 index 000000000..a35ece8df Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/modules/6.gif differ diff --git a/product_brand_ecommerce/static/description/assets/screenshots/ss1.png b/product_brand_ecommerce/static/description/assets/screenshots/ss1.png new file mode 100644 index 000000000..472cf2c85 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/screenshots/ss1.png differ diff --git a/product_brand_ecommerce/static/description/assets/screenshots/ss2.png b/product_brand_ecommerce/static/description/assets/screenshots/ss2.png new file mode 100644 index 000000000..c096c6d06 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/screenshots/ss2.png differ diff --git a/product_brand_ecommerce/static/description/assets/screenshots/ss3.png b/product_brand_ecommerce/static/description/assets/screenshots/ss3.png new file mode 100644 index 000000000..cf28fb4a8 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/screenshots/ss3.png differ diff --git a/product_brand_ecommerce/static/description/assets/screenshots/ss4.png b/product_brand_ecommerce/static/description/assets/screenshots/ss4.png new file mode 100644 index 000000000..91a608ae6 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/screenshots/ss4.png differ diff --git a/product_brand_ecommerce/static/description/assets/y18.jpg b/product_brand_ecommerce/static/description/assets/y18.jpg new file mode 100644 index 000000000..eea1714f2 Binary files /dev/null and b/product_brand_ecommerce/static/description/assets/y18.jpg differ diff --git a/product_brand_ecommerce/static/description/banner.png b/product_brand_ecommerce/static/description/banner.png new file mode 100644 index 000000000..0acf8802e Binary files /dev/null and b/product_brand_ecommerce/static/description/banner.png differ diff --git a/product_brand_ecommerce/static/description/icon.png b/product_brand_ecommerce/static/description/icon.png new file mode 100644 index 000000000..bf25351d9 Binary files /dev/null and b/product_brand_ecommerce/static/description/icon.png differ diff --git a/product_brand_ecommerce/static/description/index.html b/product_brand_ecommerce/static/description/index.html new file mode 100644 index 000000000..41de64233 --- /dev/null +++ b/product_brand_ecommerce/static/description/index.html @@ -0,0 +1,904 @@ + + + + + + Product Brand In Ecommerce + + + + + + + + + + +
+
+ + + +
+
+ Community +
+
+ Enterprise +
+ + + + +
+
+ +
+
+
+
+

+ Easily Manage Product Brands. +

+

Product Brand In Ecommerce +

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

Key + Highlights

+
+
+
+
+ +
+
+ Activate Product Brand Filter +
+

+ The product brand filter will be displayed on the e-commerce website.

+
+
+
+
+
+ +
+
+ Product Brand in Pivot View +
+

+ User can Filter by product brand in pivot view.

+
+
+
+
+
+ +
+
+ Community & Enterprise Support +
+

+ Support in Enterprise and Community versions.

+
+
+
+
+ +
+
+
+ Product Brand In Ecommerce +

+ Are you ready to make your business more + organized? +
Improve now! +

+ +
+
+ +
+
+
+ + + + +
+
+ +
+
+
+
+ acc_bg +
+ +
+
+
+
+

+ Product Brand Filter +

+
+
+

+ The product brand filter will be displayed on the e-commerce website. +

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

+ Products in the selected brand will be displayed. +

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

+ Pivot View +

+
+
+

+ Brand filter available in pivot view. +

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

+ User can filter by product brand in pivot view. +

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

+ Product Brand Filter in eCommerce website

+
+
+
+
+
+
+
+ +
+

+ Brand filter available in pivot view +

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

+ After creating a product brand, you can assign products to + it by selecting the brand.Or while creating or editing a + product, you can select or add a brand directly from the + Product Brand field within the form. +

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

+ Latest Release 18.0.1.0.0 +

+ + 23rd January, 2025 + +
+
+
+
+
+ Add +
+
+
+
    +
  • + Initial Commit +
  • + +
+
+
+
+
+
+
+
+
+
+ + +
+

+ Related Products +

+ +
+ + + +
+

+ Our Services

+ +
+ +
+
+ .... +
+
+ +
+ + +
+
+ + + + + + diff --git a/product_brand_ecommerce/views/product_brand_templates.xml b/product_brand_ecommerce/views/product_brand_templates.xml new file mode 100644 index 000000000..0e63c504c --- /dev/null +++ b/product_brand_ecommerce/views/product_brand_templates.xml @@ -0,0 +1,38 @@ + + + + + + + diff --git a/product_brand_ecommerce/views/sale_report_views.xml b/product_brand_ecommerce/views/sale_report_views.xml new file mode 100644 index 000000000..7c72b7070 --- /dev/null +++ b/product_brand_ecommerce/views/sale_report_views.xml @@ -0,0 +1,14 @@ + + + + + sale.report.view.search.inherit.product.brand.ecommerce + sale.report + + + + + + + +