[IMP] Inventory: Remove visibility days

closes odoo/documentation#15056

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
This commit is contained in:
jero-odoo
2025-10-30 08:50:09 -04:00
parent 7566c272af
commit 7dda7600cb
8 changed files with 41 additions and 89 deletions

View File

@@ -43,8 +43,8 @@ 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>`
to also consider near-future demand beyond the forecast date, see :ref:`Horizon Days
<inventory/warehouses_storage/horizon-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

View File

@@ -36,7 +36,6 @@ To set up reordering rules for the first time, refer to:
To understand and optimize replenishment using advanced features, see:
- :doc:`Just in time logic <just_in_time>`
- :ref:`Visibility days <inventory/warehouses_storage/visibility-days>`
- :ref:`Horizon days <inventory/warehouses_storage/horizon-days>`
.. _inventory/warehouses_storage/configure-rr:
@@ -137,7 +136,6 @@ For advanced usage, learn about the following reordering rule fields:
- :ref:`Vendor <inventory/warehouses_storage/set-vendor>`
- :ref:`Bill of materials <inventory/warehouses_storage/set-bom-field>`
- :ref:`Procurement group <inventory/warehouses_storage/procurement-grp>`
- :ref:`Visibility days <inventory/warehouses_storage/visibility-days>`
.. note::
The fields above are not available by default, and must be enabled by selecting the |adjust| in
@@ -389,88 +387,48 @@ advanced configurations of reordering rules. Consider the following:
.. seealso::
:doc:`Just-in-time logic <just_in_time>`
.. _inventory/warehouses_storage/visibility-days:
Visibility days
===============
*Visibility days* enable the ability to determine if additional quantities should be added to the
planned replenishment. Odoo checks if forecasted stock on the forecasted date will drop below the
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.
To set visibility days to incorporate orders for a specified number of days in the future, navigate
to :menuselection:`Inventory app --> Operations --> Replenishment`, or by clicking the *Reordering
Rules* smart button from the product form.
Next, enable the :guilabel:`Visibility Days` field by clicking the |adjust| to the far right and
choosing the feature from the drop-down menu. Then, enter the desired visibility days.
.. important::
The forecasted date is never pushed forward or extended; Odoo only checks the extra visibility
days if the stock falls below the minimum threshold on the forecasted date.
Example where visibility days is triggered
------------------------------------------
A product shipped from Asia has a combined vendor lead time of 30 days and a shipping cost of $100
(including :doc:`landed costs <../../inventory_valuation/landed_costs>` and
tariffs).
- November 4: Current date. The forecasted date is December 4 (30 days later).
- |SO| 1: Requires the product by Dec 4. Odoo places the order today, costing $100.
- |SO| 2: Requires the product by Dec 19. Normally, Odoo would order on Nov 19, costing an
additional $100.
- |SO| 3: Requires the product by Dec 25. Normally, Odoo would order on Nov 25, costing another
$100.
Ordering separately for these sales orders totals $300 in shipping costs.
.. image:: reordering_rules/forecasted-date.png
:alt: Show forecasted date visualization.
Setting :guilabel:`Visibility Days` to `20.0` allows Odoo to "look ahead" 20 days from December 4
(|SO| 1's forecasted date) to December 24.
- It groups |SO| 2's order with |SO| 1, reducing shipping costs by consolidating orders.
- |SO| 3, which is due on Dec 25, is one day late and is not grouped with the other two orders.
Counterexample where visibility days is not triggered
-----------------------------------------------------
Considering the example above, if |SO| 1 does not exist, then:
- **November 4**: Current date. The forecasted date is December 4 (30 days later).
- **November 5**: The forecasted date shifts to December 5.
- |SO| 2: Requires the product by December 19. Odoo will only trigger the order on November 19,
meaning the user will not see a replenishment notification until then.
This shows that visibility days complement just-in-time logic by optimizing it to balance
replenishment costs more effectively.
.. image:: reordering_rules/counterexample.png
:alt: Example where the visibility days does not trigger.
Horizon days
============
*Horizon days* determine how many days ahead Odoo checks if the forecasted quantity will drop below
reordering rule's minimum. The feature is meant to help users plan replenishment in advance, by
increasing the :ref:`forecasted date <inventory/warehouses_storage/forecasted-date>`.
*Horizon days* allow users to extend the time window between today's date and the forecasted date
when calculating for the forecasted quantity. This features allows users to plan and restock
inventory proactively, rather than following a just-in-time approach. The feature is meant to help
users plan replenishment in advance by increasing the :ref:`forecasted date
<inventory/warehouses_storage/forecasted-date>`.
.. math::
:class: overflow-scroll
\text{Forecasted date} = \text{Current date} + \text{Vendor Lead Time} + \text{Horizon Days}
Since horizon days are only meant to be used with manual reordering rules, find details about the
feature in the :doc:`Replenishment report article <report>`.
.. note::
Horizon days are configured on a company level.
The default horizon days setting can be set or updated by navigating to the
:menuselection:`Inventory app --> Advanced Scheduling`. Enter the desired number of days in the
:guilabel:`Replenishment Horizon` field, and click :guilabel:`Save`.
.. image:: reordering_rules/replenishment-horizon.png
:alt: The Replenishment Horizon setting in the Inventory app.
Example of how horizon days affect replenishment planning
---------------------------------------------------------
On the Replenishment report, there are currently two products listed due for reordering: `Drawer,
Black` and `Corner Desk`. This is based on their current level of on-hand stock, and their
forecasted stock level. The default horizon days is set as `20`.
.. image:: reordering_rules/twenty-days.png
:alt: Replenishment report with horizon days set at 20.
However, by extending the horizon days to `30`, an additional product is added to the list.
.. image:: reordering_rules/thirty-days.png
:alt: Replenishment report with horizon days set at 30.
This is because the additional product, `[FURN_0789] Individual Workplace`, has a delivery scheduled
in twenty-nine days, at which point their on-hand stock levels will fall below the minimum needed
on-hand.

View File

@@ -33,8 +33,8 @@ By default, the quantity in the :guilabel:`To Order` field is the quantity requi
the field and changing the value. To replenish a product manually, click :icon:`fa-truck`
:guilabel:`Order`.
Click :icon:`fa-bell-slash` :guilabel:`Snooze` to temporarily deactivate the reordering rule for
the set period, hiding the entry from the replenishment dashboard, when it is supposed to appear.
Click :icon:`fa-bell-slash` :guilabel:`Snooze` to temporarily deactivate the reordering rule for the
set period, hiding the entry from the replenishment dashboard, when it is supposed to appear.
.. tip::
Defining a :guilabel:`Vendor` allows filtering or grouping demands by the vendor. This simplifies
@@ -69,7 +69,9 @@ Horizon days
*Horizon days* determine how many days ahead Odoo checks if the forecasted quantity will drop below
reordering rule's minimum. The feature is meant to help users plan replenishment in advance, by
increasing the :ref:`forecasted date <inventory/warehouses_storage/forecasted-date>` on the
:doc:`replenishment report <report>`.
:doc:`replenishment report <report>`. Horizon days look ahead a specified number of days and trigger
reordering rules as soon as the forecasted quantity falls below the minimum within that window, even
if no replenishment is needed today.
.. example::
Setting horizon days to `7` ensures all manual reordering rules set to trigger within the next
@@ -80,14 +82,6 @@ To set horizon days, go to :menuselection:`Inventory app --> Operations --> Repl
click :icon:`fa-angle-double-right` :icon:`fa-folder` :guilabel:`Manual` in the left sidebar. In the
menu that appears, set the number of :guilabel:`Horizon` days.
Both horizon days and :ref:`visibility days <inventory/warehouses_storage/visibility-days>` allow
Odoo to anticipate future demand, but they work differently:
- **Visibility days**: only checks future demand if a replenishment would have been triggered today.
- **Horizon days**: looks ahead a specified number of days and triggers reordering rules as soon as
the forecasted quantity falls below the minimum within that window — even if no replenishment is
needed today.
.. example::
- Current date: Feb 18
- On hand quantity: 10