Browse Source

Oct 13 : [UPDT] Bug Fixed 'product_visibility_website'

pull/295/head
AjmalCybro 2 years ago
parent
commit
ec710f18ba
  1. 5
      product_visibility_website/__manifest__.py
  2. 86
      product_visibility_website/controllers/main.py
  3. 5
      product_visibility_website/doc/RELEASE_NOTES.md
  4. 1
      product_visibility_website/models/__init__.py
  5. 155
      product_visibility_website/models/res_config_settings.py
  6. 76
      product_visibility_website/models/website_product_visibility.py
  7. BIN
      product_visibility_website/static/description/assets/screenshots/10.png
  8. BIN
      product_visibility_website/static/description/assets/screenshots/11.png
  9. BIN
      product_visibility_website/static/description/assets/screenshots/12.png
  10. BIN
      product_visibility_website/static/description/assets/screenshots/13.png
  11. BIN
      product_visibility_website/static/description/assets/screenshots/14.png
  12. BIN
      product_visibility_website/static/description/assets/screenshots/15.png
  13. BIN
      product_visibility_website/static/description/assets/screenshots/6.png
  14. BIN
      product_visibility_website/static/description/assets/screenshots/7.png
  15. BIN
      product_visibility_website/static/description/assets/screenshots/8.png
  16. BIN
      product_visibility_website/static/description/assets/screenshots/9.png
  17. 368
      product_visibility_website/static/description/index.html
  18. 90
      product_visibility_website/views/res_config_settings_views.xml
  19. 58
      product_visibility_website/views/website_product_visibility.xml

5
product_visibility_website/__manifest__.py

@ -22,7 +22,7 @@
################################################################################ ################################################################################
{ {
'name': 'Website Product Visibility', 'name': 'Website Product Visibility',
'version': '16.0.1.1.0', 'version': '16.0.1.1.1',
'category': 'Website', 'category': 'Website',
'summary': 'Website Product visibility for Users', 'summary': 'Website Product visibility for Users',
'description': """Website Product visibility for Users""", 'description': """Website Product visibility for Users""",
@ -33,8 +33,9 @@
'depends': ['contacts', 'website_sale','website'], 'depends': ['contacts', 'website_sale','website'],
'data': [ 'data': [
'views/website_product_visibility.xml', 'views/website_product_visibility.xml',
'views/res_config_settings_views.xml'
], ],
'images': ['static/description/banner.png'], 'images': ['static/description/1.png'],
'license': 'AGPL-3', 'license': 'AGPL-3',
'installable': True, 'installable': True,
'auto_install': False, 'auto_install': False,

86
product_visibility_website/controllers/main.py

@ -75,12 +75,7 @@ class ProductVisibilityCon(WebsiteSale):
domains.append([('public_categ_ids', 'child_of', categories.ids)]) domains.append([('public_categ_ids', 'child_of', categories.ids)])
return expression.AND(domains) return expression.AND(domains)
@http.route([ @http.route(type='http', auth="public", website=True)
'/shop',
'/shop/page/<int:page>',
'/shop/category/<model("product.public.category"):category>',
'/shop/category/<model("product.public.category"):category>/page/<int:page>',
], type='http', auth="public", website=True, sitemap=sitemap_shop)
def shop(self, page=0, category=None, search='', min_price=0.0, def shop(self, page=0, category=None, search='', min_price=0.0,
max_price=0.0, ppg=False, **post): max_price=0.0, ppg=False, **post):
available_categ = available_products = '' available_categ = available_products = ''
@ -91,14 +86,15 @@ class ProductVisibilityCon(WebsiteSale):
'filter_mode') 'filter_mode')
products = literal_eval( products = literal_eval(
request.env['ir.config_parameter'].sudo().get_param( request.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_product_ids', 'website_product_visibility.'
'False')) 'available_products_for_guest_ids', 'False'))
if mode == 'product_only': if mode == 'product_only':
available_products = request.env['product.template'].search( available_products = request.env['product.template'].search(
[('id', 'in', products)]) [('id', 'in', products)])
cat = literal_eval( cat = literal_eval(
request.env['ir.config_parameter'].sudo().get_param( request.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_cat_ids', 'False')) 'website_product_visibility.available_cat_for_guest_ids',
'False'))
available_categ = request.env['product.public.category'].search( available_categ = request.env['product.public.category'].search(
[('id', 'in', cat)]) [('id', 'in', cat)])
else: else:
@ -119,7 +115,28 @@ class ProductVisibilityCon(WebsiteSale):
categ = Category.search([('parent_id', '=', False), ( categ = Category.search([('parent_id', '=', False), (
'product_tmpl_ids', 'in', available_products.ids)]) 'product_tmpl_ids', 'in', available_products.ids)])
# supering shop*** # supering shop***
if not available_categ and not available_products: if not available_categ and not available_products and \
request.env.user.has_group(
'base.group_portal'):
mode = request.env['ir.config_parameter'].sudo().get_param(
'filter_mode_portal')
products = literal_eval(
request.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.'
'available_products_for_portal_ids', 'False'))
if mode == 'product_only':
available_products = request.env['product.template'].search(
[('id', 'in', products)])
cat = literal_eval(
request.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_cat_for_portal_ids',
'False'))
available_categ = request.env['product.public.category'].search(
[('id', 'in', cat)])
if not available_categ and not available_products and \
not request.env.user.has_group(
'base.group_user'):
return super(ProductVisibilityCon, self).shop(page, category, return super(ProductVisibilityCon, self).shop(page, category,
search, ppg, **post) search, ppg, **post)
add_qty = int(post.get('add_qty', 1)) add_qty = int(post.get('add_qty', 1))
@ -195,20 +212,24 @@ class ProductVisibilityCon(WebsiteSale):
conversion_rate=conversion_rate, conversion_rate=conversion_rate,
**post **post
) )
fuzzy_search_term, product_count, search_product = self._shop_lookup_products( fuzzy_search_term, product_count, search_product = \
self._shop_lookup_products(
attrib_set, options, post, search, website) attrib_set, options, post, search, website)
filter_by_price_enabled = website.is_view_active( filter_by_price_enabled = website.is_view_active(
'website_sale.filter_products_price') 'website_sale.filter_products_price')
if filter_by_price_enabled: if filter_by_price_enabled:
# TODO Find an alternative way to obtain the domain through the search metadata. # TODO Find an alternative way to obtain the domain through the
# search metadata.
Product = request.env['product.template'].with_context( Product = request.env['product.template'].with_context(
bin_size=True) bin_size=True)
domain = self._get_search_domain(search, category, attrib_values) domain = self._get_search_domain(search, category, attrib_values)
# This is ~4 times more efficient than a search for the cheapest and most expensive products # This is ~4 times more efficient than a search for the cheapest
# and most expensive products
from_clause, where_clause, where_params = Product._where_calc( from_clause, where_clause, where_params = Product._where_calc(
domain).get_sql() domain).get_sql()
query = f""" query = f"""
SELECT COALESCE(MIN(list_price), 0) * {conversion_rate}, COALESCE(MAX(list_price), 0) * {conversion_rate} SELECT COALESCE(MIN(list_price), 0) * {conversion_rate},
COALESCE(MAX(list_price), 0) * {conversion_rate}
FROM {from_clause} FROM {from_clause}
WHERE {where_clause} WHERE {where_clause}
""" """
@ -222,10 +243,12 @@ class ProductVisibilityCon(WebsiteSale):
# price filter is set to their respective available prices when the specified # 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. # min exceeds the max, and / or the specified max is lower than the available min.
if min_price: if min_price:
min_price = min_price if min_price <= available_max_price else available_min_price min_price = min_price if min_price <= available_max_price \
else available_min_price
post['min_price'] = min_price post['min_price'] = min_price
if max_price: if max_price:
max_price = max_price if max_price >= available_min_price else available_max_price max_price = max_price if max_price >= available_min_price \
else available_max_price
post['max_price'] = max_price post['max_price'] = max_price
website_domain = website.website_domain() website_domain = website.website_domain()
categs_domain = [('parent_id', '=', False)] + website_domain categs_domain = [('parent_id', '=', False)] + website_domain
@ -369,14 +392,14 @@ class ProductVisibilityCon(WebsiteSale):
'filter_mode') 'filter_mode')
products = literal_eval( products = literal_eval(
request.env['ir.config_parameter'].sudo().get_param( request.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_product_ids', 'website_product_visibility.'
'False')) 'available_products_for_guest_ids', 'False'))
if mode == 'product_only': if mode == 'product_only':
available_products = request.env['product.template'].search( available_products = request.env['product.template'].search(
[('id', 'in', products)]) [('id', 'in', products)])
cat = literal_eval( cat = literal_eval(
request.env['ir.config_parameter'].sudo().get_param( request.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_cat_ids', 'website_product_visibility.available_cat_for_guest_ids',
'False')) 'False'))
available_categ = request.env['product.public.category'].search( available_categ = request.env['product.public.category'].search(
[('id', 'in', cat)]) [('id', 'in', cat)])
@ -394,7 +417,27 @@ class ProductVisibilityCon(WebsiteSale):
max_nb_chars = options.get('max_nb_chars', 999) max_nb_chars = options.get('max_nb_chars', 999)
category = options.get('category') category = options.get('category')
attrib_values = options.get('attrib_values') attrib_values = options.get('attrib_values')
if not available_products and not available_categ: if not available_categ and not available_products \
and request.env.user.has_group(
'base.group_portal'):
mode = request.env['ir.config_parameter'].sudo().get_param(
'filter_mode_portal')
products = literal_eval(
request.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.'
'available_products_for_portal_ids', 'False'))
if mode == 'product_only':
available_products = request.env['product.template'].search(
[('id', 'in', products)])
cat = literal_eval(
request.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_cat_for_portal_ids',
'False'))
available_categ = request.env['product.public.category'].search(
[('id', 'in', cat)])
if not available_products and not available_categ \
and not request.env.user.has_group(
'base.group_portal'):
domain = self._get_search_domain(term, category, attrib_values, domain = self._get_search_domain(term, category, attrib_values,
display_description) display_description)
else: else:
@ -422,7 +465,8 @@ class ProductVisibilityCon(WebsiteSale):
if display_price: if display_price:
FieldMonetary = request.env['ir.qweb.field.monetary'] FieldMonetary = request.env['ir.qweb.field.monetary']
monetary_options = { monetary_options = {
'display_currency': request.website.get_current_pricelist().currency_id, 'display_currency':
request.website.get_current_pricelist().currency_id,
} }
for res_product, product in zip(res['products'], products): for res_product, product in zip(res['products'], products):
combination_info = product._get_combination_info( combination_info = product._get_combination_info(

5
product_visibility_website/doc/RELEASE_NOTES.md

@ -8,3 +8,8 @@
#### Version 16.0.1.0.0 #### Version 16.0.1.0.0
##### FIX ##### FIX
- Bug Fixed - Bug Fixed
#### 12.10.2023
#### Version 16.0.1.1.1
##### FIX
- Feature Of Website Product Visibility For Portal Users Is Added

1
product_visibility_website/models/__init__.py

@ -20,4 +20,5 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
# #
################################################################################ ################################################################################
from . import res_config_settings
from . import website_product_visibility from . import website_product_visibility

155
product_visibility_website/models/res_config_settings.py

@ -0,0 +1,155 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>)
# Author: Neeraj Krishnan V M, Saneen K (<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 odoo import fields, models, api
from ast import literal_eval
class ResConfigSettings(models.TransientModel):
"""Inherit the model res.config.settings for adding the fields for
selecting the product for website visitors and portal users"""
_inherit = 'res.config.settings'
product_visibility_guest_user = fields.Boolean(
string="Product visibility Guest User", help="Product Visibility")
filter_mode = fields.Selection([('product_only', 'Product Wise'),
('categ_only', 'Category Wise')],
string='Filter Mode', default='product_only')
available_products_for_guest_ids = fields.Many2many(
'product.template',
string='Available Product',
domain="[('is_published', '=', True)]",
help='The website will only display products which are within one of '
'the selected category trees. If no category is specified,all '
'available products will be shown')
available_cat_for_guest_ids = fields.Many2many(
'product.public.category',
string='Available Product Categories',
help='The website will only display products which are selected. If no '
'product is specified,all available products will be shown')
product_visibility_portal_user = fields.Boolean(
string="Product visibility Portal User", help="Product Visibility")
filter_mode_portal = fields.Selection([('product_only', 'Product Wise'),
('categ_only', 'Category Wise')],
string='Filter Mode',
default='product_only')
available_products_for_portal_ids = fields.Many2many(
'product.template',
relation="available_product_for_portal_rel",
string='Available Product',
domain="[('is_published', '=', True)]",
help='The website will only display products which are within one of '
'the selected category trees. If no category is specified,all '
'available products will be shown')
available_cat_for_portal_ids = fields.Many2many(
'product.public.category',
relation="available_cat_for_portal_rel",
string='Available Product Categories',
help='The website will only display products which are selected. If no '
'product is specified,all available products will be shown')
@api.model
def set_values(self):
res = super(ResConfigSettings, self).set_values()
self.env['ir.config_parameter'].sudo().set_param(
'product_visibility_guest_user',
self.product_visibility_guest_user)
self.env['ir.config_parameter'].sudo().set_param(
'product_visibility_portal_user',
self.product_visibility_portal_user)
self.env['ir.config_parameter'].sudo().set_param('filter_mode',
self.filter_mode)
self.env['ir.config_parameter'].sudo().set_param(
'filter_mode_portal', self.filter_mode_portal)
if not self.product_visibility_guest_user:
self.available_cat_for_guest_ids = None
self.available_products_for_guest_ids = None
self.env['ir.config_parameter'].sudo().set_param('filter_mode',
'product_only')
if not self.product_visibility_portal_user:
self.available_products_for_portal_ids = None
self.available_cat_for_portal_ids = None
if self.filter_mode == 'product_only':
self.available_cat_for_guest_ids = None
elif self.filter_mode == 'categ_only':
self.available_products_for_guest_ids = None
if self.filter_mode_portal == 'product_only':
self.available_cat_for_portal_ids = None
elif self.filter_mode_portal == 'categ_only':
self.available_products_for_portal_ids = None
self.env['ir.config_parameter'].sudo().set_param(
'website_product_visibility.available_products_for_guest_ids',
self.available_products_for_guest_ids.ids)
self.env['ir.config_parameter'].sudo().set_param(
'website_product_visibility.available_products_for_portal_ids',
self.available_products_for_portal_ids.ids)
self.env['ir.config_parameter'].sudo().set_param(
'website_product_visibility.available_cat_for_guest_ids',
self.available_cat_for_guest_ids.ids)
self.env['ir.config_parameter'].sudo().set_param(
'website_product_visibility.available_cat_for_portal_ids',
self.available_cat_for_portal_ids.ids)
return res
@api.model
def get_values(self):
res = super(ResConfigSettings, self).get_values()
product_visibility_guest_user = self.env[
'ir.config_parameter'].sudo().get_param(
'product_visibility_guest_user')
product_visibility_portal_user = self.env[
'ir.config_parameter'].sudo().get_param(
'product_visibility_portal_user')
filter_mode = self.env['ir.config_parameter'].sudo().get_param(
'filter_mode')
filter_mode_portal = self.env['ir.config_parameter'].sudo().get_param(
'filter_mode_portal')
available_products_for_guest_ids = literal_eval(
self.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_products_for_guest_ids',
'False')) or []
available_products_for_portal_ids = literal_eval(
self.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_products_for_portal_ids',
'False')) or []
available_cat_for_guest_ids = literal_eval(
self.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_cat_for_guest_ids',
'False')) or []
available_cat_for_portal_ids = literal_eval(
self.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_cat_for_portal_ids',
'False')) or []
res.update(
product_visibility_guest_user=product_visibility_guest_user,
product_visibility_portal_user=product_visibility_portal_user,
filter_mode=filter_mode if filter_mode else 'product_only',
filter_mode_portal=filter_mode_portal if filter_mode_portal
else 'product_only',
available_products_for_guest_ids=[
(6, 0, available_products_for_guest_ids)],
available_products_for_portal_ids=[
(6, 0, available_products_for_portal_ids)],
available_cat_for_guest_ids=[(6, 0, available_cat_for_guest_ids)],
available_cat_for_portal_ids=[(6, 0, available_cat_for_portal_ids)]
)
return res

76
product_visibility_website/models/website_product_visibility.py

@ -21,7 +21,6 @@
# #
################################################################################ ################################################################################
from odoo import fields, models, api from odoo import fields, models, api
from ast import literal_eval
class ProductVisibility(models.Model): class ProductVisibility(models.Model):
@ -64,78 +63,3 @@ class ProductVisibility(models.Model):
if self.filter_mode == 'null': if self.filter_mode == 'null':
self.website_available_cat_ids = None self.website_available_cat_ids = None
self.website_available_product_ids = None self.website_available_product_ids = None
class WebsiteGuestVisibility(models.TransientModel):
"""Inherit the model res.config.settings for adding the fields for
selecting the product for visitors"""
_inherit = 'res.config.settings'
product_visibility_guest_user = fields.Boolean(
string="Product visibility Guest User", help="Product Visibility")
filter_mode = fields.Selection([('product_only', 'Product Wise'),
('categ_only', 'Category Wise')],
string='Filter Mode', default='product_only')
available_product_ids = fields.Many2many('product.template',
string='Available Product',
domain="[('is_published', '=', "
"True)]",
help='The website will only '
'display products which are '
'within one of the selected'
' category trees. If no'
' category is specified,'
'all available products '
'will be shown')
available_cat_ids = fields.Many2many('product.public.category',
string='Available Product Categories',
help='The website will only display '
'products which are selected.'
' If no product is specified,'
'all available products will be '
'shown')
@api.model
def set_values(self):
res = super(WebsiteGuestVisibility, self).set_values()
self.env['ir.config_parameter'].sudo().set_param(
'product_visibility_guest_user',
self.product_visibility_guest_user)
self.env['ir.config_parameter'].sudo().set_param('filter_mode',
self.filter_mode)
if not self.product_visibility_guest_user:
self.available_cat_ids = None
self.available_product_ids = None
self.env['ir.config_parameter'].sudo().set_param('filter_mode',
'product_only')
if self.filter_mode == 'product_only':
self.available_cat_ids = None
elif self.filter_mode == 'categ_only':
self.available_product_ids = None
self.env['ir.config_parameter'].sudo().set_param(
'website_product_visibility.available_product_ids',
self.available_product_ids.ids)
self.env['ir.config_parameter'].sudo().set_param(
'website_product_visibility.available_cat_ids',
self.available_cat_ids.ids)
return res
@api.model
def get_values(self):
res = super(WebsiteGuestVisibility, self).get_values()
product_ids = literal_eval(
self.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_product_ids', 'False'))
cat_ids = literal_eval(self.env['ir.config_parameter'].sudo().get_param(
'website_product_visibility.available_cat_ids', 'False'))
mod = self.env['ir.config_parameter'].sudo().get_param('filter_mode')
if mod:
res.update(
product_visibility_guest_user=self.env[
'ir.config_parameter'].sudo().get_param(
'product_visibility_guest_user'),
filter_mode=mod if mod else 'product_only',
available_product_ids=[(6, 0, product_ids)],
available_cat_ids=[(6, 0, cat_ids)],
)
return res

BIN
product_visibility_website/static/description/assets/screenshots/10.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 111 KiB

BIN
product_visibility_website/static/description/assets/screenshots/11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
product_visibility_website/static/description/assets/screenshots/12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

BIN
product_visibility_website/static/description/assets/screenshots/13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
product_visibility_website/static/description/assets/screenshots/14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
product_visibility_website/static/description/assets/screenshots/15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

BIN
product_visibility_website/static/description/assets/screenshots/6.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 156 KiB

BIN
product_visibility_website/static/description/assets/screenshots/7.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 KiB

After

Width:  |  Height:  |  Size: 145 KiB

BIN
product_visibility_website/static/description/assets/screenshots/8.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 100 KiB

BIN
product_visibility_website/static/description/assets/screenshots/9.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 148 KiB

368
product_visibility_website/static/description/index.html

@ -2,7 +2,8 @@
<!-- TITLE BAR --> <!-- TITLE BAR -->
<div <div
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;"> 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;" /> <img src="assets/misc/cybrosys-logo.png" width="42" height="42"
style="width: 42px; height: 42px;"/>
<div> <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;" <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"> class="mr-2">
@ -21,8 +22,11 @@
<!-- END OF TITLE BAR --> <!-- END OF TITLE BAR -->
<!-- APP HERO --> <!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">Website Product Visibility</h1> <h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">Website Product visibility for logged in and logged out users/Visitors</p> Website Product Visibility</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Website Product visibility for logged in and logged out
users/Visitors</p>
<!-- END OF APP HERO --> <!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" <img src="assets/screenshots/hero.gif"
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;"/> style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;"/>
@ -30,12 +34,15 @@
</div> </div>
<!-- NAVIGATION SECTION --> <!-- 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 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" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png"/> <img src="assets/misc/compass.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Explore This <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Explore This
Module</h2> Module</h2>
</div> </div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;"> <div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
@ -88,134 +95,222 @@
<!-- END OF NAVIGATION SECTION --> <!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW 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 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" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png"/> <img src="assets/misc/pie-chart.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Overview <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Overview
</h2> </h2>
</div> </div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> <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"> <div class="col-sm-12 py-4">
This module helps you to make visible only the filtered products and product categories for a logged in and logged out users/visitors. This module helps you to make visible only the filtered products and
Also, it enables the user to search products and product categories only from those available products and categories. product categories for a logged in and logged out users/visitors.
Also, it enables the user to search products and product categories only
from those available products and categories.
</div> </div>
</div> </div>
<!-- END OF OVERVIEW SECTION --> <!-- END OF OVERVIEW SECTION -->
<!-- FEATURES 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 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" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png"/> <img src="assets/misc/features.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Features
</h2> </h2>
</div> </div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> <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="col-sm-12 col-md-6">
<div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px"> <div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/> <img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Filter according to the logged users</span> <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Filter according to the logged users</span>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> <p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Filter product and product categories according to the logged user.</p> Filter product and product categories according to the logged
user.</p>
</div> </div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> <div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/> <img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Filter according to the public users/visitors</span> <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Filter according to the public users/visitors</span>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> <p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Filter product and product categories according to the public users/visitors.</p> Filter product and product categories according to the public
users/visitors.</p>
</div> </div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> <div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/> <img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Restrict user searches to available product/category only</span> <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Restrict user searches to available product/category only</span>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> <p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
User can only search product and category among from the available product/category.</p> User can only search product and category among from the
available product/category.</p>
</div> </div>
</div> </div>
</div> </div>
<!-- END OF FEATURES SECTION --> <!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS 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 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" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png"/> <img src="assets/misc/pictures.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Screenshots
</h2> </h2>
</div> </div>
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Set filter for a logged user</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Setting the filtering mode for a logged user.</p> Set filter for a logged user</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Setting the filtering mode for a logged user.</p>
<img src="assets/screenshots/1.png" class="img-thumbnail"> <img src="assets/screenshots/1.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Product wise filtering for website shop (Logged in Users)</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Product wise filtering mode for logged user in website shop.</p> Product wise filtering for website shop (Logged in Users)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Product wise filtering mode for logged user in website shop.</p>
<img src="assets/screenshots/2.png" class="img-thumbnail"> <img src="assets/screenshots/2.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Product wise visibility for website shop (Product wise)</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Product visibility (Product wise) for the logged user in website shop.</p> Product wise visibility for website shop (Product wise)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Product visibility (Product wise) for the logged user in website
shop.</p>
<img src="assets/screenshots/3.png" class="img-thumbnail"> <img src="assets/screenshots/3.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Category wise filtering for website shop (Logged in Users)</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Category wise filtering mode for logged user in website shop.</p> Category wise filtering for website shop (Logged in Users)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Category wise filtering mode for logged user in website
shop.</p>
<img src="assets/screenshots/4.png" class="img-thumbnail"> <img src="assets/screenshots/4.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Product visibility for website shop (Category wise)</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Product visibility (Category wise) for the logged user in website shop.</p> Product visibility for website shop (Category wise)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Product visibility (Category wise) for the logged user in
website shop.</p>
<img src="assets/screenshots/5.png" class="img-thumbnail"> <img src="assets/screenshots/5.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Product wise filtering for website shop (Visitors)</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Product wise filtering mode for the visitors in the website shop.</p> Product wise filtering for website shop (Portal Users)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Product wise filtering mode for the portal users in the website
shop.</p>
<img src="assets/screenshots/6.png" class="img-thumbnail"> <img src="assets/screenshots/6.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Product wise visibility for website shop (Visitors)</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Product visibility (Product wise) for the visitors in website shop.</p> Set filter for a portal user</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Setting the filtering mode for a portal user as No Filter.</p>
<img src="assets/screenshots/7.png" class="img-thumbnail"> <img src="assets/screenshots/7.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Category wise filtering for website shop (Visitors)</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Category wise filtering mode for the visitors in the website shop.</p> Product wise visibility for website shop (Portal Users)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Product visibility (Product wise) for the portal users in
website shop when no filter is set for them.</p>
<img src="assets/screenshots/8.png" class="img-thumbnail"> <img src="assets/screenshots/8.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Product visibility for website shop visitors (Category wise)</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Product visibility (Category wise) for the visitors in website shop.</p> Category wise filtering for website shop (Portal Users)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Category wise filtering mode for the portal users in the website
shop.</p>
<img src="assets/screenshots/9.png" class="img-thumbnail"> <img src="assets/screenshots/9.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Search available product from the list</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Search product from the available product list.</p> Product visibility for website shop portal users (Category
wise)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Product visibility (Category wise) for the portal users in
website shop when no filter is set for them.</p>
<img src="assets/screenshots/10.png" class="img-thumbnail"> <img src="assets/screenshots/10.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Product wise filtering for website shop (Visitors)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Product wise filtering mode for the visitors in the website
shop.</p>
<img src="assets/screenshots/11.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;">
Product wise visibility for website shop (Visitors)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Product visibility (Product wise) for the visitors in website
shop.</p>
<img src="assets/screenshots/12.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;">
Category wise filtering for website shop (Visitors)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Category wise filtering mode for the visitors in the website
shop.</p>
<img src="assets/screenshots/13.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;">
Product visibility for website shop visitors (Category
wise)</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Product visibility (Category wise) for the visitors in website
shop.</p>
<img src="assets/screenshots/14.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;">
Search available product from the list</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Search product from the available product list.</p>
<img src="assets/screenshots/15.png" class="img-thumbnail">
</div>
</div> </div>
</div> </div>
<!-- END OF SCREENSHOTS SECTION --> <!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS --> <!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> <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" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png"/> <img src="assets/misc/categories.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Related <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Related
Products Products
</h2> </h2>
</div> </div>
@ -225,52 +320,71 @@
<!-- The slideshow --> <!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;"> <div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;"> <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"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/dynamic_accounts_report/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/dynamic_accounts_report/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/1.png"> src="assets/modules/1.png">
</div> </div>
</a> </a>
</div> </div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/custom_gantt_view/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/custom_gantt_view/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/2.png"> src="assets/modules/2.png">
</div> </div>
</a> </a>
</div> </div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/project_custom_gantt/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/project_custom_gantt/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/3.png"> src="assets/modules/3.png">
</div> </div>
</a> </a>
</div> </div>
</div> </div>
<div class="carousel-item active" style="min-height: 198.656px;"> <div class="carousel-item active"
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> style="min-height: 198.656px;">
<a href="https://apps.odoo.com/apps/modules/15.0/account_reports_xlsx/" target="_blank"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/account_reports_xlsx/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/4.png"> src="assets/modules/4.png">
</div> </div>
</a> </a>
</div> </div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/base_accounting_kit/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/base_accounting_kit/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/5.png"> src="assets/modules/5.png">
</div> </div>
</a> </a>
</div> </div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/hr_payroll_community/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/hr_payroll_community/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/6.png"> src="assets/modules/6.png">
</div> </div>
</a> </a>
@ -278,10 +392,15 @@
</div> </div>
</div> </div>
<!-- Left and right controls --> <!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="width:35px; color:#000"> <span <a class="carousel-control-prev" href="#demo1" data-slide="prev"
class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span> style="width:35px; color:#000"> <span
</a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="width:35px; color:#000"> class="carousel-control-prev-icon"><i
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right" 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> style="font-size:24px"></i></span>
</a> </a>
</div> </div>
@ -291,12 +410,15 @@
<!-- OUR SERVICES --> <!-- OUR SERVICES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> <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" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png"/> <img src="assets/misc/star.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Services <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our Services
</h2> </h2>
</div> </div>
@ -305,9 +427,11 @@
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <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" <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;"> 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"> <img src="assets/icons/cogs.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Customization</h6> Customization</h6>
</div> </div>
@ -315,9 +439,11 @@
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <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" <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;"> 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"> <img src="assets/icons/wrench.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Implementation</h6> Implementation</h6>
</div> </div>
@ -325,9 +451,11 @@
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <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" <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;"> 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"> <img src="assets/icons/lifebuoy.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Support</h6> Support</h6>
</div> </div>
@ -336,9 +464,11 @@
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <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" <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;"> 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"> <img src="assets/icons/user.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire Hire
Odoo Odoo
Developer</h6> Developer</h6>
@ -347,9 +477,11 @@
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <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" <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;"> 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"> <img src="assets/icons/puzzle.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Integration</h6> Integration</h6>
</div> </div>
@ -357,9 +489,11 @@
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <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" <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;"> 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"> <img src="assets/icons/update.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Migration</h6> Migration</h6>
</div> </div>
@ -368,9 +502,11 @@
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <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" <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;"> 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"> <img src="assets/icons/consultation.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Consultancy</h6> Consultancy</h6>
</div> </div>
@ -378,9 +514,11 @@
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <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" <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;"> 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"> <img src="assets/icons/training.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Implementation</h6> Implementation</h6>
</div> </div>
@ -388,9 +526,11 @@
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <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" <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;"> 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"> <img src="assets/icons/license.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Licensing Consultancy</h6> Licensing Consultancy</h6>
</div> </div>
@ -402,12 +542,15 @@
<!-- OUR INDUSTRIES --> <!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> <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" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png"/> <img src="assets/misc/corporate.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our
Industries Industries
</h2> </h2>
</div> </div>
@ -417,7 +560,8 @@
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <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;"> 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"> <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;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading Trading
</h5> </h5>
@ -431,7 +575,8 @@
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <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;"> 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"> <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;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS POS
</h5> </h5>
@ -445,7 +590,8 @@
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <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;"> 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"> <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;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education Education
</h5> </h5>
@ -458,7 +604,8 @@
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <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;"> 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" <img src="assets/icons/manufacturing-black.png"
class="img-responsive mb-3" height="48px"
width="48px"> width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing Manufacturing
@ -472,7 +619,8 @@
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <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;"> 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"> <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;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website E-commerce &amp; Website
</h5> </h5>
@ -486,7 +634,8 @@
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <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;"> 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"> <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;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management Service Management
</h5> </h5>
@ -499,7 +648,8 @@
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <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;"> 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"> <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;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant Restaurant
</h5> </h5>
@ -512,7 +662,8 @@
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <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;"> 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"> <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;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management Hotel Management
</h5> </h5>
@ -528,12 +679,15 @@
<!-- END OF OUR INDUSTRIES --> <!-- END OF OUR INDUSTRIES -->
<!-- SUPPORT --> <!-- SUPPORT -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> <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" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png"/> <img src="assets/misc/customer-support.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Support
</h2> </h2>
</div> </div>
<div class="container mt-5"> <div class="container mt-5">
@ -542,11 +696,13 @@
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4" <div class="mr-4"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: 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;" /> <img src="assets/misc/support.png" height="48" width="48"
style="width: 42px; height: 42px;"/>
</div> </div>
<div> <div>
<h4>Need Help?</h4> <h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help? Get in touch.</p> <p style="line-height: 100%;">Got questions or need help?
Get in touch.</p>
<a href="mailto:odoo@cybrosys.com"> <a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p> odoo@cybrosys.com</p>
@ -558,13 +714,15 @@
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4" <div class="mr-4"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: 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;" /> <img src="assets/misc/whatsapp.png" height="52" width="52"
style="width: 52px; height: 52px;"/>
</div> </div>
<div> <div>
<h4>WhatsApp</h4> <h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p> <p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707"> <a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">+91 86068 <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
+91 86068
27707</p> 27707</p>
</a> </a>
</div> </div>

90
product_visibility_website/views/res_config_settings_views.xml

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">
res.config.settings.view.form.inherit.product.visibility.website
</field>
<field name="model">res.config.settings</field>
<field name="inherit_id"
ref="website.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('app_settings_block')]/div[@id='website_info_settings']"
position="after">
<div class="app_settings_block" data-string="Website"
string="Website">
<h2>Product Visibility</h2>
<div class="row mt16 o_settings_container">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="product_visibility_guest_user"/>
</div>
<div class="o_setting_right_pane">
<label for="product_visibility_guest_user"/>
<div class="text-muted">
Enable Product Visibility
</div>
<div attrs="{'invisible': [('product_visibility_guest_user', '=', False)]}">
<div class="mt16">
<label class="o_light_label col-lg-3"
for="filter_mode"/>
<field name="filter_mode"
widget="radio"/>
</div>
<div class="mt16"
attrs="{'invisible': [('filter_mode', 'in', ['categ_only'])]}">
<label class="o_light_label col-lg-3"
for="available_products_for_portal_ids"/>
<field name="available_products_for_guest_ids"
widget="many2many_tags"/>
</div>
<div class="mt16"
attrs="{'invisible': [('filter_mode', 'in', ['product_only'])]}">
<label class="o_light_label col-lg-3"
for="available_cat_for_guest_ids"/>
<field name="available_cat_for_guest_ids"
widget="many2many_tags"/>
</div>
</div>
</div>
</div>
</div>
<div class="row mt16 o_settings_container">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="product_visibility_portal_user"/>
</div>
<div class="o_setting_right_pane">
<label for="product_visibility_portal_user"/>
<div class="text-muted">
Enable Product Visibility
</div>
<div attrs="{'invisible': [('product_visibility_portal_user', '=', False)]}">
<div class="mt16">
<label class="o_light_label col-lg-3"
for="filter_mode_portal"/>
<field name="filter_mode_portal"
widget="radio"/>
</div>
<div class="mt16"
attrs="{'invisible': [('filter_mode_portal', 'in', ['categ_only'])]}">
<label class="o_light_label col-lg-3"
for="available_products_for_portal_ids"/>
<field name="available_products_for_portal_ids"
widget="many2many_tags"/>
</div>
<div class="mt16"
attrs="{'invisible': [('filter_mode_portal', 'in', ['product_only'])]}">
<label class="o_light_label col-lg-3"
for="available_cat_for_portal_ids"/>
<field name="available_cat_for_portal_ids"
widget="many2many_tags"/>
</div>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

58
product_visibility_website/views/website_product_visibility.xml

@ -2,64 +2,32 @@
<odoo> <odoo>
<data> <data>
<record id="view_partner_form" model="ir.ui.view"> <record id="view_partner_form" model="ir.ui.view">
<field name="name"> res.partner.view.form.inherit.product.visibility.website</field> <field name="name">
res.partner.view.form.inherit.product.visibility.website
</field>
<field name="model">res.partner</field> <field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/> <field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//sheet/notebook/page[@name='internal_notes']" position="after"> <xpath expr="//sheet/notebook/page[@name='internal_notes']"
<page name="product_visibility" string="Product Visibility" groups="website.group_website_designer"> position="after">
<page name="product_visibility" string="Product Visibility"
groups="website.group_website_designer">
<group name='container_row_2'> <group name='container_row_2'>
<field name="filter_mode" widget="radio"/> <field name="filter_mode" widget="radio"/>
</group> </group>
<group name="container_row_2"> <group name="container_row_2">
<field name="website_available_cat_ids" widget="many2many_tags" attrs="{'invisible': [('filter_mode', 'in', ['product_only','null'])]}" /> <field name="website_available_cat_ids"
widget="many2many_tags"
attrs="{'invisible': [('filter_mode', 'in', ['product_only','null'])]}"/>
</group> </group>
<group name="container_row_3"> <group name="container_row_3">
<field name="website_available_product_ids" widget="many2many_tags" attrs="{'invisible': [('filter_mode', 'in', ['categ_only','null'])]}" /> <field name="website_available_product_ids"
widget="many2many_tags"
attrs="{'invisible': [('filter_mode', 'in', ['categ_only','null'])]}"/>
</group> </group>
</page> </page>
</xpath> </xpath>
</field> </field>
</record> </record>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.product.visibility.website</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="website.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('app_settings_block')]/div[@id='website_info_settings']" position="after">
<div class="app_settings_block" data-string="Website" string="Website">
<h2>Product Visibility</h2>
<div class="row mt16 o_settings_container">
<div class="col-12 col-lg-6 o_setting_box" >
<div class="o_setting_left_pane">
<field name="product_visibility_guest_user"/>
</div>
<div class="o_setting_right_pane">
<label for="product_visibility_guest_user"/>
<div class="text-muted">
Enable Product Visibility
</div>
<div attrs="{'invisible': [('product_visibility_guest_user', '=', False)]}">
<div class="mt16">
<label class="o_light_label col-lg-3" for="filter_mode"/>
<field name="filter_mode" widget="radio"/>
</div>
<div class="mt16" attrs="{'invisible': [('filter_mode', 'in', ['categ_only'])]}">
<label class="o_light_label col-lg-3" for="available_product_ids"/>
<field name="available_product_ids" widget="many2many_tags" />
</div>
<div class="mt16" attrs="{'invisible': [('filter_mode', 'in', ['product_only'])]}">
<label class="o_light_label col-lg-3" for="available_cat_ids"/>
<field name="available_cat_ids" widget="many2many_tags" />
</div>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</data> </data>
</odoo> </odoo>

Loading…
Cancel
Save