| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/product-attribute |
| GIT | |
| GIT | https://github.com/OCA/product-attribute.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/product-attribute/tree/19.0/product_set |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Sale |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Anybox |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Anybox |
| COMMITTERS | |
| COMMITTERS | GitHub, OCA-git-bot, oca-ci, Christopher Rogos |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/product-attribute |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - 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. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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 |
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'
No public methods.
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
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
No public methods.
partner_id
Many2one → 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
add_set(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/product-attribute |
| GIT | |
| GIT | https://github.com/OCA/product-attribute.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/product-attribute/tree/18.0/product_set |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Sale |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Anybox |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Anybox |
| COMMITTERS | |
| COMMITTERS | sbejaoui, Víctor Martínez, Weblate, OCA-git-bot, Simone Orsi, oca-ci, Saran440, trisdoan, MohamedOsman7 |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/product-attribute |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:13 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - 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. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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 |
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'
No public methods.
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
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
No public methods.
partner_id
Many2one → 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
add_set(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/product-attribute |
| GIT | |
| GIT | https://github.com/OCA/product-attribute.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/product-attribute/tree/17.0/product_set |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Sale |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Anybox |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Anybox |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Weblate, OCA-git-bot, oca-ci, Nils Coenen |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/product-attribute |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:06 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - 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. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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 |
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'
No public methods.
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
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
No public methods.
partner_id
Many2one → 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
add_set(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/product-attribute |
| GIT | |
| GIT | https://github.com/OCA/product-attribute.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/product-attribute/tree/16.0/product_set |
| VERSION | |
| VERSION | 3.0.0 |
| CATEGORY | |
| CATEGORY | Sale |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Anybox |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Anybox |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, pilarvargas-tecnativa, Christopher Rogos, chaule97 |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/product-attribute |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - product - base - base_setup - web - bus - web_tour - uom |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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 |
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'
name_get(self)
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
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
No public methods.
partner_id
Many2one → 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
add_set(self)