Inter Company Module for Purchase to Sale Order with warehouse

purchase_sale_stock_inter_company
REPOSITORY
REPOSITORYOCA/multi-company
GIT
GIThttps://github.com/OCA/multi-company.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/multi-company/tree/18.0/purchase_sale_stock_inter_company
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSCarlos Lopez, Weblate, OCA-git-bot, oca-ci, cyrilmanuel
WEBSITE
WEBSITEhttps://github.com/OCA/multi-company
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/multi-company:
    - purchase_sale_inter_company
    - account_invoice_inter_company
odoo/odoo:
    - 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
    - purchase
    - sale_stock
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - purchase_stock
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module is a glue module and is auto installed if
purchase_sale_inter_company, sale_stock and purchase_stock modules are
installed. Full purpose description can be found in
purchase_sale_inter_company.

In addition to the features provided by purchase_sale_inter_company, which
automatically creates inter-company Sale Orders from Purchase Orders, this module
extends the functionality by automatically validating the corresponding inter-company
receipts when the Delivery Order is confirmed. During this process, lot/serial numbers
and quantities are synchronized to ensure consistency across companies.

The configuration includes an option to specify a default Warehouse that will be
automatically assigned to Sale Orders generated from Purchase Orders addressed to
this company.

When Company A sends a product tracked by lot or serial number, a new
lot/serial number with the same name is created in Company B to match
it, if one doesn't already exist.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings xpath Inherits purchase_sale_inter_company.res_config_settings_view_form
Models touched (8)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • block_po_manual_picking_validation Boolean
    string='Block manual validation of picking in the destination company'
  • notify_user_id Many2one → res.users
    args: 'res.users', 'User to Notify'
  • sync_picking Boolean
    help='Sync the receipt from the destination company with the delivery from the source company' string='Sync the receipt with the delivery'
  • sync_picking_failure_action Selection
    default='raise' help='Pick action to perform on sync picking failure' string='On sync picking failure' args: SELECTION_SYNC_FAILURE_ACTIONS
  • warehouse_id Many2one → stock.warehouse
    help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company' string='Warehouse For Sale Orders' args: 'stock.warehouse'
Public methods (0)

No public methods.

New fields (5)
  • block_po_manual_picking_validation Boolean
    readonly=False related='company_id.block_po_manual_picking_validation'
  • notify_user_id Many2one → res.users
    help='User to notify incase of sync picking failure.' readonly=False related='company_id.notify_user_id' args: 'res.users'
  • sync_picking Boolean
    help='Sync the receipt from the destination company with the delivery from the source company' readonly=False related='company_id.sync_picking' string='Sync the receipt from the destination company with the delivery'
  • sync_picking_failure_action Selection
    readonly=False related='company_id.sync_picking_failure_action'
  • warehouse_id Many2one → stock.warehouse
    comodel_name='stock.warehouse' help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company.' readonly=False related='company_id.warehouse_id' string='Warehouse for Sale Orders'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (2)
  • intercompany_picking_id Many2one → stock.picking
    comodel_name='stock.picking' copy=False
  • state Selection
    recursive=True
Public methods (1)
  • button_validate(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/multi-company
GIT
GIThttps://github.com/OCA/multi-company.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/multi-company/tree/17.0/purchase_sale_stock_inter_company
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Akretion, Odoo SA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Akretion, Odoo SA
COMMITTERS
COMMITTERSCarlos Lopez, OCA-git-bot, oca-ci, cyrilmanuel
WEBSITE
WEBSITEhttps://github.com/OCA/multi-company
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/multi-company:
    - purchase_sale_inter_company
    - account_invoice_inter_company
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - purchase
    - sale_stock
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - purchase_stock
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module is a glue module and is auto installed if
purchase_sale_inter_company, sale_stock and purchase_stock modules are
installed. Full purpose description can be found in
purchase_sale_inter_company.

In addition to the features provided by purchase_sale_inter_company, which
automatically creates inter-company Sale Orders from Purchase Orders, this module
extends the functionality by automatically validating the corresponding inter-company
receipts when the Delivery Order is confirmed. During this process, lot/serial numbers
and quantities are synchronized to ensure consistency across companies.

The configuration includes an option to specify a default Warehouse that will be
automatically assigned to Sale Orders generated from Purchase Orders addressed to
this company.

When Company A sends a product tracked by lot or serial number, a new
lot/serial number with the same name is created in Company B to match
it, if one doesn't already exist.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings xpath Inherits purchase_sale_inter_company.res_config_settings_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • block_po_manual_picking_validation Boolean
    string='Block manual validation of picking in the destination company'
  • notify_user_id Many2one → res.users
    args: 'res.users', 'User to Notify'
  • sync_picking Boolean
    help='Sync the receipt from the destination company with the delivery from the source company' string='Sync the receipt with the delivery'
  • sync_picking_failure_action Selection
    default='raise' help='Pick action to perform on sync picking failure' string='On sync picking failure' args: SELECTION_SYNC_FAILURE_ACTIONS
  • warehouse_id Many2one → stock.warehouse
    help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company' string='Warehouse For Sale Orders' args: 'stock.warehouse'
Public methods (0)

No public methods.

New fields (5)
  • block_po_manual_picking_validation Boolean
    readonly=False related='company_id.block_po_manual_picking_validation'
  • notify_user_id Many2one → res.users
    help='User to notify incase of sync picking failure.' readonly=False related='company_id.notify_user_id' args: 'res.users'
  • sync_picking Boolean
    help='Sync the receipt from the destination company with the delivery from the source company' readonly=False related='company_id.sync_picking' string='Sync the receipt from the destination company with the delivery'
  • sync_picking_failure_action Selection
    readonly=False related='company_id.sync_picking_failure_action'
  • warehouse_id Many2one → stock.warehouse
    comodel_name='stock.warehouse' help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company.' readonly=False related='company_id.warehouse_id' string='Warehouse for Sale Orders'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (2)
  • intercompany_picking_id Many2one → stock.picking
    comodel_name='stock.picking' copy=False
  • state Selection
    recursive=True
Public methods (1)
  • button_validate(self)
REPOSITORY
REPOSITORYOCA/multi-company
GIT
GIThttps://github.com/OCA/multi-company.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/multi-company/tree/16.0/purchase_sale_stock_inter_company
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Akretion, Odoo SA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Akretion, Odoo SA
COMMITTERS
COMMITTERSJordi Ballester Alomar, JordiMForgeFlow, Weblate, OCA-git-bot, oca-ci, cyrilmanuel, Kev-Roche
WEBSITE
WEBSITEhttps://github.com/OCA/multi-company
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/multi-company:
    - purchase_sale_inter_company
    - account_invoice_inter_company
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - purchase
    - sale_stock
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - purchase_stock
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings xpath Inherits purchase_sale_inter_company.res_config_settings_view_form
Models touched (4)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company' string='Warehouse For Sale Orders' args: 'stock.warehouse'
Public methods (0)

No public methods.

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    comodel_name='stock.warehouse' help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company.' readonly=False related='company_id.warehouse_id' string='Warehouse for Sale Orders'
Public methods (0)

No public methods.

New fields (1)
  • intercompany_picking_id Many2one → stock.picking
    comodel_name='stock.picking'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/multi-company
GIT
GIThttps://github.com/OCA/multi-company.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/multi-company/tree/15.0/purchase_sale_stock_inter_company
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Akretion, Odoo SA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Akretion, Odoo SA
COMMITTERS
COMMITTERSMiquel Raïch, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/multi-company
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/multi-company:
    - purchase_sale_inter_company
    - account_invoice_inter_company
odoo/odoo:
    - 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
    - purchase
    - sale_stock
    - stock_account
    - stock
    - barcodes
    - purchase_stock
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings xpath Inherits purchase_sale_inter_company.res_config_settings_view_form
Models touched (4)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company' string='Warehouse For Sale Orders' args: 'stock.warehouse'
Public methods (0)

No public methods.

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    comodel_name='stock.warehouse' help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company.' readonly=False related='company_id.warehouse_id' string='Warehouse for Sale Orders'
Public methods (0)

No public methods.

New fields (1)
  • intercompany_picking_id Many2one → stock.picking
    comodel_name='stock.picking'
Public methods (1)
  • action_done(self)
REPOSITORY
REPOSITORYOCA/multi-company
GIT
GIThttps://github.com/OCA/multi-company.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/multi-company/tree/13.0/purchase_sale_stock_inter_company
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Akretion, Odoo SA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Akretion, Odoo SA
COMMITTERS
COMMITTERSCarlos Lopez, Weblate, OCA-git-bot, oca-ci, Carolina Fernandez
WEBSITE
WEBSITEhttps://github.com/OCA/multi-company
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/multi-company:
    - purchase_sale_inter_company
    - account_invoice_inter_company
odoo/odoo:
    - 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
    - purchase
    - stock
    - barcodes
    - sale_stock
    - stock_account
    - purchase_stock
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings xpath Inherits purchase_sale_inter_company.res_config_settings_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company' string='Warehouse For Sale Orders' args: 'stock.warehouse'
Public methods (0)

No public methods.

New fields (1)
  • warehouse_id Many2one → stock.warehouse
    comodel_name='stock.warehouse' help='Default value to set on Sale Orders that will be created based on Purchase Orders made to this company.' readonly=False related='company_id.warehouse_id' string='Warehouse for Sale Orders'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (1)
  • intercompany_picking_id Many2one → stock.picking
    comodel_name='stock.picking' copy=False
Public methods (1)
  • action_done(self)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/multi-company
PULL REQUEST
PULL REQUEST[19.0][MIG] purchase_sale_stock_inter_company (#945)