diff --git a/content/applications/inventory_and_mrp/inventory/product_management/configure.rst b/content/applications/inventory_and_mrp/inventory/product_management/configure.rst index 402c4c33a9..4dbc7021f2 100644 --- a/content/applications/inventory_and_mrp/inventory/product_management/configure.rst +++ b/content/applications/inventory_and_mrp/inventory/product_management/configure.rst @@ -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) `: 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.* + +- :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 + + * - 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. + * - Smooth barcode operations + - Not available. + - 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 + ` 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 + 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). + - Barcodes set at the packaging type level (e.g., for a pack of 6). + * - Reusability + - Not applicable. + - Can be disposable or reusable, configured via the :ref:`Package Use + ` 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 + ` 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. + +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. + +Capturing product information using barcode +------------------------------------------- + +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 +`, 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. + +.. _inventory/product_management/lots-uom: + +Tracking different units of measure in storage +---------------------------------------------- + +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 +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: diff --git a/content/applications/inventory_and_mrp/inventory/product_management/configure/package.rst b/content/applications/inventory_and_mrp/inventory/product_management/configure/package.rst index a994d4d673..271df2dc98 100644 --- a/content/applications/inventory_and_mrp/inventory/product_management/configure/package.rst +++ b/content/applications/inventory_and_mrp/inventory/product_management/configure/package.rst @@ -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) + +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 diff --git a/content/applications/inventory_and_mrp/inventory/product_management/configure/package/move-entire.png b/content/applications/inventory_and_mrp/inventory/product_management/configure/package/move-entire.png new file mode 100644 index 0000000000..acb60ad331 Binary files /dev/null and b/content/applications/inventory_and_mrp/inventory/product_management/configure/package/move-entire.png differ