Skip to main content

Push-style transfers between warehouses of the same company.

Project description

Odoo Community Association

Stock Inter-Warehouse Transfer

Beta License: AGPL-3 OCA/stock-logistics-workflow Translate me on Weblate Try me on Runboat

This module adds an Inter-Warehouse Transfer document that lets users explicitly push stock from one warehouse to another within the same company.

Confirming a transfer creates exactly two pickings (OUT at the source warehouse, IN at the destination warehouse) connected through the company’s internal transit location. The document state is automatically derived from the underlying picking states and supports backorders.

To keep this the only path for moving stock across warehouses, the module also blocks any internal stock move whose source and destination locations belong to different warehouses, forcing users through the Inter-Warehouse Transfer document.

Table of contents

Use Cases / Context

Business Need

Companies with multiple warehouses sometimes need to initiate stock transfers based on an operational decision — not triggered by procurement demand. Typical use cases:

  • Proactively balancing inventory between locations.

  • Reviewing and confirming both the outgoing and incoming legs before any stock moves.

  • Tracing the full inter-warehouse operation as a single document.

Odoo’s standard resupply routes are demand-driven and do not provide a single document grouping both legs of a transfer.

Approach

On confirmation, the transfer creates exactly two pickings connected through the company’s internal transit location: an OUT picking at the source warehouse and an IN picking at the destination warehouse. Both use dedicated operation types (IW / IWR) created lazily per warehouse, keeping inter-warehouse moves out of regular delivery and receipt queues.

The OCA module stock_warehouse_resupply_route_push (v18.0+, OCA/stock-logistics-workflow) provides a similar capability via push rules, but the IN picking is only created after the OUT picking is validated — making it impossible to review both legs before stock moves.

Useful Information

  • Requires an Internal Transit Location configured on the company (Inventory > Configuration > Warehouses).

  • Designed for single-company, multi-warehouse setups.

  • Source and destination locations default to each warehouse’s main stock location and can be overridden per transfer.

  • Works with Odoo’s standard backorder flow: partial validations create backorders automatically linked to the same transfer document.

Usage

Go to Inventory > Operations > Inter-Warehouse Transfers and create a new transfer:

  1. Select From Warehouse and To Warehouse (same company).

  2. Optionally override the From Location and To Location (they default to each warehouse’s main stock location).

  3. Add one or more product lines with quantities.

  4. Click Confirm.

Two stock pickings are created automatically — an OUT picking at the source warehouse and an IN picking at the destination warehouse, connected through the company’s internal transit location. Use the Transfers smart button to open them.

Validate the OUT picking when the goods leave the source warehouse. The transfer moves to In Transit. Validate the IN picking when the goods arrive at the destination. The transfer moves to Done.

Partial validation creates backorders that are automatically linked to the same transfer document.

A confirmed transfer stays editable: changing a line quantity, adding a line or removing one propagates to the stock moves of both legs. The Shipped and Received columns show how much of each line is already validated.

  • Increasing a quantity extends the open moves. If a leg has no open picking left — for instance the OUT was already validated — a new picking is created for the additional quantity.

  • Decreasing a quantity reduces the open moves, and cancels them when it reaches zero. A quantity cannot be decreased below what is already validated on that leg; create a return instead.

  • Removing a line cancels its moves. A line that is already partly validated cannot be removed.

Internal transfers between locations of different warehouses are no longer allowed outside this document: attempting to create such an internal move raises a validation error asking to use an Inter-Warehouse Transfer instead.

Known issues / Roadmap

  • Inter-company transfers (source and destination warehouses belonging to different companies) are not yet supported. Both warehouses must currently belong to the same company.

  • Decreasing a line below the quantity already validated on a leg is blocked rather than reversed: the return has to be created manually.

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.

Do not contact contributors directly about support or help with technical issues.

Credits

Authors

  • ForgeFlow S.L.

Contributors

Maintainers

This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainer:

GuillemCForgeFlow

This module is part of the OCA/stock-logistics-workflow project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file odoo_addon_stock_interwarehouse_transfer-17.0.1.0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for odoo_addon_stock_interwarehouse_transfer-17.0.1.0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 22bb9904b3461bc10b74743b3656ca97d096bcd518c6e9ebc27bc5f9ad292a0f
MD5 cece42145bf47dba85ef7ffa1fd6af63
BLAKE2b-256 7be531e94e25dee375a1e5b445a1c3aab429626e7b07ad63f31ec0acb9c768b1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page