Skip to content

[IMP] inventory: security lead times fix #12929

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: 18.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ Lead times
.. |BoM| replace:: :abbr:`BoM (Bill of Materials)`
.. |BoMs| replace:: :abbr:`BoMs (Bills of Materials)`
.. |RFQ| replace:: :abbr:`RFQ (Request for Quotation)`
.. |PO| replace:: :abbr:`PO (Purchase Order)`

Accurately forecasting delivery dates is vital for fulfilling customer expectations. In Odoo, the
**Inventory** app allows for comprehensive lead time configuration, allowing coordination and planning
of manufacturing orders, deliveries, and receipts.
**Inventory** app allows for comprehensive lead time configuration, allowing coordination and
planning of manufacturing orders, deliveries, and receipts.

Lead time types
===============
Expand Down Expand Up @@ -149,28 +150,81 @@ and set the :guilabel:`Shipping Policy` to:
delivery date is 5 days from today: April 7th. On the other hand, selecting :guilabel:`When all
products are ready` configures the scheduled date to be 8 days from today: April 10th.

.. _inventory/warehouses_storage/purchase-lt:

Purchase lead times
===================

Automatically determining the dates on which to place orders from suppliers can help simplify the
procurement process.
Automatically scheduling supplier orders streamlines procurement by showing users exactly when to
confirm an request for quotation (RFQ) and when to expect the goods.

Odoo calculates the supplier shipment *receipt date*, and :abbr:`PO (Purchase Order)` deadline,
based on the required date the product is needed in the warehouse. By working backwards from the
receipt date, vendor lead times and purchase security lead times are taken into account, in order to
determine the :abbr:`PO (Purchase Order)` deadline.
.. list-table:: Key dates on an RFQ / PO
:header-rows: 1
:stub-columns: 1

This deadline is the date by which the order should be confirmed, in order to ensure timely arrival
by the expected receipt date.
* - Field
- Description
* - Order Deadline
- Last calendar day to confirm the |RFQ| and convert it to a |PO|
* - Expected Arrival
- Arrival date of the products. Calculated by :math:`\text{Order Deadline} + \text{Vendor Lead
Time}`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Time}`
Time}`

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The render is removing the space between Lead and Time
Screenshot 2025-04-22 at 11 01 30 AM


.. image:: lead_times/vendor-lead-times.png
:alt: Visualization of PO deadline and receipt date used with vendor lead times.
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
<../../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*.

.. seealso::
:doc:`PO scheduling with reordering rules <reordering_rules>`

.. list-table:: Global security lead time buffers
:header-rows: 1
:stub-columns: 1

* - Buffer
- Purpose
- Impact on dates
* - :ref:`Purchase Security Lead Time <inventory/warehouses_storage/purchase-security-lt>`
- Extra calendar days to account for delays. Typically used to account for weekends or
holidays.
- None on the |RFQ|/|PO|; adds buffer days in the :ref:`JIT forecast window
<inventory/warehouses_storage/forecasted-date>`.
* - :ref:`Days to Purchase <inventory/warehouses_storage/days-to-purchase>`
- Days the vendor needs to review an |RFQ| after it is sent.
- None on the |RFQ|/|PO|; adds buffer days in the :ref:`JIT forecast window
<inventory/warehouses_storage/forecasted-date>`.

.. image:: lead_times/vendor-lead-times.png
:alt: Visualization of PO deadline and receipt date used with vendor lead times.

.. example::
To tie all the purchase lead times together, consider this:

- Today: April 21
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Today: April 21
- **Order Placed**: April 21

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know the terminology like you do, so replace this if it isn't correct. My concern is that seeing "today" in an example won't make sense since it's relative (even if you're defining it here). Would something like Sales Order Confirmed or something like that work?

- :guilabel:`Vendor Lead Time`: 1 day
- :guilabel:`Purchase Security Lead Time`: 4 days
- :guilabel:`Days to Purchase`: 2 days

:math:`\text{Forecasted date} = 1 + 4 + 2`

Forecasted date = April 28

.. figure:: lead_times/forecasted-date-purchase.png
:alt: Forecasted date calculation on the lead times pop-up.

Example of the :abbr:`JIT (just-in-time)` forecast window, which is April 21-28.

When creating an RFQ today:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
When creating an RFQ today:
When creating an RFQ on the day the order was placed/the sales order was confirmed:


- :guilabel:`Order Deadline`: April 23 (:math:`\text{Today} + 2`)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- :guilabel:`Order Deadline`: April 23 (:math:`\text{Today} + 2`)
- :guilabel:`Order Deadline`: April 23 (:math:`\text{Order Confirmation Date} + 2`)

- :guilabel:`Expected Arrival`: April 24 (:math:`\text{Order Deadline} + 1`)

.. image:: lead_times/order-deadline.png
:alt: Order deadline displaying Apr 23 and Expected Arrival Apr 24.

.. _inventory/warehouses_storage/purchase-lt:

Vendor lead time
----------------

Expand All @@ -184,7 +238,11 @@ pricelist, click the :guilabel:`Add a line` button to add vendor details, such a

.. note::
Multiple vendors and lead times can be added to the vendor pricelist. The default vendor and lead
time selected will be the entry at the top of the list.
time selected is the entry at the top of the list.

.. tip::
A PO is marked late if the *Expected Arrival* date has passed, and appears in the *Late* box on
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A PO is marked late if the *Expected Arrival* date has passed, and appears in the *Late* box on
A |PO| is marked late if the *Expected Arrival* date has passed, and appears in the *Late* box on

the **Purchase** app's dashboard.

.. example::
On the vendor pricelist of the product form, the :guilabel:`Delivery Lead Time` for the selected
Expand All @@ -193,46 +251,20 @@ pricelist, click the :guilabel:`Add a line` button to add vendor details, such a
.. image:: lead_times/set-vendor.png
:alt: Add delivery lead times to vendor pricelist on a product.

By setting the vendor lead time, the expected arrival date of the item is automatically determined
as the date of the :abbr:`PO (Purchase Order)` confirmation, plus the vendor lead time. This ensures
that warehouse employees are notified, if the products do **not** arrive within the expected
timeframe.

.. example::
On a :abbr:`PO (Purchase Order)` confirmed on July 11th, for a product configured with a 10-day
vendor lead time, Odoo automatically sets the :guilabel:`Receipt Date` to July 21st. The receipt
date also appears as the :guilabel:`Scheduled Date` on the warehouse receipt form, accessible
from the :guilabel:`Receipt` smart button, located on the :guilabel:`PO (Purchase Order)`.

.. image:: lead_times/receipt-date.png
:alt: Show expected *Receipt Date* of the product from the vendor.

.. image:: lead_times/scheduled-date-receipt.png
:alt: Show expected *Scheduled Date* of arrival of the product from the vendor.

.. _inventory/warehouses_storage/purchase-security-lt:

Purchase security lead time
---------------------------

*Purchase security lead time* is set globally for the business in :menuselection:`Inventory app -->
Configuration --> Settings`.
*Purchase security lead time* is a global buffer to account for delays, applied to **all** vendors.
To set it, go to :menuselection:`Inventory app --> Configuration --> Settings`.

On the :guilabel:`Settings` page, under the :guilabel:`Advanced Scheduling` heading, tick the
checkbox for :guilabel:`Security Lead Time for Purchase`.
Under :guilabel:`Advanced Scheduling`, tick the :guilabel:`Security Lead Time for Purchase`
checkbox.

Next, enter the desired number of calendar days. By configuring the security lead time, a buffer is
set to account for potential delays in supplier deliveries. Then, click :guilabel:`Save`.

.. example::
Setting the :guilabel:`Security Lead Time for Purchase` to `2.00` days, pushes the
:guilabel:`Scheduled Date` of receipt back by two days. In that case, if a product is initially
scheduled to arrive on April 6th, with a two-day security lead time, the new scheduled date for
the receipt would be April 8th.

.. image:: lead_times/vendor-security.png
:alt: Set security lead time for purchase from the Inventory > Configuration > Settings.

.. _inventory/warehouses_storage/days-to-purchase:

Days to purchase lead time
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.