How Scheduled Dates and Lead Times Interact in Odoo

scheduled_dates_on_mobile_laptop_coffee.jpg

The great thing about Odoo is that the more information you feed into it and the more you use it, the better equipped it will be in assisting you with your management tasks. As an Odoo supply chain functional expert at Steersman Company, I get a lot of questions about how to best configure all of the different scheduled dates that make operational planning more efficient and intuitive. In this article I’ll discuss just how these different settings within the Sales, Purchase, Inventory and Manufacturing modules work as well as provide some guidance in determining the best plan for your particular operation. I’ve referenced Odoo versions 12 and 14 in my explanations below, though a lot of the mentioned functionality applies to other Odoo versions as well.

There are a few different configurable scheduled dates and lead times you can set up that will help save you time, allow you to manage your inventory more efficiently, including manufacturing orders, deliveries, receptions, and so on, and help provide you with accurate commitment dates at every stage of operation.

Using the various commitment dates doesn’t just organize your operation process, but also improves customer service and buyer confidence. If your customers can rely on you to deliver on time, they can plan their own operations better and are more likely to re-order from you once they know your operation is reliable.

Configurable Lead-Time Settings in Odoo

There are several different lead-time settings that can be configured in Odoo in order to set the expected times needed to receive, deliver, or manufacture products and plan operations. There are also a few security lead-times which act as cushions to account for possible delays. Before I dive into the logic, configuration and practical application of each of these, here’s a brief summary of what each of them means:

  • Customer Lead Time: the start to finish length of time it should take for the product to be shipped to the customer. This is not a calculated field and will require the user to know exactly how long a particular product will take to order, manufacture, and package. Customer Lead Time is set for each product and if set, this is the only time that’s taken into consideration when calculating expected date on new sales orders. I recommend that when you configure this setting you do NOT include actual ship time in the logic, as it’s impossible to predict all the shipping variables.
  • Sales Security Lead Time: this is the pre-configured time padding that would allow for delays anywhere in the process. The number of days configured for this setting would be subtracted from the Customer Lead Time mentioned above in determining the Scheduled Date for a Delivery Order that is created once a Sales Order is confirmed. For example, if a Sales order is placed with a Commitment Date of 1/30 and you have your Sales Security Lead Time set for 1 day, the Scheduled Date on the generated Delivery Order will be set to 1/29.
  • Vendor Lead Time: in instances where a subpart or the product itself needs to be ordered from a vendor, this is the time needed by your vendor to deliver those products to you. This is set on the product level so if you have multiple vendors for a part or product, you can take their respective delivery times into consideration.
  • Security Lead Time for Purchase: additional time to mitigate the risk of a vendor delay. This is useful if you’re working with a new vendor where delivery expectations are unknown, if you have an existing vendor whose delivery times are inconsistent, or if you just want to give yourself a bit more time for this operation. If enabled, this will be a single blanket cushion for all vendors, though as I explain later, in certain situations it might lead to confusing PO Order Dates.
  • Manufacturing Lead Time: the expected time it takes to manufacture a product. This lead time is set for each manufactured product and does not take either the quantity or routing time into account.
  • Manufacturing Security Lead Time: additional time to mitigate the risk of a manufacturing delay. This is useful in cases of large volume orders or to allow for maintenance or procedural delays. This is a single setting for all manufacturing orders.
  • Reordering Rules Lead Time: set on the product level when configuring reordering rules, this time allows for additional time to either send the order to the supplier or the amount of time you’ll need to receive and process the items ordered. This is separate from either of the Vendor Lead Times mentioned above and can be left at zero or used in conjunction with the other times, as operations require.

Important Notes

  • Enabling and specifying a Security Lead Time for Purchase could set the Order Date on the resulting Purchase Order to a past date if the number of days specified on the product’s reordering rule is smaller than the number of days set for the Security Lead Time for Purchase. This applies whether the lead time on your product’s reordering rule is set to “Day(s) to purchase” or “Day(s) to get the products”. As the logic behind this implementation is reserved for particularly complex forecasting needs with strict data controls and process procedures, for most instances, I recommend leaving Security Lead Time for Purchase disabled.
  • Similarly to the above-mentioned complex logic behind Security Lead Time for Purchase, when configuring reordering rules, whether your product is a Manufacture or a Buy, choosing “Days to get the products” will set the Deadline Start Date on the Manufacturing Order or the Order Date on a PO to the past. Unless you have specific operational needs for such an implementation, I recommend using “Days to purchase” for most of your Reordering Rules.
  • When the need to order a particular item arises for a vendor, if there’s an unconfirmed RFQ for that vendor already, Odoo will add another line to the current RFQ instead of creating a new one. However, if the original RFQ was to accommodate an order set far in the future and the newly added item is part of a Restock request, the Order Date on the PO will remain the same as it was when the PO was first created. Restock orders are meant to replenish supply that falls below a threshold, so scheduled dates associated with purchase requests for restock purposes may not align with incoming order needs.
  • The Scheduled Date on a Delivery Order will be set to Commitment Date from the Sales Order minus the Security Lead Time for Sales. The assumption Odoo makes is that the customer will already have their order in hand by this date, which isn’t always logical, as transit times can vary significantly. You can either use the Security Lead Time for Sales field to approximate the shipping time, which isn’t ideal as different orders going to different places using different shipping methods will take different amounts of time, or you can treat the Scheduled Date as a To Ship By date, which I think is often a more useful application and the one I’ll be using in this document.
  • If your product is configured as Make to Order, whether it’s a Buy or Manufacture, then confirming a Sales Order will automatically generate a Purchase Order or a Manufacturing Order. The system will not take current inventory into account, so if you have changed the routes on a product or had a return, any such “on the shelf” inventory will be ignored for future orders and will need to be dealt with manually.
  • If your product is set to Buy or Manufacture only and has a Reordering Rule set, then a Purchase Order or Manufacturing Order will be generated once the Scheduler runs next.
  • All storable products will give you the option to specify a Reordering Rule, and I recommend configuring this rule unless you’d prefer to monitor and manage inventory for a particular product manually.
  • A product with a product type of “Consumable” is treated in all ways like a physical product which you can buy, sell, and ship, but Odoo will not trigger procurement actions for it. This setting should be used for items that are always maintained in stock for overall operational needs, such as paper, staples, screws, nuts, water, etc. You may need to add these to your Product list as they might be integral components in a Manufacturing Order but managing stock for these items is done manually on an as-needed basis.
  • Weekend and holiday considerations are currently not supported. All lead dates are calculated with the assumption that the operation is running 7 days a week.
  • If manufacturing is ahead of schedule and the Shipping Policy on the Sales Order was set to “Deliver each product when available”, the Scheduled Date on the Delivery Order will be updated to an earlier date, even if the order only contained one product and the requested ship date was further in the future.

How and Where to Configure Various Scheduled Dates

Customer Lead Time

The Customer Lead Time is the minimum length of time it takes for the product to be ready for shipping from the moment a Sales Order is entered. It is configured separately for each product by going to Sales ‣ Products ‣ Products. There, open your product form, go in the Inventory tab, and add your Customer Lead Time.

customer lead time.png

For example, product X is ordered on the 2nd of April but the Customer Lead Time is two days. In that case, the expected date for the order to go out the door is the 4th of April.

Sales – Delivery Date

A useful configured setting for the Sales module is the Delivery Date. If enabled, it will display Expected Date, Commitment Date and Effective Date in all new Sales Orders. I’ll be referencing the first two here.

delivery date shipping configuration.png

The Commitment Date allows a salesperson to enter in the customer’s requested ship date when creating a quotation or a sales order. Expected Date in a field above that will be the system calculated date that takes all the Customer Lead Times for all the products in the Sales Order into account. If the requested commitment date is earlier than the expected date, a warning message is displayed, which allows the salesperson creating the order to appropriately set customer expectations.

expected and commitment dates.png

It’s important to remember that the Expected Date will only take Customer Lead Times into account and not consider any possible vendor or manufacturing time settings.

Security Lead Time for Sales

In the Sales module settings, Security Lead Time for Sales corresponds to extra days added to the expected ship date to allow for possible delays and ensure that the order gets sent to the customer on time. It’s a single setting set for all orders, so keep that in mind when deciding on proper configuration.

To set this up, go to Inventory ‣ Configuration ‣ Settings and enable the feature Security Lead Time for Sales under Advanced Scheduling at the bottom.

configuration settings.png
security lead time for sales configuration.png

For example, product X needs to be shipped on the 6th of April, but the Security Lead Time for Sales is set to one day. In that case, the scheduled date for shipping the order will be set for the 5th of April.

Multiple Product Support

In many cases, customers order several products at the same time. Each product can have a different Customer Lead Time, so the whole order will need to be delivered either all at once or separately, as requested. Odoo allows you to control how to handle these situations easily.

You can set up your shipping preference directly from the Other Info tab of your Sales Order/Quotation, and you can choose either “Deliver each product when available” or “Deliver all products at once”.

order shipping policy options.png

If you choose to ship each product separately, then the Expected Date on a Sales Order will be calculated for the item that will be ready to ship the earliest. If you choose to ship all products at once, then the Expected Date will reflect the date of the item that will be ready the latest. Please note that the Security Lead Time for Sales padding date is not reflected here as it’s intended for internal planning only.

Vendor Lead Time

The Vendor Lead Time is the time needed for a product you purchased to be delivered to you. It is set on the product level, so to configure it, open a product from Purchase ‣ Purchase ‣ Products and add or select a vendor under the Purchase tab.

vendor lead time setting path.png

In the vendor window is a field where you can specify the Delivery Lead Time. If set, the delivery day for every purchase of that product is now equal to Order Date of the Purchase Order + Delivery Lead Time. Different vendors can have different lead times, so it’s useful to keep this information here if you want to consider speed of delivery when placing your purchases.

vendor delivery lead time setting.png

Security Lead Time for Purchase

Ideally, Security Lead Time for Purchase follows the same logic as the one for Sales, except that you are the customer, and keeps track of padded time your supplier has to deliver your order. Configuring this date should allow you to take unexpected vendor delays into account.

To set up Security Lead Time for Purchase, go to Inventory ‣ Configuration ‣ Settings and enable the feature.

security lead time for purchase configuration setting.png

However, right now it seems that the execution of this particular setting is not ideal for most implementations. If enabled, the Order Date on the generated Purchase Order will be set to the date the Sales Order is confirmed + Reordering Rule Lead TimeSecurity Lead Time for Purchase, which can potentially set the date into the past.

If the Security Lead Time for Purchase is disabled, the Order Date on a Purchase Order is set more intuitively depending on logic mentioned below, which differs depending on whether the item being ordered is a Buy/Manufacture, or either of these two options with a Make to Order setting.

Reordering Rules Lead Time

When configuring new products, parts or components that can be purchased, you’ll need to set up reordering rules that would be used to manage your inventory on hand. Especially important for items with a high demand and a high stock flow, you can create a reordering rule for every Warehouse/Location in your operation, though be aware that this adds quite a bit of complexity to the setup. Note that only Storable products will have the Min/Max option show up for configuration.

On the product view you’ll be able to see the minimum quantity that needs to be in inventory at all times as well as a maximum that will guide purchasing.

reordering rules for purchased products.png

If you click on that Min/Max tab, you’ll be taken to the Reordering Rules view for that product. Here you can modify an existing Reordering Rule or create a new one.

reordering rules for purchased products list view.png

When setting up a Reordering Rule for a Product, you’ll be able to configure the Lead Time for the corresponding Purchase Order, with either a Day(s) to get the products or a Day(s) to purchase. I’ve found that for most instances, you’ll want to select the Day(s) to purchase option, as selecting Day(s) to get the products may set the Order Date and the Scheduled Date on the resulting Purchase Order in the past.

reordering rules for purchased products lead time.png A product will trigger a restock request if inventory dips below the minimum quantity required once the Scheduler next runs. If you’ve selected Day(s) to purchase, the resulting RFQ will have an Order Date set to today + Lead Time specified in the Reordering Rule, and a Scheduled Date set to the Order Date + Delivery Lead Time set for the Vendor under the Purchase tab for the Product.

  • For example: Product X is a storable item with a Buy setting, a Reorder Rule that has a Lead Time of 2 days and Delivery Lead Time for the Vendor of 10 days. If the inventory for Product X dips below the minimum threshold on January 1st, an RFQ will be created with an Order Date of ⅓ and Scheduled Date of 1/13.

If you have selected Day(s) to get the products, the resulting RFQ will have a Scheduled Date set to today + Lead Time specified in the Reordering Rule and an Order Date set to Scheduled Date - Delivery Lead Time set for the Vendor under the Purchase tab for the Product.

  • Using the example above, but changing this one setting, if the inventory for Product X dips below the minimum threshold on January 1st, an RFQ will be created with an Order Date of 12/24 and Scheduled Date of ⅓. As you can see, the Order Date has been set in the past, which may not be the intended behavior you had in mind.

You can also create a Reordering Rule with a Min/Max setting of 0/0, in which case an RFQ will only be generated when the product is needed to fulfill an order and current inventory is insufficient. In this instance the Lead Time is not used as the Sales Order and the Delivery Lead Time for the chosen Vendor will drive the purchasing dates.

Manufacturing Lead Time

The Manufacturing Lead Time is the time needed to manufacture the product. This setting is configured on the product level by opening the Inventory tab of your product form and adding the number of days manufacturing will take. This allows you to schedule a start date for manufacturing the order and helps prioritize daily tasks.

manufacturing lead time for product setting.png

Security Lead Time for Manufacturing

Configuring a Security Lead Time for Manufacturing will ensure that a manufacturing order is scheduled to start earlier to account for possible delays. There is just one global setting that’s not product specific and is designed to help account for process issues, machine maintenance, and other delays.

To configure this setting, go to Manufacturing ‣ Configuration ‣ Settings and check Security Lead Time.

security lead time for manufacturing configuration.png

Conclusion

Depending on the configurations needed for your particular operation, things can quickly get very complicated. Odoo supports the management of multiple warehouses and locations, as well as corresponding reordering rules for manufacturing and purchase orders for each. You can also enable Routes to view the configurations of each one in Odoo in more detail. All of these things will add layers of complexity that I have not covered in this document as there are too many variables to cover.

I have included a somewhat complicated example of a possible setup below to help explain the concepts mentioned above, but if you have multi-step production and need to investigate the more advanced routes, the team at Steersman Company would be happy to assist you.

Real World Example

As I mentioned before, the more data you input into Odoo, the better it’ll be at assisting you with your operations planning. Here I’ve provided a fully configured setup for a manufactured product and explained how all of these configured dates work together to provide you with a schedule for every step of the fulfillment process to ensure customer satisfaction.

Sample Configuration:

Global settings:

  • 1 day of Security Lead Time for Sales
  • 2 days of Security Lead Time for Manufacturing
  • Security Lead Time for Purchase turned off

Product X settings:

  • Make to Order Storable Manufactured product that can only be Sold
  • Bill of Materials set to require 10 units of Product Y and 100 units of Product Z
  • 14 days of Manufacturing Lead Time
  • 30 days Customer Lead Time

Product Y settings:

  • Storable Buy product that can only be Purchased, with 5 units in stock
  • 2 days of Reorder Lead Time with Day(s) to purchase set and 5/10 set for Min/Max
  • 10 days for Delivery Lead Time on Vendor for this product

Product Z settings:

  • Make to Order Storable Manufactured product that can only be Sold
  • 2 days of Manufacturing Lead Time
  • 5 days set for Customer Lead Time

A customer orders product X on the 1st of December and requests that the order is shipped by January 30th with the “Deliver each product when available” option on the Sales Order. Since this is well above the 30 days Customer Lead Time required for the product, the Sales Order doesn’t send any warnings. Given the provided configuration and that the Sales Order is created and confirmed on December 1st, the following will be the process flow:

  • Two MOs will be created as soon as the SO is confirmed (on December 1st):
  • MO for Product X with a Deadline Start Date (January 13rd) = Sales Order Commitment date (1/30) – Security Lead Time for Sales (1) – Security Lead Time for Manufacturing (2) – Manufacturing Lead Time for Product X (14)
  • MO for Product Z with a Deadline Start Date (January 9th) = Deadline Start Date for Product X (1/13) – Security Lead Time for Manufacturing (2) – Manufacturing Lead Time for Product Z (2)
  • The next time the Scheduler Runs, it’ll see that there are not enough of Product Y in inventory needed for the new MO and it’ll trigger the Reordering Rule on Product Y. For our example, let’s say the Scheduler Runs right away.
  • RFQ for Product Y will be created with an Order Date of December 3rd and a Scheduled Date of December 13th. The Order Date is calculated by adding the Reorder Lead Time of 2 days to the date of creation, and the Scheduled date is calculated by adding the Delivery Lead Time of 10 days for that Vendor to the Order Date.
  • (Note: If more than one product needs to be ordered from the same Vendor when the scheduler runs, the Order Date will be set using the smallest Reorder Lead Time for the grouped order, and the Scheduled Dates will be based on that for each of the products.)
  • The Scheduled Date for the Delivery Order for the Sales Order will be set to Commitment Date – Security Lead Time for Sales, so in this instance it will be set to January 29th and you’ll have 1 day to package and ship out the finished assembly.