Product Packaging Level

product_packaging_level
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_packaging_level
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYProduct
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSThierry Ducrest, Weblate, OCA-git-bot, oca-ci, trisdoan
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module binds a product packaging to a packaging level.

There are usually 3 levels:

- The primary: it is the closest to the product, also called the retail
  packaging
- The secondary: it allows to ship the products already in the primary
  packaging, like a box
- The tertiary: it allows to ship large quantities in warehousing, like
  a pallet

This differentiates from the odoo standard package type that is typing
the packaging in a more precise way and that can serve for put-away
routing in the warehouse.

For example a small box and a large box, or an EPAL pallet and CHEP
pallet.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
product_packaging_tree_view product.packaging.tree (in product_packaging_level) product.packaging field Inherits stock.product_packaging_tree_view
stock_package_type_form stock.package.type.form stock.package.type field Inherits stock.stock_package_type_form
view_product_packaging_add_type_form product.packaging.form product.packaging xpath Inherits stock.product_packaging_form_view
view_product_packaging_level_form product.packaging.level.form product.packaging.level form New
view_product_packaging_level_list product.packaging.level.list product.packaging.level list New
view_product_packaging_level_search product.packaging.level.search product.packaging.level search New
Models touched (3)

New fields (6)
  • barcode_required_for_gtin Boolean
    compute='_compute_barcode_required_for_gtin' readonly=True
  • name Char
    compute='_compute_name' readonly=False store=True
  • name_policy Selection
    related='packaging_level_id.name_policy'
  • packaging_level_id Many2one → product.packaging.level
    default=<expr> ondelete='restrict' required=True args: 'product.packaging.level'
  • qty_per_level Char
    compute='_compute_qty_per_level' string='Qty per package level'
  • sequence Integer
    compute='_compute_sequence' readonly=False store=True
Public methods (1)
  • default_packaging_level_id(self)

New fields (8)
  • active Boolean
    default=True
  • code Char
    required=True
  • default_lang_id Many2one → res.lang
    default=<expr> required=True string='Default Language' args: 'res.lang'
  • has_gtin Boolean
  • is_default Boolean
  • name Char
    required=True translate=True
  • name_policy Selection
    default='by_package_level' help="config to set name of product packaging. Three options:- The package level name (default)- The package type name (if groups='stock.group_tracking_lot')- user defined: free text value defined" selection=[('by_package_level', 'Package Level Name'), ('by_package_type', 'Package Type Name'), ('user_defined', 'User Defined')]
  • sequence Integer
    required=True
Public methods (0)

No public methods.

New fields (1)
  • packaging_level_id Many2one → product.packaging.level
    default=<expr> args: 'product.packaging.level'
Public methods (0)

No public methods.

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_packaging_level
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYProduct
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSRuchir Shukla, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module binds a product packaging to a packaging level.

There are usually 3 levels:

- The primary: it is the closest to the product, also called the retail
  packaging
- The secondary: it allows to ship the products already in the primary
  packaging, like a box
- The tertiary: it allows to ship large quantities in warehousing, like
  a pallet

This differentiates from the odoo standard package type that is typing
the packaging in a more precise way and that can serve for put-away
routing in the warehouse.

For example a small box and a large box, or an EPAL pallet and CHEP
pallet.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
product_packaging_tree_view product.packaging.tree (in product_packaging_level) product.packaging field Inherits stock.product_packaging_tree_view
stock_package_type_form stock.package.type.form stock.package.type field Inherits stock.stock_package_type_form
view_product_packaging_add_type_form product.packaging.form product.packaging field Inherits stock.product_packaging_form_view
view_product_packaging_level_form product.packaging.level.form product.packaging.level form New
view_product_packaging_level_search product.packaging.level.search product.packaging.level search New
view_product_packaging_level_tree product.packaging.level.tree product.packaging.level tree New
Models touched (3)

New fields (6)
  • barcode_required_for_gtin Boolean
    compute='_compute_barcode_required_for_gtin' readonly=True
  • name Char
    compute='_compute_name' readonly=False store=True
  • name_policy Selection
    related='packaging_level_id.name_policy'
  • packaging_level_id Many2one → product.packaging.level
    default=<expr> ondelete='restrict' required=True args: 'product.packaging.level'
  • qty_per_level Char
    compute='_compute_qty_per_level' string='Qty per package level'
  • sequence Integer
    compute='_compute_sequence' readonly=False store=True
Public methods (1)
  • default_packaging_level_id(self)

New fields (8)
  • active Boolean
    default=True
  • code Char
    required=True
  • default_lang_id Many2one → res.lang
    default=<expr> required=True string='Default Language' args: 'res.lang'
  • has_gtin Boolean
  • is_default Boolean
  • name Char
    required=True translate=True
  • name_policy Selection
    default='by_package_level' help="config to set name of product packaging. Three options:- The package level name (default)- The package type name (if groups='stock.group_tracking_lot')- user defined: free text value defined" selection=[('by_package_level', 'Package Level Name'), ('by_package_type', 'Package Type Name'), ('user_defined', 'User Defined')]
  • sequence Integer
    required=True
Public methods (0)

No public methods.

New fields (1)
  • packaging_level_id Many2one → product.packaging.level
    default=<expr> args: 'product.packaging.level'
Public methods (0)

No public methods.

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_packaging_level
VERSION
VERSION 1.2.1
CATEGORY
CATEGORYProduct
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSDenis Roussel, Miquel Raïch, Weblate, OCA-git-bot, oca-ci, Telmo Santos, sonhd91, Bastian Guenther, Hoang Diep
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
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
product_packaging_tree_view product.packaging.tree (in product_packaging_level) product.packaging field Inherits stock.product_packaging_tree_view
stock_package_type_form stock.package.type.form stock.package.type field Inherits stock.stock_package_type_form
view_product_packaging_add_type_form product.packaging.form product.packaging field Inherits stock.product_packaging_form_view
view_product_packaging_level_form product.packaging.level.form product.packaging.level form New
view_product_packaging_level_search product.packaging.level.search product.packaging.level search New
view_product_packaging_level_tree product.packaging.level.tree product.packaging.level tree New
Models touched (3)

New fields (6)
  • barcode_required_for_gtin Boolean
    compute='_compute_barcode_required_for_gtin' readonly=True
  • name Char
    compute='_compute_name' readonly=False store=True
  • name_policy Selection
    related='packaging_level_id.name_policy'
  • packaging_level_id Many2one → product.packaging.level
    default=<expr> ondelete='restrict' required=True args: 'product.packaging.level'
  • qty_per_level Char
    compute='_compute_qty_per_level' string='Qty per package level'
  • sequence Integer
    compute='_compute_sequence' readonly=False store=True
Public methods (1)
  • default_packaging_level_id(self)

New fields (8)
  • active Boolean
    default=True
  • code Char
    required=True
  • default_lang_id Many2one → res.lang
    default=<expr> required=True string='Default Language' args: 'res.lang'
  • has_gtin Boolean
  • is_default Boolean
  • name Char
    required=True translate=True
  • name_policy Selection
    default='by_package_level' help="config to set name of product packaging. Three options:- The package level name (default)- The package type name (if groups='stock.group_tracking_lot')- user defined: free text value defined" selection=[('by_package_level', 'Package Level Name'), ('by_package_type', 'Package Type Name'), ('user_defined', 'User Defined')]
  • sequence Integer
    required=True
Public methods (1)
  • name_get(self)

New fields (1)
  • packaging_level_id Many2one → product.packaging.level
    default=<expr> args: 'product.packaging.level'
Public methods (0)

No public methods.