TIP: You can type at any time to perform a new search.
Stock Inter-Warehouse Transfer
stock_interwarehouse_transfer · OCA/stock-logistics-workflow
- Repository
- OCA/stock-logistics-workflow · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Inventory
- Folder size
- 0.1 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/stock-logistics-workflow
- Last tracking update
- 2026-07-23 17:05:36
- Authors
- Odoo Community Association (OCA), ForgeFlow S.L.
- Maintainers
- Odoo Community Association (OCA), ForgeFlow S.L.
- Committers
- OCA-git-bot, oca-ci, Andreu Orensanz
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
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.
Code Analysis ⓘ
Views touched (2)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_stock_interwarehouse_transfer_form |
stock.interwarehouse.transfer.form | stock.interwarehouse.transfer | form | New |
view_stock_interwarehouse_transfer_list |
stock.interwarehouse.transfer.list | stock.interwarehouse.transfer | tree | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (5)
New fields (12)
-
company_idMany2one → res.companydefault=<expr> args: 'res.company' -
line_idsOne2many → stock.interwarehouse.transfer.linestring='Products' args: 'stock.interwarehouse.transfer.line', 'transfer_id' -
location_dest_idMany2one → stock.locationcompute='_compute_locations'precompute=Truereadonly=Falsestore=Truestring='To Location' args: 'stock.location' -
location_idMany2one → stock.locationcompute='_compute_locations'precompute=Truereadonly=Falsestore=Truestring='From Location' args: 'stock.location' -
nameCharcopy=Falsedefault='/'readonly=True -
picking_countIntegercompute='_compute_picking_count'string='Transfer Count' -
picking_idsOne2many → stock.pickingcopy=Falsestring='Transfers' args: 'stock.picking', 'interwarehouse_transfer_id' -
procurement_group_idMany2one → procurement.groupcopy=Falsestring='Procurement Group' args: 'procurement.group' -
scheduled_dateDatetime -
stateSelectioncompute='_compute_state'default='draft'selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('in_transit', 'In Transit'), ('done', 'Done'), ('cancelled', 'Cancelled')]store=True -
warehouse_from_idMany2one → stock.warehousecheck_company=Truerequired=Truestring='From Warehouse' args: 'stock.warehouse' -
warehouse_to_idMany2one → stock.warehousecheck_company=Truerequired=Truestring='To Warehouse' args: 'stock.warehouse'
-
action_cancel(self) -
action_confirm(self) -
action_view_pickings(self) -
create(self, vals_list)@api.model_create_multi
New fields (8)
-
move_idsOne2many → stock.movestring='Stock Moves' args: 'stock.move', 'interwh_transfer_line_id' -
product_idMany2one → product.productdomain=[('type', '!=', 'service')]required=True args: 'product.product' -
product_uomMany2one → uom.uomcompute='_compute_product_uom'precompute=Truereadonly=Falsestore=Truestring='Unit of Measure' args: 'uom.uom' -
product_uom_qtyFloatdefault=1.0required=Truestring='Quantity' -
qty_receivedFloatcompute='_compute_qty_progress'digits='Product Unit of Measure'string='Received' -
qty_shippedFloatcompute='_compute_qty_progress'digits='Product Unit of Measure'string='Shipped' -
stateSelectionrelated='transfer_id.state' -
transfer_idMany2one → stock.interwarehouse.transferondelete='cascade'required=True args: 'stock.interwarehouse.transfer'
-
create(self, vals_list)@api.model_create_multi -
unlink(self) -
write(self, vals)
New fields (1)
-
interwh_transfer_line_idMany2one → stock.interwarehouse.transfer.lineindex=Trueondelete='set null'string='Inter-WH Transfer Line' args: 'stock.interwarehouse.transfer.line'
No public methods.
New fields (1)
-
interwarehouse_transfer_idMany2one → stock.interwarehouse.transfercopy=Falsestring='Inter-WH Transfer' args: 'stock.interwarehouse.transfer'
No public methods.
New fields (2)
-
in_inter_wh_type_idMany2one → stock.picking.typecheck_company=Truecopy=Falsestring='Inter-WH In Type' args: 'stock.picking.type' -
out_inter_wh_type_idMany2one → stock.picking.typecheck_company=Truecopy=Falsestring='Inter-WH Out Type' args: 'stock.picking.type'
No public methods.