OdooWiki OCA HUB
Stock License: AGPL-3

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.0

Turn 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

stockbase_sparse_field

Required by other modules

Menus it adds

menu_stock_location_tray_type
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-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 3 confirmed, 6 with no information of 9 versions.

Sources · Odoo 18.0

Confirmed on 2026-11-03 in branch 18.0 of OCA/stock-logistics-warehouse.

terminal Installation and usage

OCA documentation · Odoo 18.0

General

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.

info

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.