Skip to content
PokutsoftPokutsoft
GlobalInventory/Inventory
Wave, Batch & Zone Picking icon

Wave, Batch & Zone Picking

Wave/batch/zone picking: order clustering, pick-list optimization, picker assignment, wave progress

Odoo 20.0Odoo 19.0Odoo 18.0
Compatible with Odoo 18.0 · 19.0 · 20.0
OPL-1 license · 35+ languages · Community & Enterprise
Wave, Batch & Zone Picking for Odoo — preview banner

Wave, Batch & Zone Picking

Wave/batch/zone picking: order clustering, pick-list optimization, picker assignment, wave progress

Wave, Batch & Zone Picking turns a pile of individual transfers into organised, trackable picking waves. Define named warehouse zones with an explicit walking order, cluster eligible transfers into waves by hand or automatically, optimize each wave's pick path by zone and location, and balance workload across a pool of pickers, with wave progress tracked live as transfers complete.

Key Features

Warehouse picking zones

stock.warehouse.zone is a named, sequenced group of stock locations (each location keeps its own in-zone sequence too), giving pickers an explicit walking order; every pick line inherits its zone from its own source location, enforced with a one-location-one-zone constraint.

Create Wave and Auto-Cluster wizards

The Create Wave wizard groups selected or filtered transfers (by channel, carrier, priority, zone or operation type) into one wave; the Auto-Cluster wizard buckets every eligible, unassigned transfer at once by any combination of those criteria, with an optional per-wave size cap that splits an oversized cluster into several sequential waves.

Pure-python clustering and pick-path engine

services/wave_picking.py implements cluster_pickings, optimize_pick_path, compute_progress and assign_pickers as framework-free functions, unit tested without a database.

Pick-list optimization

action_optimize_pick_list re-sequences every pick line of a wave by zone order then in-zone location order, storing the result on each stock.move.line's pick_sequence field so the picker's list is walked in physical order, not raw creation order.

Picker assignment and workload balancing

A picker can be assigned to a wave directly (action_assign_picker), or the Balance Picker Workload wizard spreads a batch of draft, unassigned waves across a pool of pickers with a largest-job-first greedy balancing pass that accounts for each picker's already-assigned load.

Draft to in-progress to done lifecycle

Each wave moves through a draft, in_progress, done (and cancelled) lifecycle validated by validate_transition: starting a wave reserves its transfers and assigns the picker, and it can only be closed once every transfer is done or cancelled.

Live wave progress tracking

Every wave computes its transfer count, completed count and completion percentage live from the state of its underlying transfers via compute_progress.

Traceable cluster criteria

Each wave keeps the channel, carrier, priority and zone filter it was built or auto-clustered from, so it stays clear afterward why a set of transfers ended up grouped together.

Use Cases

✓Group same-carrier or same-channel orders into one wave so a single picker handles them together
✓Auto-cluster every unassigned confirmed transfer into waves at the end of a cutoff window without manual selection
✓Optimize a picker's route through the warehouse by zone and in-zone location order instead of raw pick-line order
✓Spread a morning's batch of draft waves fairly across the available picking team based on job size
✓Track wave completion percentage live on a dashboard as pickers finish their assigned transfers

Screenshots

Wave, Batch & Zone Picking — 03 Zone List in Odoo

03 Zone List

Wave, Batch & Zone Picking — 04 Zone Form in Odoo

04 Zone Form

Wave, Batch & Zone Picking — 05 Wave Creation Wizard in Odoo

05 Wave Creation Wizard

Wave, Batch & Zone Picking — 06 Auto Cluster Wizard in Odoo

06 Auto Cluster Wizard

Why Choose This Module

Because the clustering, pick-path optimization, progress and picker-balancing logic all live in a single framework-free, unit-tested engine, the same decisions that used to require a warehouse management system are available directly inside standard Odoo Inventory, with every wave, zone and pick sequence a plain, reportable Odoo record.

Specifications

  • Compatible: Odoo 18.0 / 19.0 / 20.0
  • License: OPL-1
  • Languages: 35+
  • Author: Pokutsoft
  • Dependencies: stock
  • Support: support@pokutsoft.com
  • Update date: 2026-10-01

Related modules