Page tree
Skip to end of metadata
Go to start of metadata

This page explains how CartonCloud chooses which stock to use when adding to a Sale Order.

CartonCloud contains a number of different algorithms for stock selection.



The question is about how do we choose stock in terms of when a sale order comes in, how does the system prioritize different stock records for the same product?

The system can't right now, as I'm talking. It's based solely on like FEFO, which is, First Expiry, First Out. That doesn't necessarily mean First In, First Out.

The differences are First In, First Out, if you've got stock coming in that's due to expire in a year's time, that will go out before any other stock which comes in later, regardless of what its expiry date is. Our software is only based currently around expiry dates. Now, this is something we're looking to change moving forward.

But when you're trying to select stock, the very first thing we look at is, we go, "Okay, is this stock okay?" Meaning, it's not in a damaged status or a loss status or something else. Some other, I guess, non-ideal status.

Then, we start to look at the expiry date of the stock to go, "Okay, we want the stock which is the closest to expiration. However, it can't be expired, and it can't be within what we call an 'expiry threshold.'" What this means is that an expiry threshold is the number of days before a product is due to expire in which you will no longer select it.

Let me explain this with something like milk, for example. If you're going to a supermarket and buy milk that's going to expire tomorrow, well, you don't really want milk that's going to expire tomorrow, right, because it's too close to expiration.

It's the same with stock that you're sending out of warehouses. Once the stock becomes too close to expiry date, you don't want to send it out anymore because no one wants it. They can't sell it once it gets to their stores.

To handle this, CartonCloud implemented, well, we implemented a thing into it called an 'expiry threshold.' This is a number of days from the expiry date where, if you will say within seven days of expiration and your expiry threshold is seven days, any stock which is within seven days of expiry will no longer be picked to go out on an order. So as to handle that case, well, we're sending out stuff a day before it goes off. So when it's selecting stock it says I want stock which is not within that expiry threshold, and then, it takes whatever is the soonest to expire. If you've got a product which is going to expire in eight days' time, brilliant. That's one day before the expiry threshold. It's probably the shortest shelf-life stuff you've got. It'll pick that.

There's a couple of other things over the top of that, such as the efficiency of the warehouse location. For example, if you've got lots of warehouse locations, the stuff which is up really high is more difficult to access than the stuff which is down at ground level.

As a result, you have a higher efficiency to access the stuff down at ground level, as opposed to the stuff up high. The system takes those kinds of things into account as well when it's selecting these different stocks.


Pick Efficiency Only

Stocks are selected based on the following ordering:

When choosing stock by pick efficiency:


Ordering Top to Bottom in terms of logic followed
Purchase Order StatusPrioritise stock with a status of >= Received (Can be adjusted in Customer Settings for minimum status before picking allowed)
Stock Sub-Selection MethodBased on the Stock Sub-Selection Method CartonCloud will either try to minimise the number of locations that the stock is taken from, or minimise the amount of locations that will still hold stock after the order is packed. (Focusing on picking from locations with least stock).
Pallet Quantiites

CartonCloud Intelligently handles Pallet Quantities (and preventing breaking pallets where possible). It does this by providing additional Stock Selection logic, and also implementing the Stock Sub-Selection Method

  1. Look for locations which contain exactly the quantity required.
  2. If the ordered quantity is one pallet load, prioritise full pallets (avoid building pallets up from part pallets)
  3. If the ordered quantity is less than one pallet load, prioritise stocks which are part pallets (to avoid breaking up full pallets)
  4. If the Stock Sub-Selection Method is "Minimise Picks", then prioritise locations with enough stock to fulfil the order (avoid using multiple locations where possible)

Strict Mode also has an effect on Pallet Handling. If Strict Mode is enabled then FEFO / FIFO / LIFO will be enforced even if it causes splitting of full pallets, or picking from part-pallets to build full pallets.

If Strict Mode is disabled, CartonCloud will break part-pallets and full-pallets into two groups. If it is looking for full-pallet quantities then it will search through all the full-pallets in FEFO / FIFO / LIFO order. Only if no full pallets exist will it revert to picking from part-pallets in FEFO / FIFO / LIFO order. If part-pallet stocks are being searched, it will first look through all part-pallet quantities in FEFO / FIFO / LIFO order before going onto full pallet quantities. This creates better efficiency in the picking, however it means that stock is not strictly FEFO / FIFO / LIFO. 


Prioritise stocks based on Location Pick Efficiency


FEFO (First Expiry, First Out)

Stocks are selected based on the following ordering:

When choosing stock by Expiry Date:


Ordering Top to Bottom in terms of logic followed
Purchase Order StatusPrioritise stock with a status of >= Received (Can be adjusted in Customer Settings for minimum status before picking allowed)

Prioritise stocks with no Expiry Dates loaded

Prioritise stocks which are the soonest to expire - i.e. the oldest expiry dates

CartonCloud Intelligently handles Pallet Quantities (and preventing breaking pallets where possible). It does this by providing additional Stock Selection logic, and also implementing the Stock Sub-Selection Method
  1. Look for locations which contain exactly the quantity required.
  2. If the ordered quantity is one pallet load, prioritise full pallets (avoid building pallets up from part pallets)
  3. If the ordered quantity is less than one pallet load, prioritise stocks which are part pallets (to avoid breaking up full pallets)
  4. If the Stock Sub-Selection Method is "Minimise Picks", then prioritise locations with enough stock to fulfil the order (avoid using multiple locations where possible)

Strict Mode also has an effect on Pallet Handling. If Strict Mode is enabled then FEFO / FIFO / LIFO will be enforced even if it causes splitting of full pallets, or picking from part-pallets to build full pallets.

If Strict Mode is disabled, CartonCloud will break part-pallets and full-pallets into two groups. If it is looking for full-pallet quantities then it will search through all the full-pallets in FEFO / FIFO / LIFO order. Only if no full pallets exist will it revert to picking from part-pallets in FEFO / FIFO / LIFO order. If part-pallet stocks are being searched, it will first look through all part-pallet quantities in FEFO / FIFO / LIFO order before going onto full pallet quantities. This creates better efficiency in the picking, however it means that stock is not strictly FEFO / FIFO / LIFO. 


Check for Unallocated Location stock and use before Allocated Location stock → this will be superseded and overriden by the minimum purchase order status mentioned at the start i.e. allocated will force all stock to have Warehouse Locations.

Prioritise stocks based on Location Pick Efficiency - by locations


Prioritise pallets with the least stock remaining (to try and clear up small pallets before starting on big ones).



FIFO (First In, First Out)

Stocks are selected based on the following ordering:

When choosing stock by Arrival Date:


Ordering Top to Bottom in terms of logic followed
Purchase Order StatusPrioritise stock with a status of >= Received (Can be adjusted in Customer Settings for minimum purchase order status before picking allowed)

Prioritise stocks which have been in the warehouse the longest time by Arrival Date

CartonCloud Intelligently handles Pallet Quantities (and preventing breaking pallets where possible). It does this by providing additional Stock Selection logic, and also implementing the Stock Sub-Selection Method
  1. Look for locations which contain exactly the quantity required.
  2. If the ordered quantity is one pallet load, prioritise full pallets (avoid building pallets up from part pallets)
  3. If the ordered quantity is less than one pallet load, prioritise stocks which are part pallets (to avoid breaking up full pallets)
  4. If the Stock Sub-Selection Method is "Minimise Picks", then prioritise locations with enough stock to fulfil the order (avoid using multiple locations where possible)

Strict Mode also has an effect on Pallet Handling. If Strict Mode is enabled then FEFO / FIFO / LIFO will be enforced even if it causes splitting of full pallets, or picking from part-pallets to build full pallets.

If Strict Mode is disabled, CartonCloud will break part-pallets and full-pallets into two groups. If it is looking for full-pallet quantities then it will search through all the full-pallets in FEFO / FIFO / LIFO order. Only if no full pallets exist will it revert to picking from part-pallets in FEFO / FIFO / LIFO order. If part-pallet stocks are being searched, it will first look through all part-pallet quantities in FEFO / FIFO / LIFO order before going onto full pallet quantities. This creates better efficiency in the picking, however it means that stock is not strictly FEFO / FIFO / LIFO. 


Prioritise stocks which are not in a Warehouse Location (just arrived, send them back out rather than putting them away) → this will be superseded and overriden by the minimum purchase order status mentioned at the start i.e. allocated will force all stock to have Warehouse Locations.

Prioritise stocks based on Location Pick Efficiency

Prioritise pallets with the least stock remaining (to try and clear up small pallets before starting on big ones).

Prioritise stocks which are the soonest to expire - i.e. the oldest expiry dates


LIFO (Last In, First Out)

Stocks are selected based on the following ordering:

When choosing stock by Arrival Date:


Ordering Top to Bottom in terms of logic followed
Purchase Order StatusPrioritise stock with a status of >= Received (Can be adjusted in Customer Settings for minimum status before picking allowed)

Prioritise stocks which have been in the warehouse the shortest time by Arrival Date

CartonCloud Intelligently handles Pallet Quantities (and preventing breaking pallets where possible). It does this by providing additional Stock Selection logic, and also implementing the Stock Sub-Selection Method

  1. Look for locations which contain exactly the quantity required.
  2. If the ordered quantity is one pallet load, prioritise full pallets (avoid building pallets up from part pallets)
  3. If the ordered quantity is less than one pallet load, prioritise stocks which are part pallets (to avoid breaking up full pallets)
  4. If the Stock Sub-Selection Method is "Minimise Picks", then prioritise locations with enough stock to fulfil the order (avoid using multiple locations where possible)

Strict Mode also has an effect on Pallet Handling. If Strict Mode is enabled then FEFO / FIFO / LIFO will be enforced even if it causes splitting of full pallets, or picking from part-pallets to build full pallets.

If Strict Mode is disabled, CartonCloud will break part-pallets and full-pallets into two groups. If it is looking for full-pallet quantities then it will search through all the full-pallets in FEFO / FIFO / LIFO order. Only if no full pallets exist will it revert to picking from part-pallets in FEFO / FIFO / LIFO order. If part-pallet stocks are being searched, it will first look through all part-pallet quantities in FEFO / FIFO / LIFO order before going onto full pallet quantities. This creates better efficiency in the picking, however it means that stock is not strictly FEFO / FIFO / LIFO. 


Prioritise stocks which are not in a Warehouse Location (just arrived, send them back out rather than putting them away) → this will be superseded and overriden by the minimum purchase order status mentioned at the start i.e. allocated will force all stock to have Warehouse Locations.

Prioritise stocks based on Location Pick Effeciency

Prioritise pallets with the least stock remaining (to try and clear up small pallets before starting on big ones).

Prioritise stocks which are the soonest to expire - i.e. the oldest expiry dates
  • No labels