Product set

product_set
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/19.0/product_set
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Anybox
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Anybox
COMMITTERS
COMMITTERSGitHub, OCA-git-bot, oca-ci, Christopher Rogos
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A **product set** is a list of products which are usually used together.

This module aims to help defining several products under a name, for
later being added in a quick way into other document.

After a *product set* is added, each line can be updated or removed as
any other lines.

This differs from packing products as *product sets* are not linked to
sale orders or other projects once they are added.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_product_set_form product.set.form product.set form New
view_product_set_line_search product.set.line.search product.set.line search New
view_product_set_line_tree product.set.line.list product.set.line list New
view_product_set_search product.set.search product.set search New
view_product_set_tree product.set.list product.set list New
Models touched (3)

New fields (7)
  • active Boolean
    default=True inverse='_inverse_active'
  • company_id Many2one → res.company
    default=<expr> ondelete='cascade' args: 'res.company', 'Company'
  • display_name Char
    compute='_compute_display_name' search='_search_display_name'
  • name Char
    help='Product set name' required=True translate=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' help="You can attache the set to a specific partner or no one. If you don't specify one, it's going to be available for all of them." index=True ondelete='cascade' required=False
  • ref Char
    copy=False help='Product set internal reference' string='Internal Reference'
  • set_line_ids One2many → product.set.line
    copy=True string='Products' args: 'product.set.line', 'product_set_id'
Public methods (0)

No public methods.

New fields (9)
  • active Boolean
    compute='_compute_active' default=True readonly=False store=True
  • company_id Many2one → res.company
    readonly=True related='product_set_id.company_id' store=True args: 'res.company'
  • display_type Selection
    args: [('line_section', 'Section'), ('line_note', 'Note')]
  • name Char
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • product_set_id Many2one → product.set
    ondelete='cascade' string='Set' args: 'product.set'
  • product_uom_id Many2one → product.uom
    domain="[('product_id', '=', product_id)]" args: 'product.uom'
  • quantity Float
    default=1.0 digits='Product Unit of Measure' required=True
  • sequence Integer
    default=0 required=True
Public methods (0)

No public methods.

New fields (4)
  • partner_id Many2one → res.partner
    args: 'res.partner'
  • product_set_id Many2one → product.set
    ondelete='cascade' required=True args: 'product.set', 'Product set'
  • product_set_line_ids Many2many → product.set.line
    compute='_compute_product_set_line_ids' ondelete='cascade' readonly=False required=True store=True string='Product set lines' args: 'product.set.line'
  • quantity Float
    default=1.0 digits='Product Unit of Measure' required=True
Public methods (1)
  • add_set(self)
    This method may be extended in other modules that use product_set as a base.
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_set
VERSION
VERSION 1.3.0
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Anybox
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Anybox
COMMITTERS
COMMITTERSsbejaoui, Víctor Martínez, Weblate, OCA-git-bot, Simone Orsi, oca-ci, Saran440, trisdoan, MohamedOsman7
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A **product set** is a list of products which are usually used together.

This module aims to help defining several products under a name, for
later being added in a quick way into other document.

After a *product set* is added, each line can be updated or removed as
any other lines.

This differs from packing products as you don't follow *product set* are
not linked to sale order other project once they are added.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_product_set_form product.set.form product.set form New
view_product_set_line_search product.set.line.search product.set.line search New
view_product_set_line_tree product.set.line.list product.set.line list New
view_product_set_search product.set.search product.set search New
view_product_set_tree product.set.list product.set list New
Models touched (3)

New fields (7)
  • active Boolean
    default=True inverse='_inverse_active'
  • company_id Many2one → res.company
    default=<expr> ondelete='cascade' args: 'res.company', 'Company'
  • display_name Char
    compute='_compute_display_name' search='_search_display_name'
  • name Char
    help='Product set name' required=True translate=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' help="You can attache the set to a specific partner or no one. If you don't specify one, it's going to be available for all of them." index=True ondelete='cascade' required=False
  • ref Char
    copy=False help='Product set internal reference' string='Internal Reference'
  • set_line_ids One2many → product.set.line
    copy=True string='Products' args: 'product.set.line', 'product_set_id'
Public methods (0)

No public methods.

New fields (10)
  • active Boolean
    compute='_compute_active' default=True readonly=False store=True
  • company_id Many2one → res.company
    readonly=True related='product_set_id.company_id' store=True args: 'res.company'
  • display_type Selection
    args: [('line_section', 'Section'), ('line_note', 'Note')]
  • name Char
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • product_packaging_id Many2one → product.packaging
    domain="[('product_id', '=', product_id)]" args: 'product.packaging'
  • product_packaging_qty Float
    compute='_compute_product_packaging_qty' digits='Product Unit of Measure' inverse='_inverse_product_packaging_qty'
  • product_set_id Many2one → product.set
    ondelete='cascade' string='Set' args: 'product.set'
  • quantity Float
    default=1.0 digits='Product Unit of Measure' required=True
  • sequence Integer
    default=0 required=True
Public methods (0)

No public methods.

New fields (4)
  • partner_id Many2one → res.partner
    args: 'res.partner'
  • product_set_id Many2one → product.set
    ondelete='cascade' required=True args: 'product.set', 'Product set'
  • product_set_line_ids Many2many → product.set.line
    compute='_compute_product_set_line_ids' ondelete='cascade' readonly=False required=True store=True string='Product set lines' args: 'product.set.line'
  • quantity Float
    default=1.0 digits='Product Unit of Measure' required=True
Public methods (1)
  • add_set(self)
    This method may be extended in other modules that use product_set as a base.
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_set
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Anybox
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Anybox
COMMITTERS
COMMITTERSPedro M. Baeza, Weblate, OCA-git-bot, oca-ci, Nils Coenen
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
A **product set** is a list of products which are usually used together.

This module aims to help defining several products under a name, for
later being added in a quick way into other document.

After a *product set* is added, each line can be updated or removed as
any other lines.

This differs from packing products as you don't follow *product set* are
not linked to sale order other project once they are added.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_product_set_form product.set.form product.set form New
view_product_set_line_search product.set.line.search product.set.line search New
view_product_set_line_tree product.set.line.tree product.set.line tree New
view_product_set_search product.set.search product.set search New
view_product_set_tree product.set.tree product.set tree New
Models touched (3)

New fields (7)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> ondelete='cascade' args: 'res.company', 'Company'
  • display_name Char
    compute='_compute_display_name'
  • name Char
    help='Product set name' required=True translate=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' help="You can attache the set to a specific partner or no one. If you don't specify one, it's going to be available for all of them." index=True ondelete='cascade' required=False
  • ref Char
    copy=False help='Product set internal reference' string='Internal Reference'
  • set_line_ids One2many → product.set.line
    copy=True string='Products' args: 'product.set.line', 'product_set_id'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    readonly=True related='product_set_id.active' store=True string='Active'
  • company_id Many2one → res.company
    readonly=True related='product_set_id.company_id' store=True args: 'res.company'
  • display_type Selection
    args: [('line_section', 'Section'), ('line_note', 'Note')]
  • name Char
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • product_set_id Many2one → product.set
    ondelete='cascade' string='Set' args: 'product.set'
  • quantity Float
    default=1.0 digits='Product Unit of Measure' required=True
  • sequence Integer
    default=0 required=True
Public methods (0)

No public methods.

New fields (4)
  • partner_id Many2one → res.partner
    args: 'res.partner'
  • product_set_id Many2one → product.set
    ondelete='cascade' required=True args: 'product.set', 'Product set'
  • product_set_line_ids Many2many → product.set.line
    compute='_compute_product_set_line_ids' ondelete='cascade' readonly=False required=True store=True string='Product set lines' args: 'product.set.line'
  • quantity Float
    default=1.0 digits='Product Unit of Measure' required=True
Public methods (1)
  • add_set(self)
    This method may be extended in other modules that use product_set as a base.
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_set
VERSION
VERSION 3.0.0
CATEGORY
CATEGORYSale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Anybox
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Anybox
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, pilarvargas-tecnativa, Christopher Rogos, chaule97
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - 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
view_product_set_form product.set.form product.set form New
view_product_set_line_search product.set.line.search product.set.line search New
view_product_set_line_tree product.set.line.tree product.set.line tree New
view_product_set_search product.set.search product.set search New
view_product_set_tree product.set.tree product.set tree New
Models touched (3)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> ondelete='cascade' args: 'res.company', 'Company'
  • name Char
    help='Product set name' required=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' help="You can attache the set to a specific partner or no one. If you don't specify one, it's going to be available for all of them." index=True ondelete='cascade' required=False
  • ref Char
    copy=False help='Product set internal reference' string='Internal Reference'
  • set_line_ids One2many → product.set.line
    copy=True string='Products' args: 'product.set.line', 'product_set_id'
Public methods (1)
  • name_get(self)

New fields (8)
  • active Boolean
    readonly=True related='product_set_id.active' store=True string='Active'
  • company_id Many2one → res.company
    readonly=True related='product_set_id.company_id' store=True args: 'res.company'
  • display_type Selection
    args: [('line_section', 'Section'), ('line_note', 'Note')]
  • name Char
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('sale_ok', '=', True)] required=False string='Product'
  • product_set_id Many2one → product.set
    ondelete='cascade' string='Set' args: 'product.set'
  • quantity Float
    default=1.0 digits='Product Unit of Measure' required=True
  • sequence Integer
    default=0 required=True
Public methods (0)

No public methods.

New fields (4)
  • partner_id Many2one → res.partner
    args: 'res.partner'
  • product_set_id Many2one → product.set
    ondelete='cascade' required=True args: 'product.set', 'Product set'
  • product_set_line_ids Many2many → product.set.line
    compute='_compute_product_set_line_ids' ondelete='cascade' readonly=False required=True store=True string='Product set lines' args: 'product.set.line'
  • quantity Float
    default=1.0 digits='Product Unit of Measure' required=True
Public methods (1)
  • add_set(self)
    This method may be extended in other modules that use product_set as a base.