Sell Only By Packaging

sell_only_by_packaging
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/18.0/sell_only_by_packaging
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, BCIM
COMMITTERS
COMMITTERSAlexandre Fayolle, Weblate, OCA-git-bot, Simone Orsi, oca-ci, trisdoan
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/product-attribute:
    - product_packaging_level_salable
    - product_packaging_level
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
    - sale_stock
    - sale
    - sales_team
    - account_payment
    - account
    - onboarding
    - analytic
    - payment
    - utm
    - stock_account
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provides different configuration option to manage packagings
on sale orders.

The creation/update of sale order line will be blocked (by constraints)
if the data on the sale.order.line does not fit with the configuration
of the product's packagings.

It's also possible to force the quantity to sell during
creation/modification of the sale order line if the "Force sale
quantity" is ticked on the packaging and the "Sell only by packaging" is
ticked on product.

For example, if your packaging is set to sell by 5 units and the
employee fill the quantity with 3, the quantity will be automatically
replaced by 5 (it always rounds up).

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
product_packaging_form_view_inherit product.packaging.form.view.inherit product.packaging field Inherits product.product_packaging_form_view
product_packaging_tree_view_inherit product.packaging.list.view.inherit product.packaging field Inherits product.product_packaging_tree_view
product_product_tree_view product.product.list.inherit product.product field Inherits product.product_product_tree_view
product_template_form_view product.template.form.view product.template div Inherits product.product_template_form_view
product_template_tree_view product.template.list.inherit product.template field Inherits product.product_template_tree_view
Models touched (5)

New fields (1)
  • force_sale_qty Boolean
    help='Determine if during the creation of a sale order line, the quantity should be forced with a multiple of the packaging.\nExample:\nYou sell a product by packaging of 5 products.\nWhen the user will put 3 as quantity, the system can force the quantity to the superior unit (5 for this example).' string='Force sale quantity'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • min_sellable_qty Float
    compute='_compute_variant_min_sellable_qty' help='Minimum sellable quantity, according to the available packagings, if Only Sell by Packaging is set.'
Public methods (0)

No public methods.

New fields (2)
  • min_sellable_qty Float
    compute='_compute_template_min_sellable_qty' help='Minimum sellable quantity, according to the available packagings, if Only Sell by Packaging is set.'
  • sell_only_by_packaging Boolean
    company_dependent=True copy=False default=False help='Restrict the usage of this product on sale order lines without packaging defined' string='Only sell by packaging'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/16.0/sell_only_by_packaging
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, BCIM
COMMITTERS
COMMITTERSJairo Llopis, Weblate, OCA-git-bot, Simone Orsi, oca-ci, duongtq, cyrilmanuel
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:45
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/product-attribute:
    - product_packaging_level_salable
    - product_packaging_level
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
    - sale_stock
    - sale
    - sales_team
    - account_payment
    - account
    - analytic
    - payment
    - utm
    - stock_account
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES openupgradelib
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
product_packaging_form_view_inherit product.packaging.form.view.inherit product.packaging field Inherits product.product_packaging_form_view
product_packaging_tree_view_inherit product.packaging.tree.view.inherit product.packaging field Inherits product.product_packaging_tree_view
product_product_tree_view product.product.tree.inherit product.product field Inherits product.product_product_tree_view
product_template_form_view product.template.form.view product.template div Inherits product.product_template_form_view
product_template_tree_view product.template.tree.inherit product.template field Inherits product.product_template_tree_view
Models touched (5)

New fields (1)
  • force_sale_qty Boolean
    help='Determine if during the creation of a sale order line, the quantity should be forced with a multiple of the packaging.\nExample:\nYou sell a product by packaging of 5 products.\nWhen the user will put 3 as quantity, the system can force the quantity to the superior unit (5 for this example).' string='Force sale quantity'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • min_sellable_qty Float
    compute='_compute_variant_min_sellable_qty' help='Minimum sellable quantity, according to the available packagings, if Only Sell by Packaging is set.'
Public methods (0)

No public methods.

New fields (2)
  • min_sellable_qty Float
    compute='_compute_template_min_sellable_qty' help='Minimum sellable quantity, according to the available packagings, if Only Sell by Packaging is set.'
  • sell_only_by_packaging Boolean
    company_dependent=True copy=False default=False help='Restrict the usage of this product on sale order lines without packaging defined' string='Only sell by packaging'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.