Stock Move Source Relocation

stock_move_source_relocate
REPOSITORY
REPOSITORYOCA/stock-logistics-workflow
GIT
GIThttps://github.com/OCA/stock-logistics-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-workflow/tree/18.0/stock_move_source_relocate
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, BCIM
COMMITTERS
COMMITTERSJacques-Etienne Baudoux, Denis Roussel, Akim Juillerat, Ruchir Shukla, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_location_is_sublocation
    - stock_route_location_source
odoo/odoo:
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Relocate source location of unconfirmed moves

Add relocation rules for moves.

Some use cases:

- Handle all the replenishments at the same place
- Trigger minimum stock rules or DDMRP buffers in one location

Behavior:

- When we try to assign a stock move and the move is not available, a
  rule matching the source location (sub-locations included), the
  picking type and an optional domain is searched
- If a relocation is found, the move source location is updated with the
  new one
- If the move was partially available, it is split in 2 parts:

> - one available part which keeps its source location
> - one confirmed part which is updated with the new source location

Notes:

Goes well with `stock_available_to_promise_release`. When using the
mentioned module, we assume that we release moves (which creates the
whole chain of moves) only when we know that we have the quantities in
stock (otherwise the module splits the delivery). So generally, we have
the goods are available, but maybe not at the correct place: this module
is handy to organize internal replenishments.

Compatible with `stock_dynamic_routing`: when the source location is
updated by this module, a dynamic routing may be applied.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_stock_source_relocate_form stock.source.relocate.form stock.source.relocate form New
view_stock_source_relocate_search stock.source.relocate.search stock.source.relocate search New
view_stock_source_relocate_tree stock.source.relocate stock.source.relocate list New
Models touched (2)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr>
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • picking_type_id Many2one → stock.picking.type
    comodel_name='stock.picking.type' required=True
  • relocate_location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • rule_domain Char
    default=[] help='Domain based on Stock Moves, to define if the rule is applicable or not.'
  • rule_message Html
    compute='_compute_rule_message'
  • sequence Integer
    default=<expr>
Public methods (1)
  • name_get(self)
REPOSITORY
REPOSITORYOCA/wms
GIT
GIThttps://github.com/OCA/wms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/wms/tree/14.0/stock_move_source_relocate
VERSION
VERSION 1.3.1
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, BCIM
COMMITTERS
COMMITTERSJacques-Etienne Baudoux, Thierry Ducrest, Sébastien BEAU, oca-travis, Weblate, OCA-git-bot, Michael Tietz, oca-ci, Dũng (Trần Đình)
WEBSITE
WEBSITEhttps://github.com/OCA/wms
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_helper
odoo/odoo:
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_stock_source_relocate_form stock.source.relocate.form stock.source.relocate form New
view_stock_source_relocate_search stock.source.relocate.search stock.source.relocate search New
view_stock_source_relocate_tree stock.source.relocate stock.source.relocate tree New
Models touched (2)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr>
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • picking_type_id Many2one → stock.picking.type
    comodel_name='stock.picking.type' required=True
  • relocate_location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • rule_domain Char
    default=[] help='Domain based on Stock Moves, to define if the rule is applicable or not.' string='Rule Domain'
  • rule_message Html
    compute='_compute_rule_message'
  • sequence Integer
    default=<expr>
Public methods (1)
  • name_get(self)
REPOSITORY
REPOSITORYOCA/wms
GIT
GIThttps://github.com/OCA/wms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/wms/tree/13.0/stock_move_source_relocate
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSGuewen Baconnier, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Simone Orsi
WEBSITE
WEBSITEhttps://github.com/OCA/wms
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_helper
odoo/odoo:
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_stock_source_relocate_form stock.source.relocate.form stock.source.relocate form New
view_stock_source_relocate_search stock.source.relocate.search stock.source.relocate search New
view_stock_source_relocate_tree stock.source.relocate stock.source.relocate tree New
Models touched (2)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr>
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • picking_type_id Many2one → stock.picking.type
    comodel_name='stock.picking.type' required=True
  • relocate_location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • rule_domain Char
    default=[] help='Domain based on Stock Moves, to define if the rule is applicable or not.' string='Rule Domain'
  • rule_message Html
    compute='_compute_rule_message'
  • sequence Integer
    default=<expr>
Public methods (1)
  • name_get(self)
REPOSITORY
REPOSITORYOCA/wms
GIT
GIThttps://github.com/OCA/wms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/wms/tree/10.0/stock_move_source_relocate
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYWarehouse Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSGuewen Baconnier, Laurent Mignon (ACSONE), oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/wms
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - report
    - procurement
    - barcodes
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_stock_source_relocate_form stock.source.relocate.form stock.source.relocate form New
view_stock_source_relocate_search stock.source.relocate.search stock.source.relocate search New
view_stock_source_relocate_tree stock.source.relocate stock.source.relocate tree New
Models touched (3)

New fields (0)

No new fields.

Public methods (1)
  • is_sublocation_of(self, others)
    Return True if self is a sublocation of at least one other

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr>
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • picking_type_id Many2one → stock.picking.type
    comodel_name='stock.picking.type' required=True
  • relocate_location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • rule_domain Char
    default=[] help='Domain based on Stock Moves, to define if the rule is applicable or not.' string='Rule Domain'
  • rule_message Html
    compute='_compute_rule_message'
  • sequence Integer
    default=<expr>
Public methods (1)
  • name_get(self)