OdooWiki OCA HUB

Stock Picking Reservation Policy

stock_picking_reservation_policy folder_open OCA/stock-logistics-workflow open_in_new
Inventory/Configuration License: AGPL-3

By default, Odoo reserves whatever quantity is available for a transfer's lines (stock moves), leaving the rest as partially available.

This module adds a Reservation Policy that controls this behavior, on the operation type and on the transfer itself:

  • Partial: reserve whatever quantity is available (standard behavior).
  • All or nothing per line: each transfer line (stock move) is reserved only if its full quantity can be reserved from stock; otherwise that line stays entirely unreserved.

The all-or-nothing rule is applied per line (stock.move), independently for each line of the transfer — not on the transfer as a whole. One line may be fully reserved while another, short on stock, stays unreserved.

The transfer defaults its policy from the operation type, and the value can be adjusted on the transfer.

It is similar in spirit to the Shipping Policy (move_type), but it applies at reservation time on each line, rather than at delivery time. It only affects reservation from stock: lines fed by chained (origin) moves keep their standard behavior.

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Adds a Reservation Policy option on operation types and transfers so you can choose to reserve stock partially (standard) or all-or-nothing per line. With all-or-nothing, a transfer line is only reserved if its full quantity is available.

This module gives you a new setting called Reservation Policy, with two choices: Partial and All or nothing per line.

  • Partial keeps Odoo's normal behaviour: reserve whatever quantity is available.
  • All or nothing per line means each line of a transfer is reserved only when its complete quantity can be taken from stock; if not enough stock is available, that line stays completely unreserved. The rule works line by line, so one line can be fully reserved while another stays unreserved.

You set the policy on the operation type (for example Receipts, Delivery Orders, Internal Transfers) next to the existing reservation method. New transfers automatically take the policy from their operation type, and you can still change it directly on the transfer form. On transfers, the field is hidden for incoming operations and cannot be edited once the transfer is cancelled or done.

The module touches the operation type, transfer and stock move records. When a transfer uses the all-or-nothing policy, the system checks the available quantity before reserving and skips the line entirely if the full amount is not there. Lines that already have predecessor moves are not affected by this check.

Depends on

stock

Required by other modules

Models and fields (3)
  • stock.move · extends an existing model
  • stock.picking · extends an existing modelreservation_policy
  • stock.picking.type · extends an existing modelreservation_policy

Text generated by AI (DeepSeek) from reading the Odoo 19.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: 1 confirmed, 8 with no information of 9 versions.

Sources · Odoo 19.0

Confirmed on 2026-11-03 in branch 19.0 of OCA/stock-logistics-workflow.

terminal Installation and usage

OCA documentation · Odoo 19.0

To set the default reservation policy of an operation type:

  • Go to Inventory > Configuration > Operations Types.
  • Open an operation type and set its Reservation Policy (Partial or All or nothing per line).

On a transfer, the Reservation Policy defaults from the operation type and can be adjusted manually before reservation.

When checking availability:

  • Partial: each line reserves whatever quantity is available.
  • All or nothing per line: each transfer line (stock move) is reserved only if its full quantity is available from stock; otherwise that line stays unreserved, leaving its stock available to the other lines. The rule is applied independently on each line, not on the transfer as a whole.

No verified information in OCA: Installation, Configuration.

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.