mirror of
https://github.com/odoo/documentation.git
synced 2025-12-12 07:29:27 +07:00
[ADD] Inventory: Just In Time logic
closes odoo/documentation#14775
X-original-commit: 41b30c9a19
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
This commit is contained in:
@@ -27,6 +27,13 @@ manufacturing order (MO), with the best choice depending on the business process
|
||||
|
||||
Automatically suggest or generate POs or MOs when stock falls below a minimum level.
|
||||
|
||||
.. card:: Just in time logic
|
||||
:target: replenishment/just_in_time
|
||||
:tag: Recommended
|
||||
:large:
|
||||
|
||||
Avoid overstocking by placing order precisely to meet deadlines.
|
||||
|
||||
.. card:: MTO
|
||||
:target: replenishment/mto
|
||||
:tag: Beginner-friendly
|
||||
@@ -67,8 +74,8 @@ Key points include:
|
||||
- :ref:`Manual reordering rules <inventory/warehouses_storage/manual-rr>`: Generate suggestions in
|
||||
the replenishment report for user review, allowing adjustments and batch orders while meeting
|
||||
deadlines.
|
||||
- :ref:`Just-in-time logic <inventory/warehouses_storage/just-in-time>`: A strategy to replenish
|
||||
only what is needed to prevent overstocking.
|
||||
- :doc:`Just in time logic <replenishment/just_in_time>`: A strategy to replenish only what is
|
||||
needed to prevent overstocking.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`replenishment/reordering_rules`
|
||||
@@ -119,6 +126,7 @@ disrupts its manual replenishment method.
|
||||
|
||||
replenishment/mto
|
||||
replenishment/reordering_rules
|
||||
replenishment/just_in_time
|
||||
replenishment/report
|
||||
replenishment/lead_times
|
||||
replenishment/resupply_warehouses
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
==================
|
||||
Just in time logic
|
||||
==================
|
||||
|
||||
.. |SO| replace:: :abbr:`SO (Sales Order)`
|
||||
.. |SOs| replace:: :abbr:`SOs (Sales Orders)`
|
||||
|
||||
*Just-in-time logic* in Odoo minimizes storage costs by placing orders precisely to meet deadlines.
|
||||
This is achieved using the :ref:`forecasted date <inventory/warehouses_storage/forecasted-date>`,
|
||||
which determines when replenishment is necessary to avoid overstocking. For example, for a product
|
||||
with a 5-day total lead time and a sales order delivery date in 10 days, Odoo waits 5 days to place
|
||||
the order, ensuring it arrives just in time for delivery.
|
||||
|
||||
The forecasted date is the **earliest possible date** to receive a product if the replenishment
|
||||
process starts immediately. It is calculated by summing the lead times linked to the replenishment
|
||||
process, such as :ref:`vendor lead times <inventory/warehouses_storage/purchase-lt>` and
|
||||
:ref:`purchasing delays <inventory/warehouses_storage/purchase-security-lt>` for purchases, or
|
||||
:ref:`manufacturing lead times <inventory/warehouses_storage/manuf-lt>` for production. This works
|
||||
with both automatic and manual reordering rules.
|
||||
|
||||
.. tip::
|
||||
If utilizing just-in-time logic feels risky, consider adding buffer time or :doc:`adjusting lead
|
||||
times <lead_times>` for more flexibility. While lead times and just-in-time logic provide
|
||||
additional control, reordering rules work perfectly fine without them. Keeping delivery dates on
|
||||
|SOs| as their *creation date* ensures purchases are immediately triggered when needed.
|
||||
|
||||
.. _inventory/warehouses_storage/forecasted-date:
|
||||
|
||||
Forecasted date and to order quantity
|
||||
=====================================
|
||||
|
||||
The *forecasted date* is the earliest receipt date for a product, if it is ordered right now. It is
|
||||
calculated by summing the lead times linked to the product's replenishment process. The total of
|
||||
these lead times, added to the current date, determines when Odoo checks for demanded stock.
|
||||
|
||||
To view the forecasted date go to :menuselection:`Inventory app --> Operations --> Replenishment` to
|
||||
access the :doc:`replenishment report <report>`, then click the :icon:`fa-info-circle`
|
||||
:guilabel:`(info)` icon for the desired reordering rule. The :guilabel:`Replenishment Information`
|
||||
pop-up window displays the :guilabel:`Forecasted Date` and various lead times.
|
||||
|
||||
The just-in-time logic ensures replenishment occurs only when required to meet forecasted demand,
|
||||
reducing the risk of overstocking.
|
||||
|
||||
.. note::
|
||||
Just-in-time logic determines the exact timing of replenishment. If you want to extend this logic
|
||||
to also consider near-future demand beyond the forecast date, see :ref:`Visibility Days
|
||||
<inventory/warehouses_storage/visibility-days>`
|
||||
|
||||
If the forecasted quantity falls below the minimum on the forecasted date, replenishment is
|
||||
triggered immediately to prevent shortages. If the quantity falls below the minimum after the
|
||||
forecasted date, replenishment is deferred.
|
||||
|
||||
The :guilabel:`To Order` quantity is defined as the total demand on the forecasted date.
|
||||
|
||||
By scheduling purchase orders according to combined lead times, Odoo minimizes inventory while
|
||||
ensuring that future demand is met on time.
|
||||
|
||||
.. example::
|
||||
A manual reordering rule is set up with no minimum or maximum quantities.
|
||||
|
||||
- Vendor lead time is 4 days, and the days to purchase is 2 days.
|
||||
- Today's date is October 2.
|
||||
- These add up to 6 days, making the forecasted date, October 8.
|
||||
|
||||
A confirmed |SO| for 5 units has a delivery date of October 8th (6 days from today). This demand
|
||||
will appear on the replenishment report today, in the :guilabel:`To Order` field.
|
||||
|
||||
However, if the delivery date were later than October 8th, it would not yet appear on the report.
|
||||
Odoo only displays quantities to replenish when they fall within the forecasted date window,
|
||||
ensuring orders are placed precisely when needed.
|
||||
|
||||
.. image:: just_in_time/replenishment-info.png
|
||||
:alt: Show forecasted date in Odoo.
|
||||
|
||||
.. important::
|
||||
|SOs| scheduled after the :guilabel:`Forecasted Date` are not included in the :guilabel:`Forecast`
|
||||
quantities of a reordering rule. However, they do appear in the forecasted report, since it
|
||||
reflects the long-term forecasted quantity. To access the forecasted report, click
|
||||
:icon:`fa-area-chart` :guilabel:`(area chart)` icon on the replenishment report.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Reordering Rules <reordering_rules>`
|
||||
- :doc:`Replenishment Report <report>`
|
||||
- :doc:`Lead Times <lead_times>`
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
@@ -168,8 +168,8 @@ confirm a request for quotation (RFQ) and when to expect the goods.
|
||||
- Arrival date of the products. Calculated by *Order Deadline* + *Vendor Lead Time*
|
||||
|
||||
In addition, Odoo has global security lead times, which are buffers that widen the
|
||||
:ref:`just-in-time <inventory/warehouses_storage/just-in-time>` (JIT) forecast window. The security
|
||||
lead times affect **only** replenishment methods that use :doc:`pull rules
|
||||
:doc:`just-in-time <just_in_time>` (JIT) forecast window. The security lead times affect **only**
|
||||
replenishment methods that use :doc:`pull rules
|
||||
<../../shipping_receiving/daily_operations/use_routes>`—for example :doc:`reordering rules
|
||||
<reordering_rules>` or :doc:`make to order (MTO) <mto>`. They do not change the interval between
|
||||
*Order Deadline* and *Expected Arrival*.
|
||||
|
||||
@@ -35,7 +35,7 @@ To set up reordering rules for the first time, refer to:
|
||||
|
||||
To understand and optimize replenishment using advanced features, see:
|
||||
|
||||
- :ref:`Just-in-time logic <inventory/warehouses_storage/just-in-time>`
|
||||
- :doc:`Just in time logic <just_in_time>`
|
||||
- :ref:`Visibility days <inventory/warehouses_storage/visibility-days>`
|
||||
- :ref:`Horizon days <inventory/warehouses_storage/horizon-days>`
|
||||
|
||||
@@ -127,8 +127,8 @@ rule line item:
|
||||
|
||||
.. note::
|
||||
To learn how the :guilabel:`On Hand`, :guilabel:`Forecast`, and :guilabel:`To Order` fields are
|
||||
calculated using on-hand quantities and future demand, see the :ref:`Just-in-time logic
|
||||
<inventory/warehouses_storage/just-in-time>` section.
|
||||
calculated using on-hand quantities and future demand, see :doc:`Just in time logic
|
||||
<just_in_time>`
|
||||
|
||||
For advanced usage, learn about the following reordering rule fields:
|
||||
|
||||
@@ -386,102 +386,8 @@ advanced configurations of reordering rules. Consider the following:
|
||||
five products' reordering rules. This ensures future demands for these products are
|
||||
managed separately and assigned to different |RFQs| (the usual behavior).
|
||||
|
||||
.. _inventory/warehouses_storage/just-in-time:
|
||||
|
||||
Just-in-time logic
|
||||
==================
|
||||
|
||||
*Just-in-time logic* in Odoo minimizes storage costs by placing orders precisely to meet deadlines.
|
||||
This is achieved using the :ref:`forecasted date <inventory/warehouses_storage/forecasted-date>`,
|
||||
which determines when replenishment is necessary to avoid overstocking.
|
||||
|
||||
The forecasted date is the **earliest possible date** to receive a product if the replenishment
|
||||
process starts immediately. It is calculated by summing the lead times linked to the replenishment
|
||||
process, such as :ref:`vendor lead times <inventory/warehouses_storage/purchase-lt>` and
|
||||
:ref:`purchasing delays <inventory/warehouses_storage/purchase-security-lt>` for purchases, or
|
||||
:ref:`manufacturing lead times <inventory/warehouses_storage/manuf-lt>` for production. Both
|
||||
automatic and manual reordering rules work this way.
|
||||
|
||||
.. example::
|
||||
For a product with a 5-day total lead time and a sales order delivery date in 10 days, Odoo waits
|
||||
5 days to place the order, ensuring it arrives just in time for delivery.
|
||||
|
||||
Important considerations:
|
||||
|
||||
- **If this feels risky**, consider adding buffer time or :doc:`adjusting lead times <lead_times>`
|
||||
for more flexibility.
|
||||
- While lead times and just-in-time logic provide additional control, **reordering rules work
|
||||
perfectly fine without them**. Keeping delivery dates on sales orders as their *creation date*
|
||||
ensures purchases are immediately triggered when needed
|
||||
|
||||
.. _inventory/warehouses_storage/forecasted-date:
|
||||
|
||||
Forecasted date and To Order quantity
|
||||
-------------------------------------
|
||||
|
||||
The *forecasted date* is the earliest receipt date for a product, if it is ordered right now. It is
|
||||
calculated by summing the lead times linked to the product's replenishment process. The total of
|
||||
these lead times, added to the current date, determines when Odoo checks for demanded stock.
|
||||
|
||||
To view the forecasted date go to the replenishment report and click the :icon:`fa-info-circle`
|
||||
:guilabel:`(info)` icon for the desired reordering rule. The :guilabel:`Replenishment Information`
|
||||
pop-up window displays the :guilabel:`Forecasted Date` and various lead times.
|
||||
|
||||
.. example::
|
||||
A manual reordering rule is set up with no minimum or maximum quantities.
|
||||
|
||||
- Vendor lead time is 4 days, the purchase security lead time is 1 day, and the days to purchase
|
||||
is 2 days.
|
||||
- Today's date is November 26.
|
||||
- These add up to 7 days, making the forecasted date, December 3rd.
|
||||
|
||||
A confirmed |SO| for 5 units has a delivery date of December 3rd (7 days from today). This demand
|
||||
will appear on the replenishment report today, in the **To Order** field.
|
||||
|
||||
However, if the delivery date were later than December 3rd, it would not yet appear on the
|
||||
report. Odoo only displays quantities to replenish when they fall within the forecasted date
|
||||
window, ensuring orders are placed precisely when needed.
|
||||
|
||||
.. image:: reordering_rules/replenishment-info.png
|
||||
:alt: Show forecasted date in Odoo.
|
||||
|
||||
The *just-in-time* logic ensures replenishment happens only when it's necessary for the forecasted
|
||||
date's demand, helping avoid overstocking.
|
||||
|
||||
For example:
|
||||
|
||||
- If the forecasted quantity drops below the minimum **on** the forecasted date, replenishment must
|
||||
begin immediately to avoid shortages.
|
||||
- If the quantity drops below the minimum **after** the forecasted date, replenishment can wait.
|
||||
|
||||
The **To Order** quantity is the total demand on the forecasted date.
|
||||
|
||||
By timing purchase orders based on the combined lead times, Odoo optimizes stock levels, keeping
|
||||
inventory minimal while ensuring future requirements are ordered at the last possible
|
||||
moment—strategic procrastination without the stress!
|
||||
|
||||
Common confusion about forecasted quantities
|
||||
--------------------------------------------
|
||||
|
||||
|SOs| due **after** the :guilabel:`Forecasted Date` are not accounted for in the
|
||||
:guilabel:`Forecast` quantities of the reordering rule.
|
||||
|
||||
They are, however, accounted for on the forecasted report that is opened by clicking the
|
||||
:icon:`fa-area-chart` :guilabel:`(graph)` icon on the replenishment report, as this one represents
|
||||
the **long-term forecasted quantity**.
|
||||
|
||||
.. example::
|
||||
|
||||
.. figure:: reordering_rules/zero-forecast.png
|
||||
:alt: Forecast and To Order quantities is zero.
|
||||
|
||||
Continuing the above example, when the sales order's deadline is adjusted to December 4th, the
|
||||
:guilabel:`Forecast` and :guilabel:`To Order` quantities are zero.
|
||||
|
||||
.. figure:: reordering_rules/five-forecast.png
|
||||
:alt: Show forecasted report.
|
||||
|
||||
Opening the :guilabel:`Forecasted Report` shows the :guilabel:`Forecasted` units is `5.00`.
|
||||
.. seealso::
|
||||
:doc:`Just-in-time logic <just_in_time>`
|
||||
|
||||
.. _inventory/warehouses_storage/visibility-days:
|
||||
|
||||
@@ -493,6 +399,11 @@ planned replenishment. Odoo checks if forecasted stock on the forecasted date wi
|
||||
minimum in the reordering rule. **Only if** it is time to reorder, visibility days check additional
|
||||
future demand by the specified number of days.
|
||||
|
||||
.. note::
|
||||
Visibility days extend the standard just-in-time replenishment logic by looking beyond the
|
||||
immediate forecasted date. To fully understand how Odoo determines when replenishment is
|
||||
triggered, refer to the :doc:`Just-in-time logic <just_in_time>`
|
||||
|
||||
This feature helps consolidate orders by grouping immediate and near-future needs, reducing
|
||||
transport costs and enabling supplier discounts for larger orders.
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB |
@@ -119,8 +119,8 @@ In each line of the replenishment report, clicking the :icon:`fa-info-circle` :g
|
||||
icon opens the :guilabel:`Replenishment Information` pop-up window, which displays the *lead times*
|
||||
and *forecasted date*.
|
||||
|
||||
For detailed information on how to use this feature for replenishment, go to the :ref:`Just in time
|
||||
logic <inventory/warehouses_storage/just-in-time>` section.
|
||||
For detailed information on how to use this feature for replenishment, go to the :doc:`just-in-time
|
||||
<just_in_time>` section.
|
||||
|
||||
Select a warehouse
|
||||
------------------
|
||||
|
||||
Reference in New Issue
Block a user