Sale Order Line Chained Move

sale_order_line_chained_move
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/18.0/sale_order_line_chained_move
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, Marie Lejeune
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module defines a technical field to store the related sale order
line on stock move level in order to get all chained moves on sale order
line side.

In case the stock move contains multiple lines of the same product,
Odoo's default behaviour is to merge those lines into the same one.

With this module, there is the option of preserving one move for each
sale order line, which enables correct tracing of each move back to its
source.

Each stock rule can define how the moves it creates should behave. If at
least one move in the chain of moves is set to preserve one move per
sale order line, all moves in the chain will act accordingly.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_stock_rule_form stock.rule.form stock.rule field Inherits stock.view_stock_rule_form
Models touched (3)

New fields (1)
  • chained_move_ids One2many → stock.move
    comodel_name='stock.move' inverse_name='related_sale_line_id'
Public methods (0)

No public methods.

New fields (1)
  • related_sale_line_id Many2one → sale.order.line
    comodel_name='sale.order.line' index=True
Public methods (0)

No public methods.

New fields (1)
  • preserve_separate_so_lines Boolean
    default=False help="Prevents Odoo's default behaviour of merging moves with the same product." string='Preserve Separate Sale Order Lines'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/15.0/sale_order_line_chained_move
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, David Alonso // Solvos, Marie Lejeune
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:33
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_stock_rule_form stock.rule.form stock.rule field Inherits stock.view_stock_rule_form
Models touched (3)

New fields (1)
  • chained_move_ids One2many → stock.move
    comodel_name='stock.move' inverse_name='related_sale_line_id'
Public methods (0)

No public methods.

New fields (1)
  • related_sale_line_id Many2one → sale.order.line
    comodel_name='sale.order.line' index=True
Public methods (0)

No public methods.

New fields (1)
  • preserve_separate_so_lines Boolean
    default=False help="Prevents Odoo's default behaviour of merging moves with the same product." string='Preserve Separate Sale Order Lines'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/14.0/sale_order_line_chained_move
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSPedro M. Baeza, Denis Roussel, oca-travis, Weblate, OCA-git-bot, oca-ci, Alessandro Uffreduzzi, Tuomas Suutari
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_stock_rule_form stock.rule.form stock.rule field Inherits stock.view_stock_rule_form
Models touched (3)

New fields (1)
  • chained_move_ids One2many → stock.move
    comodel_name='stock.move' inverse_name='related_sale_line_id'
Public methods (0)

No public methods.

New fields (1)
  • related_sale_line_id Many2one → sale.order.line
    comodel_name='sale.order.line' index=True
Public methods (0)

No public methods.

New fields (1)
  • preserve_separate_so_lines Boolean
    default=False help="Prevents Odoo's default behaviour of merging moves with the same product." string='Preserve Separate Sale Order Lines'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/13.0/sale_order_line_chained_move
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV
COMMITTERS
COMMITTERSDenis Roussel, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (3)

New fields (1)
  • chained_move_ids One2many → stock.move
    comodel_name='stock.move' inverse_name='related_sale_line_id'
Public methods (0)

No public methods.

New fields (1)
  • related_sale_line_id Many2one → sale.order.line
    comodel_name='sale.order.line' index=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.