Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ADD] inventory: compare packs and uom #11424

Open
wants to merge 1 commit into
base: 16.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,166 @@
:nosearch:
:show-content:
:hide-page-toc:

.. |UoM| replace:: :abbr:`UoM (Unit of Measure)`
.. |UoMs| replace:: :abbr:`UoMs (Units of Measure)`


=================
Configure product
=================

A group of products in Odoo can be further defined using:

- :doc:`Units of measure (UoM) <configure/uom>`: a standard quantity for specifying product amounts
(e.g., meters, yards, kilograms). Enables automatic conversion between measurement systems in
Odoo, such as centimeters to feet.

- *Ex: Purchasing fabric measured in meters but receiving it in yards from a vendor.*
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this, and the following examples, be reformatted as 'Example' admonitions? What are your thoughts?


- :doc:`configure/package`: A physical container used to group products together, regardless of
whether they are the same or different.

- *Ex: A box containing assorted items for delivery, or a storage box of two hundred buttons on a
shelf.*

- :doc:`configure/packaging`: groups the *same* products together to receive or sell them in
specified quantities.

- *Ex: Cans of soda sold in packs of six, twelve, or twenty-four.*

Comparison
==========

This table provides a detailed comparison of units of measure, packages, and packaging to help
businesses evaluate which best suits their requirements.

.. list-table::
:header-rows: 1
:stub-columns: 1

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the following table, I'd suggest considering the removal of periods attached to incomplete sentences; falling in line with our formatting guidelines when dealing with such explanatory lines (e.g. removing periods when a complete sentence isn't used following a colon). Just something to consider during your revision

* - Feature
- Unit of measure
- Packages
- Packaging
* - Purpose
- Standardized measurement for product units (e.g., cm, lb, L).
- Tracks the specific physical container and its contents.
- Groups a fixed number of items together for easier management (e.g., packs of 6, 12 or 24).
* - Product uniformity
- Defined per product; saved as one |UoM| in the database.
- Allows mixed products.
- Same products only.
* - Flexible
- Converts between vendor/customer |UoMs| and database |UoM|.
- Items can be added or removed from the container.
- Quantities are fixed (e.g., always packs of 6, 12 or 24).
* - Complexity
- Simplest for unit conversions.
- More complex due to container-level inventory tracking.
- Simpler; suitable for uniform product groupings.
* - Inventory tracking
- Tracks product quantities within the warehouse in the specific |UoM| defined in the product
form.
- Tracks package location and contents within the warehouse.
- Tracks grouped quantities but not individual items' locations.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Tracks grouped quantities but not individual items' locations.
- Tracks grouped quantities, but not individual items' locations.

OPTIONAL; added comma to enhance the pacing of the sentence

* - Smooth barcode operations
- Not available.
- Requires scanning both the package and individual items for reception. (even if there are 30
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Requires scanning both the package and individual items for reception. (even if there are 30
- Requires scanning both the package and individual items for reception (even if there are 30

items in a package). Can enable the :ref:`Move Entire Packages
<inventory/product_management/move-entire-pack>` feature to update the package's contained
items' locations, when moving the package
- Scanning a packaging barcode automatically records all included units. (e.g., 1 pack = 12
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Scanning a packaging barcode automatically records all included units. (e.g., 1 pack = 12
- Scanning a packaging barcode automatically records all included units. (e.g. 1 pack = 12

only need the comma after 'e.g.' when more than one example follows.

units).
* - Product lookup
- Not available.
- Scanning a product's barcode identifies its typical storage location in the Odoo database
- Barcode identifies grouped quantity, not storage location.
* - Unique barcodes
- Not available.
- Unique barcodes for individual packages (e.g., Pallet #12).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Unique barcodes for individual packages (e.g., Pallet #12).
- Unique barcodes for individual packages (e.g. Pallet #12).

same reasoning as above

- Barcodes set at the packaging type level (e.g., for a pack of 6).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Barcodes set at the packaging type level (e.g., for a pack of 6).
- Barcodes set at the packaging type level (e.g. for a pack of 6).

Same reasoning as above

* - Reusability
- Not applicable.
- Can be disposable or reusable, configured via the :ref:`Package Use
<inventory/warehouses_storage/cluster-pack>` field.
- Disposable only.
* - Container weight
- Not applicable.
- Weight of the container itself is included in the *Shipping Weight* field of a package
(:menuselection:`Inventory app --> Products --> Packages`).
- Weight of the container is defined in the *Package Type* settings.
* - Lot/serial number tracking
- Requires manual adjustments to track |UoMs| via lots. (See :ref:`use case
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Requires manual adjustments to track |UoMs| via lots. (See :ref:`use case
- Requires manual adjustments to track |UoMs| via lots. (See :ref:`use case

you may want to consider using a more descriptive label for the hyperlink here -- just a suggestion

<inventory/product_management/lots-uom>` for details)
- Applies only to contained products.
- Applies to both contained products and the container.
* - Custom routes
- Routes cannot be set.
- Routes cannot be set.
- Routes can define specific warehouse paths for a particular packaging type.

Use cases
=========

After comparing the various features, consider how these businesses, with various inventory
management and logistics workflows came to their decision.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
management and logistics workflows came to their decision.
management and logistics workflows, came to their decision.

OPTIONAL: added comma to enhance sentence clarity and pacing


Pallets of items using packaging
--------------------------------

A warehouse receives shipments of soap organized on physical pallets, each containing 96 bars. These
pallets are used for internal transfers and are also sold as standalone units. For logistical
purposes, the pallet's weight must be included in the total shipping weight for certain deliveries.
Additionally, the pallet requires a barcode to facilitate tracking, and individual bars of soap must
be tracked as they are removed from the pallet.

After evaluating various options, **packaging** was the most suitable solution. Packaging allows a
barcode to be assigned to the pallet, indicating it is a "pallet type" containing 96 soap bars. This
barcode streamlines operations by automatically registering the grouped quantity. However, there are
important distinctions:

- **Tracking individual items within packaging**. Once items are removed from the pallet, each bar
of soap retains its individual product barcode for separate tracking.
- **Packaging barcodes are type-specific, not unique**. While a barcode can be assigned to represent
a "pallet of 96 soap bars," it does not uniquely identify individual pallets (e.g., Pallet #1,
Pallet #2).
- **Less flexibility for mixed products**. Packaging treats the 96 bars as a single product, which
works well for uniform shipments but does not accommodate mixed or variable quantities.
Comment on lines +122 to +128
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Tracking individual items within packaging**. Once items are removed from the pallet, each bar
of soap retains its individual product barcode for separate tracking.
- **Packaging barcodes are type-specific, not unique**. While a barcode can be assigned to represent
a "pallet of 96 soap bars," it does not uniquely identify individual pallets (e.g., Pallet #1,
Pallet #2).
- **Less flexibility for mixed products**. Packaging treats the 96 bars as a single product, which
works well for uniform shipments but does not accommodate mixed or variable quantities.
- **Tracking individual items within packaging**: Once items are removed from the pallet, each bar
of soap retains its individual product barcode for separate tracking.
- **Packaging barcodes are type-specific, not unique**: While a barcode can be assigned to represent
a "pallet of 96 soap bars," it does not uniquely identify individual pallets (e.g., Pallet #1,
Pallet #2).
- **Less flexibility for mixed products**: Packaging treats the 96 bars as a single product, which
works well for uniform shipments, but does not accommodate mixed or variable quantities.

OPTIONAL: since the sentences that follow the bolded distinctions, I believe it would look best (from a formatting standpoint) to add a colon, instead of a period, to better imply that the sentence following it elaborates on that specific distinction.


Capturing product information using barcode
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Capturing product information using barcode
Capture product information using barcode

SUGGESTION: It's my understanding that we are to avoid using '-ing' words in headers

-------------------------------------------

An Odoo user expects the Barcode app to display the typical storage location of a product by
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
An Odoo user expects the Barcode app to display the typical storage location of a product by
An Odoo user expects the **Barcode** app to display the typical storage location of a product by

scanning a barcode for a container.

**Packages** was the most suitable. When the :ref:`appropriate setting is enabled
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Packages** was the most suitable. When the :ref:`appropriate setting is enabled
*Packages* was the most suitable. When the :ref:`appropriate setting is enabled

optional: opting for italics here to allude to an option within an app. Also, it helps differentiate it from the bolded app name used in the prior sentence.

<inventory/warehouses_storage/enable-package>`, scanning a package barcode displays its contents in
the Barcode app. Packages represent physical containers, enabling detailed tracking of the items
they hold. Scanning a package provides visibility into its contents and facilitates operations like
inventory moves.
Comment on lines +138 to +140
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
the Barcode app. Packages represent physical containers, enabling detailed tracking of the items
they hold. Scanning a package provides visibility into its contents and facilitates operations like
inventory moves.
the **Barcode** app.
Packages represent physical containers, enabling detailed tracking of the items they hold.
Scanning a package provides visibility into its contents and facilitates operations, like inventory
moves.


.. _inventory/product_management/lots-uom:

Tracking different units of measure in storage
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Tracking different units of measure in storage
Track different units of measure in storage

SUGGESTION: It's my understanding that we are to avoid using '-ing' words in headers

----------------------------------------------

A fruit juice distributor tracks multiple |UoMs| for their operations:

- Fruits are purchased in tons.
- Juice is produced and stored in kilograms.
- Small samples are stored in grams for recipe testing.

**Unit of Measure** was most suitable. Odoo automatically converts tons to kilograms during
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**Unit of Measure** was most suitable. Odoo automatically converts tons to kilograms during
*Unit of Measure* was most suitable. Odoo automatically converts tons to kilograms during

optional: opting for italics here to allude to an option within an app. Also, it helps differentiate it from the bolded app name used in the prior sentence.

receipts. However, since Odoo tracks only one |UoM| per product in the database, the company uses
lot numbers to differentiate |UoMs|:

- LOT1: Grams (g)
- LOT2: Kilograms (kg)

Manual inventory adjustments are required to convert between lots, such as subtracting 1 kg from
LOT2 to add 1,000 g to LOT1. While functional, this workaround can be time-consuming and prone to
errors.

.. toctree::
:titlesonly:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,20 @@ the :guilabel:`Operations` heading, activate the :guilabel:`Packages` feature. T
:align: center
:alt: Activate the *Packages* setting in Inventory > Configuration > Settings.

.. _inventory/product_management/move-entire-pack:

When moving packages internally, the *Move Entire Packages* feature can be enabled on an operation
type to update a package's contained item's location upon updating the package's location.

To do that, go to :menuselection:`Inventory app --> Configuration --> Operations Types` and select
the desired operation that this feature will apply to. (May have to set it for multiple)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
the desired operation that this feature will apply to. (May have to set it for multiple)
the desired operation this feature will apply to (may have to set it for multiple).


On the operation type page, in the :guilabel:`Packages` section, tick the :guilabel:`Move Entire
Packages` checkbox.

.. image:: package/move-entire.png
:alt: Activate the Move Entire Packages setting.

.. _inventory/warehouses_storage/pack:

Pack items
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.