Author: |
Camptocamp, Odoo Community Association (OCA) |
License: |
AGPL-3 |
Branch: |
16.0 |
Repository: |
Gabinete-Digital/wms |
Dependencies: |
stock,
and
stock_helper |
Languages: |
HTML (437, 14.3%),
PO File (203, 6.6%),
Python (2048, 66.9%),
XML (192, 6.3%),
and
reStructuredText (179, 5.9%) |
Other branches: |
10.0,
13.0,
13.0-ocabot-merge-pr-73-by-simahawk-bump-minor,
13.0-ocabot-merge-pr-77-by-simahawk-bump-patch,
13.0-ocabot-merge-pr-84-by-simahawk-bump-patch,
14.0,
and
14.0-old |
Other repositories: |
Change2improve/wms,
DITIntl/wms,
NeatNerdPrime/wms,
OCA/wms,
SeuMarco/wms,
acsone/sale-workflow,
akretion/stock-logistics-warehouse,
avarterroku/wms,
cameldevs/wms,
camptocamp/stock-logistics-warehouse,
camptocamp/wms,
grindtildeath/wms,
guewen/stock-logistics-warehouse,
guewen/wms,
gurneyalex/wms,
jumbamathews/wms,
kmee/wms,
sebalix/wms,
sendalpegat/wms,
and
sunshineLhj/wms |
<h1 class="title">Stock Dynamic Routing</h1>
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/wms/tree/16.0/stock_dynamic_routing"><img alt="OCA/wms" src="https://img.shields.io/badge/github-OCA%2Fwms-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/wms-16-0/wms-16-0-stock_dynamic_routing"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/285/16.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>Standard Stock Routes explain the steps you want to produce whereas the
“Dynamic Routing” defines how operations are grouped according to their final
source and destination location.</p>
<p>This allows for example:</p>
<ul class="simple">
<li>To parallelize transfers in two locations of a warehouse, splitting
them in two different operation type</li>
<li>To define pre-picking (wave) in some sub-locations, then roundtrip picking of
the sub-location waves</li>
</ul>
<p>Context for the use cases:</p>
<p>In the warehouse, you have a High-Bay which requires to place goods in a
handover when you move goods in or out of it. The High-Bay contains many
sub-locations.</p>
<p>A product can be stored either in the High-Bay, either in the Shelving zone.</p>
<p>When picking:</p>
<p>When there is enough stock in the Shelving, you expect the moves to have the
usual Pick(Highbay)-Pack-Ship steps. If the good is picked from the High-Bay, you will
need an extra operation: Pick(Highbay)-Handover-Pack-Ship.</p>
<p>This is what this feature is doing: on the High-Bay location, you define
a "routing rule". A routing rule selects a different operation type for the move.
The extra transfer will have the selected operation type, and be added
dynamically, on reservation, before the chain of moves.</p>
<p>When putting away:</p>
<p>A put-away rule targets the High-Bay location.
An operation Input-Highbay is created. You expect Input-Handover-Highbay.</p>
<p>You can configure a dynamic routing for the put-away on the High-Bay Location.
The operation type of the new Handover move will the one of the matching routing rule,
and its destination will be the destination of the operation type.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="id1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="id2">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<a name="configuration"></a>
<h2><a class="toc-backref" href="#id1">Configuration</a></h2>
<p>In Inventory Settings, you must have:</p>
<blockquote>
<ul class="simple">
<li>Storage Locations</li>
<li>Multi-Warehouses</li>
<li>Multi-Step Routes</li>
</ul>
</blockquote>
<p>A new menu in Inventory Settings allow to create new routing rules:
"Stock Routing".</p>
<p>Create a new routing for a location, then pull or push routing rules.
A pull rule is applied on moves with the same source location (or children).
A push rule is applied on moves with the same destination location (or children).</p>
<p>Rules can exclude moves based on a domain. The order of the rules is important:
the first to match is used.</p>
<a name="usage"></a>
<h2 class="with-subtitle"><a class="toc-backref" href="#id2">Usage</a></h2>
<h2 class="section-subtitle" id="try-on-runbot"><span class="section-subtitle">Try on runbot</span></h2>
<ul class="simple">
<li>In Inventory Settings, activate:<ul>
<li>Storage Locations</li>
<li>Multi-Warehouses</li>
<li>Multi-Step Routes</li>
</ul>
</li>
</ul>
<p>The initial setup in the demo data contains locations:</p>
<ul class="simple">
<li>WH/Stock/Highbay</li>
<li>WH/Stock/Highbay/Bin 1</li>
<li>WH/Stock/Highbay/Bin 2</li>
<li>WH/Stock/Handover</li>
</ul>
<p>The "Highbay" location (and children) is configured to:</p>
<ul class="simple">
<li>create a pull routing transfer from Highbay to Handover when
goods are taken from Highbay (using a new picking type Highbay → Handover)</li>
<li>create a push routing transfer from Handover to Highbay when
goods are put to Highbay (using a new picking type Handover → Highbay)</li>
</ul>
<p>Steps to try the Pull Routing Transfer:</p>
<ul class="simple">
<li>In the main Warehouse, configure outgoing shipments to "Send goods in output and then deliver (2 steps)"</li>
<li>Inventory a product, for instance "[FURN_8999] Three-Seat Sofa", add 50 items in "WH/Stock/Highbay/Bay A/Bin 1", and nowhere else</li>
<li>Create a sales order with 5 "[FURN_8999] Three-Seat Sofa", confirm</li>
<li>You'll have 3 transfers; a new one has been created dynamically for Highbay -> Handover.</li>
</ul>
<p>Steps to try the Push Routing Transfer:</p>
<ul class="simple">
<li>In the "WH/Stock" location, create a Put-Away Strategy with:<ul>
<li>"[DESK0004] Customizable Desk (Aluminium, Black)" to location "WH/Stock/Highbay/Bay A/Bin 1"</li>
<li>"[E-COM06] Corner Desk Right Sit" to location "WH/Stock/Shelf 1"</li>
</ul>
</li>
<li>Create a new purchase order of:<ul>
<li>5 "[DESK0004] Customizable Desk (Aluminium, Black)"</li>
<li>5 "[E-COM06] Corner Desk Right Sit"</li>
</ul>
</li>
<li>Confirm the purchase</li>
<li>You'll have 2 transfers:<ul>
<li>one to move DESK0004 from Supplier → Handover and E-COM06 from Supplier → Shelf 1</li>
<li>one waiting on the other to move DESK0004 from Handover → WH/Stock/Highbay/Bay A/Bin 1 (the final location of the put-away)</li>
</ul>
</li>
</ul>
<a name="bug-tracker"></a>
<h2><a class="toc-backref" href="#id3">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/wms/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/wms/issues/new?body=module:%20stock_dynamic_routing%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
<a name="credits"></a>
<h2><a class="toc-backref" href="#id4">Credits</a></h2>
<a name="authors"></a>
<h3><a class="toc-backref" href="#id5">Authors</a></h3>
<ul class="simple">
<li>Camptocamp</li>
</ul>
<a name="contributors"></a>
<h3><a class="toc-backref" href="#id6">Contributors</a></h3>
<ul class="simple">
<li>Joël Grand-Guillaume <<a class="reference external" href="mailto:joel.grandguillaume@camptocamp.com">joel.grandguillaume@camptocamp.com</a>></li>
<li>Guewen Baconnier <<a class="reference external" href="mailto:guewen.baconnier@camptocamp.com">guewen.baconnier@camptocamp.com</a>></li>
<li>Jacques-Etienne Baudoux (BCIM) <<a class="reference external" href="mailto:je@bcim.be">je@bcim.be</a>></li>
<li>Akim Juillerat <<a class="reference external" href="mailto:akim.juillerat@camptocamp.com">akim.juillerat@camptocamp.com</a>></li>
</ul>
<a name="maintainers"></a>
<h3><a class="toc-backref" href="#id7">Maintainers</a></h3>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/wms/tree/16.0/stock_dynamic_routing">OCA/wms</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>