Add an optional Tray Type on Stock Locations. A tray type defines a number of columns and rows. A location with a tray type becomes a tray, and sub-locations are automatically created according to the columns and rows of the tray type
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Turn a stock location into a tray with a grid of cells. Odoo automatically creates one sub-location per cell, shows a visual grid of the tray, and lets you open a cell by clicking it.
This module adds a new concept of "tray type" to Odoo. A tray type describes a physical tray: its name, code, number of rows and columns, and optionally its width, depth and height in millimetres. Tray types are managed from Inventory > Configuration > Warehouse Management > Location Tray Types, where you can also see the locations using a given tray type.
On a stock location, a new "Tray" section lets you pick a tray type. As soon as you do, Odoo automatically creates one child location per cell of the grid, named using a configurable format (by default x01y01, x02y01, and so on). The location form shows a visual grid of the tray: empty cells are white, cells containing stock are highlighted, and clicking a cell opens that cell's location.
Business rules are enforced: a location that already has sub-locations cannot be turned into a tray, a tray type cannot be archived while it is used by locations, and its number of rows or columns cannot be changed once it is in use. Changing the cell name format regenerates the cell names.
In transfer operations, buttons "Show Source Tray" and "Show Destination Tray" open a small window displaying the source or destination tray grid, so operators can see which cells are occupied. These buttons are only shown for users allowed to work with multiple locations.
Depends on
Required by other modules
Menus it adds
Models and fields (3)
- stock.location · extends an existing modeltray_type_id, cell_name_format (Name Format for Cells), cell_in_tray_type_id (Cell Tray Type), tray_cell_contains_stock
- stock.move.line · extends an existing modelshow_tray_source_location, show_tray_destination_location
- stock.location.tray.type · new modelcode, cols, name, rows, depth, width, active, height, location_ids, depth_per_cell, width_per_cell
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 3 confirmed, 6 with no information of 9 versions.
Sources · Odoo 14.0
Confirmed on 2026-11-03 in branch 14.0 of OCA/stock-logistics-warehouse.
terminal Installation and usage
OCA documentation · Odoo 18.0Configuration
Source · Odoo 18.0General
In Inventory Settings, you must have:
> - Storage Locations
Tray types
Tray types can be configured in the Inventory settings. A tray type defines how much cells a tray can hold. It is a square or rectangle matrix of n cols * m rows.
Locations
The tray type can be configured in Stock Locations.
The tray type of a tray can be changed as long as none of its cell contains products. When changed, it archives the cells and creates new ones as configured on the new tray type.
The matrix widget on Tray locations can be clicked to reach a sub-location. Blue squares represent the locations that contain goods.
No verified information in OCA: Installation, Usage.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.