Product Assortment

product_assortment
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/18.0/product_assortment
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Pieter Paulussen, oca-ci, bosd, Rafael Lima
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - product
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This addon intends to manage product assortment. In Odoo you can only
define some filters defined by a domain but it can be sometimes really
complicated. With this addon you will be able to define a domain but
also add some products to include or to exclude through a allowed list
and a restricted list. This is done by overriding ir.capability but
without influencing its standard behaviour.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
product_assortment_view_form product.assortment.form ir.filters form New
product_assortment_view_list ir.filters list New
product_assortment_view_search product.assortment.search ir.filters search New
product_product_view_list product.product list New
view_partner_form res.partner div Inherits base.view_partner_form
Models touched (2)

New fields (9)
  • all_partner_ids Many2many → res.partner
    column1='filter_id' column2='partner_id' comodel_name='res.partner' compute='_compute_all_partner_ids' relation='ir_filter_all_partner_rel' store=True
  • apply_black_list_product_domain Boolean
    string='Apply restricted product domain'
  • black_list_product_domain Text
    default='[]' required=True string='Restricted product domain'
  • blacklist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_blacklisted' string='Restricted products'
  • is_assortment Boolean
    default=<expr>
  • partner_domain Text
    default='[]' required=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> help='This field allow to relate a partner to a domain of products'
  • record_count Integer
    compute='_compute_record_count'
  • whitelist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_whitelisted' string='Allowed products'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get_partner_domain_fields(self)
    @api.model@ormcache()
  • show_products(self)
  • write(self, vals)

New fields (1)
  • applied_assortment_ids Many2many → ir.filters
    column1='partner_id' column2='filter_id' comodel_name='ir.filters' relation='ir_filter_all_partner_rel'
Public methods (3)
  • action_define_product_assortment(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/17.0/product_assortment
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, David Alonso // Solvos
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - product
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This addon intends to manage product assortment. In Odoo you can only
define some filters defined by a domain but it can be sometimes really
complicated. With this addon you will be able to define a domain but
also add some products to include or to exclude through a allowed list
and a restricted list. This is done by overriding ir.capability but
without influencing its standard behaviour.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
product_assortment_view_form product.assortment.form ir.filters form New
product_assortment_view_search product.assortment.search ir.filters search New
product_assortment_view_tree ir.filters tree New
product_product_view_tree product.product tree New
view_partner_form res.partner div Inherits base.view_partner_form
Models touched (2)

New fields (9)
  • all_partner_ids Many2many → res.partner
    column1='filter_id' column2='partner_id' comodel_name='res.partner' compute='_compute_all_partner_ids' relation='ir_filter_all_partner_rel' store=True
  • apply_black_list_product_domain Boolean
    string='Apply restricted product domain'
  • black_list_product_domain Text
    default='[]' required=True string='Restricted product domain'
  • blacklist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_blacklisted' string='Restricted products'
  • is_assortment Boolean
    default=<expr>
  • partner_domain Text
    default='[]' required=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> help='This field allow to relate a partner to a domain of products'
  • record_count Integer
    compute='_compute_record_count'
  • whitelist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_whitelisted' string='Allowed products'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get_partner_domain_fields(self)
    @api.model@ormcache()
  • show_products(self)
  • write(self, vals)

New fields (1)
  • applied_assortment_ids Many2many → ir.filters
    column1='partner_id' column2='filter_id' comodel_name='ir.filters' relation='ir_filter_all_partner_rel'
Public methods (3)
  • action_define_product_assortment(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/16.0/product_assortment
VERSION
VERSION 2.0.2
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSLaurent Mignon (ACSONE), Weblate, OCA-git-bot, oca-ci, Telmo Santos, Carolina Fernandez, mle, Sergio Bustamante
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - product
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
product_assortment_view_form product.assortment.form ir.filters form New
product_assortment_view_search product.assortment.search ir.filters search New
product_assortment_view_tree ir.filters tree New
product_product_view_tree product.product tree New
view_partner_form res.partner div Inherits base.view_partner_form
Models touched (2)

New fields (9)
  • all_partner_ids Many2many → res.partner
    column1='filter_id' column2='partner_id' comodel_name='res.partner' compute='_compute_all_partner_ids' relation='ir_filter_all_partner_rel' store=True
  • apply_black_list_product_domain Boolean
    string='Apply restricted product domain'
  • black_list_product_domain Text
    default='[]' required=True string='Restricted product domain'
  • blacklist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_blacklisted' string='Restricted products'
  • is_assortment Boolean
    default=<expr>
  • partner_domain Text
    default='[]' required=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> help='This field allow to relate a partner to a domain of products'
  • record_count Integer
    compute='_compute_record_count'
  • whitelist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_whitelisted' string='Allowed products'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get_partner_domain_fields(self)
    @api.model@ormcache()
  • show_products(self)
  • write(self, vals)

New fields (1)
  • applied_assortment_ids Many2many → ir.filters
    column1='partner_id' column2='filter_id' comodel_name='ir.filters' copy=False relation='ir_filter_all_partner_rel'
Public methods (3)
  • action_define_product_assortment(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/15.0/product_assortment
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSCarlos Dauden, OCA Transbot, sergio-teruel, Weblate, OCA-git-bot, oca-ci, CarlosRoca13
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:35
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - product
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_assortment_view_form ir.filters form New
product_assortment_view_search product.assortment.search ir.filters search New
product_assortment_view_tree ir.filters tree New
view_partner_form res.partner div Inherits base.view_partner_form
Models touched (3)

New fields (9)
  • all_partner_ids Many2many → res.partner
    column1='filter_id' column2='partner_id' comodel_name='res.partner' compute='_compute_all_partner_ids' relation='ir_filter_all_partner_rel' store=True
  • apply_black_list_product_domain Boolean
    string='Apply restricted product domain'
  • black_list_product_domain Text
    default='[]' required=True string='Restricted product domain'
  • blacklist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_blacklisted' string='Restricted products'
  • is_assortment Boolean
    default=<expr>
  • partner_domain Text
    default='[]' required=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> help='This field allow to relate a partner to a domain of products'
  • record_count Integer
    compute='_compute_record_count'
  • whitelist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_whitelisted' string='Allowed products'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get_partner_domain_fields(self)
    @api.model@ormcache()
  • show_products(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • applied_assortment_ids Many2many → ir.filters
    column1='partner_id' column2='filter_id' comodel_name='ir.filters' copy=False relation='ir_filter_all_partner_rel'
Public methods (3)
  • action_define_product_assortment(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/14.0/product_assortment
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSDenis Roussel, OCA Transbot, Sébastien Alix, oca-travis, Weblate, OCA-git-bot, Simone Orsi, Kevin.roche, xavier-bouquiaux, Hai Lang
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - product
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_assortment_view_form ir.filters form New
product_assortment_view_search product.assortment.search ir.filters search New
product_assortment_view_tree ir.filters tree New
view_partner_form res.partner div Inherits base.view_partner_form
Models touched (2)

New fields (7)
  • all_partner_ids Many2many → res.partner
    comodel_name='res.partner' compute='_compute_all_partner_ids'
  • blacklist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_blacklisted'
  • is_assortment Boolean
    default=<expr>
  • partner_domain Text
    default='[]' required=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> help='This field allow to relate a partner to a domain of products'
  • record_count Integer
    compute='_compute_record_count'
  • whitelist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_whitelisted'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • show_products(self)

New fields (0)

No new fields.

Public methods (1)
  • action_define_product_assortment(self)
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/13.0/product_assortment
VERSION
VERSION 3.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Laurent Mignon (ACSONE), Carlos Dauden, OCA Transbot, sergio-teruel, oca-travis, Weblate, OCA-git-bot, François Honoré, Benjamin Willig, oca-ci, Carlos Roca, CarlosRoca13, laurent.corron
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - product
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_assortment_view_form ir.filters form New
product_assortment_view_search product.assortment.search ir.filters search New
product_assortment_view_tree ir.filters tree New
view_partner_form res.partner div Inherits base.view_partner_form
Models touched (2)

New fields (10)
  • all_partner_ids Many2many → res.partner
    comodel_name='res.partner' compute='_compute_all_partner_ids'
  • apply_black_list_product_domain Boolean
    string='Apply black list product domain'
  • black_list_product_domain Text
    default='[]' required=True
  • blacklist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_blacklisted'
  • is_assortment Boolean
    default=<expr>
  • model_id Selection
    default=<expr>
  • partner_domain Text
    default='[]' required=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> help='This field allow to relate a partner to a domain of products'
  • record_count Integer
    compute='_compute_record_count'
  • whitelist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_whitelisted'
Public methods (4)
  • get_all_partner_ids(self)
    @ormcache('self.id')
  • get_partner_domain_fields(self)
    @api.model@ormcache()
  • show_products(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (2)
  • action_define_product_assortment(self)
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/12.0/product_assortment
VERSION
VERSION 2.0.2
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, nans, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Carlos Roca
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - product
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_assortment_view_form ir.filters form New
product_assortment_view_search product.assortment.search ir.filters search New
product_assortment_view_tree ir.filters tree New
view_partner_form res.partner div Inherits base.view_partner_form
Models touched (2)

New fields (6)
  • blacklist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_blacklisted'
  • is_assortment Boolean
    default=<expr>
  • model_id Selection
    default=<expr>
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> help='This field allow to relate a partner to a domain of products'
  • record_count Integer
    compute='_compute_record_count'
  • whitelist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_whitelisted'
Public methods (1)
  • show_products(self)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • action_define_product_assortment(self)
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/10.0/product_assortment
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSCédric Pigeon, oca-travis, OCA-git-bot, tbaden
WEBSITE
WEBSITEhttps://acsone.eu
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_widget_domain_v11
odoo/odoo:
    - base
    - product
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - report
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
product_assortment_view_form ir.filters form New
product_assortment_view_search product.assortment.search ir.filters search New
product_assortment_view_tree ir.filters tree New
Models touched (1)

New fields (5)
  • blacklist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_blacklisted'
  • is_assortment Boolean
    default=<expr>
  • model_id Selection
    default=<expr>
  • record_count Integer
    compute='_compute_record_count'
  • whitelist_product_ids Many2many → product.product
    comodel_name='product.product' relation='assortment_product_whitelisted'
Public methods (1)
  • show_products(self)
    @api.multi