TIP: You can type at any time to perform a new search.
Stock Warehouse Flow
stock_warehouse_flow · OCA/wms
- Repository
- OCA/wms · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Warehouse Management
- Folder size
- 0.21 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/wms
- Last tracking update
- 2026-08-07 08:23:04
- Authors
- Camptocamp, Odoo Community Association (OCA), BCIM
- Maintainers
- Camptocamp, Odoo Community Association (OCA), BCIM
- Committers
- Weblate, OCA-git-bot, oca-ci, Antoni Marroig Campomar
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
This module introduces the concept of routing flows in order to manage different delivery routes for a warehouse. The default behavior of Odoo allows you to have only one delivery route per warehouse (with one, two or three steps). With this module, you are now able to manage multiple delivery routes (having their own rules and operation types), the right one being selected automatically based on some criterias, like the carrier and any attribute of the stock move to process. This allows you to define a delivery route based on the type of goods to ship, for instance: - whole pallet (pick + ship) - cold chain goods - dangerous goods 
Code Analysis ⓘ
Views touched (6)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
stock_location_route_tree |
stock.location.route.tree.inherit | stock.route | tree | Inherits stock.stock_location_route_tree |
stock_warehouse_flow_view_form |
stock.warehouse.flow.form | stock.warehouse.flow | form | New |
stock_warehouse_flow_view_search |
stock.warehouse.flow.search | stock.warehouse.flow | search | New |
stock_warehouse_flow_view_tree |
stock.warehouse.flow.tree | stock.warehouse.flow | tree | New |
view_delivery_carrier_form |
delivery.carrier.form.inherit | delivery.carrier | form | Inherits delivery.view_delivery_carrier_form |
view_warehouse |
stock.warehouse.form.inherit | stock.warehouse | form | Inherits stock.view_warehouse |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (5)
New fields (1)
-
flow_idsMany2many → stock.warehouse.flowcolumn1='delivery_carrier_id'column2='stock_warehouse_flow_id'comodel_name='stock.warehouse.flow'copy=Falserelation='delivery_carrier_stock_warehouse_flow_rel'string='Routing flows'
-
action_view_flows(self)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (2)
-
applicable_flow_idsOne2many → stock.warehouse.flowcomodel_name='stock.warehouse.flow'compute='_compute_applicable_flow_ids'string='Applicable Flows' -
flow_idMany2one → stock.warehouse.flowcomodel_name='stock.warehouse.flow'ondelete='set null'string='Routing Flow'
No public methods.
New fields (1)
-
flow_idsOne2many → stock.warehouse.flowcomodel_name='stock.warehouse.flow'inverse_name='warehouse_id'string='Flows'
-
action_view_all_flows(self)
New fields (26)
-
activeBooleandefault=True -
carrier_idsMany2many → delivery.carriercolumn1='stock_warehouse_flow_id'column2='delivery_carrier_id'comodel_name='delivery.carrier'copy=Falserelation='delivery_carrier_stock_warehouse_flow_rel'string='With carriers' -
company_idMany2onerelated='warehouse_id.company_id' -
delivery_route_idMany2one → stock.routecomodel_name='stock.route'copy=Falseindex=Trueondelete='set null'readonly=Truestring='Delivery Route' -
delivery_stepsSelectiondefault='ship_only'help='Outgoing route to follow'required=Trueselection=[('ship_only', 'Deliver goods directly (1 step)'), ('pick_ship', 'Send goods in output and then deliver (2 steps)'), ('pick_pack_ship', 'Pack goods, send goods in output and then deliver (3 steps)')]string='Outgoing Shipments' -
from_location_dest_idMany2one → stock.locationcomodel_name='stock.location'compute='_compute_from_location_dest_id' -
from_location_src_idMany2one → stock.locationcomodel_name='stock.location'compute='_compute_from_location_src_id' -
from_picking_type_idMany2one → stock.picking.typecomodel_name='stock.picking.type'domain="[('code', '=', 'outgoing')]"index=Trueondelete='restrict'required=Truestring='From operation type' -
impacted_route_idsOne2many → stock.routecomodel_name='stock.route'compute='_compute_impacted_route_ids'string='Impacted Routes' -
move_domainCharcopy=Falsedefault=[]help='Domain based on Stock Moves, to define if the routing flow is applicable or not.'string='Source Routing Domain' -
nameCharrequired=True -
out_type_idMany2onehelp="Same than 'To operation type' field, displayed here to get a global overview of the flow configuration."readonly=Truerelated='to_picking_type_id'string='Out Type' -
output_stock_loc_idMany2onehelp="Same than 'To output location' field, displayed here to get a global overview of the flow configuration."readonly=Truerelated='to_output_stock_loc_id'string='Output Location' -
pack_stock_loc_idMany2one → stock.locationcheck_company=True args: 'stock.location', 'Packing Location' -
pack_type_idMany2one → stock.picking.typecheck_company=True args: 'stock.picking.type', 'Pack Type' -
pick_type_idMany2one → stock.picking.typecheck_company=True args: 'stock.picking.type', 'Pick Type' -
qtyFloatdefault=0help="If a qty is set the flow can be applied on moves where the move's qty >= the qty set on the flow\n" -
rule_idsOne2manyrelated='delivery_route_id.rule_ids'string='Rules' -
sequenceIntegerdefault=10 -
sequence_prefixCharhelp="Used to generate the default prefix of new operation types. (e.g. 'DG' => 'WH/OUT/DG/')" -
split_methodSelectionhelp='Simple => move will be split by the qty of the flow or a multiple of it' args: [('simple', 'Simple')], 'Split method' -
to_output_stock_loc_idMany2one → stock.locationcheck_company=Truecomodel_name='stock.location'ondelete='restrict'string='To output location' -
to_picking_type_idMany2one → stock.picking.typecheck_company=Truecomodel_name='stock.picking.type'domain="[('default_location_dest_id', '=', from_location_dest_id)]"ondelete='restrict'readonly=Truestring='To operation type' -
uom_idMany2one → uom.uomdefault=<expr> args: 'uom.uom', 'Uom' -
warehouse_idMany2one → stock.warehousecomodel_name='stock.warehouse'default=<expr>ondelete='restrict'required=Truestring='Warehouse' -
warningHtmlcompute='_compute_warning'
-
action_generate_route(self) -
apply_on_move(self, move, assign_picking=True) -
onchange_name(self)@api.onchange('name') -
onchange_warehouse_id(self)@api.onchange('warehouse_id') -
split_move(self, move) -
write(self, vals)
Loading…
Loading…