Stock allocation algorithm
1. Inventory lock
The locking function is used to reserve stock for specific documents/processes. Stock transactions on locked stocks that would modify one of the parameters defined in the lock are not allowed.
Produmex uses multiple levels of locks:
- Item/ Quality status: The item, the warehouse and the quality status is defined for the lock.
- Batch: The item, the warehouse, the quality status and the BatchID is defined for the lock.
- LUID: The item, the warehouse, the quality status, the BatchID and the LUID is defined for the lock.
- Detail: The item, the warehouse, the quality status, the BatchID the LUID and the location code is defined for the lock.
Locks can be user created or system generated.
System locks will be generated in the following processes:
- adding a batch to a sales order: ‘Batch’ locking,
- pick list proposal generated: ‘Batch’ or ‘LUID’ locking, based on the ‘Stock order by’ setting on the Pick list proposal generator,
- pick list generated: ‘Batch’ or ‘LUID’ level locking, based on the pick list proposal,
- pick list status converted to ‘Ready’ in normal picking: ‘Detail’ level locking,
- after an item has been picked in ad hoc picking: ‘Detail’ level locking,
- Receipt from production flow: ‘Detail’ locking for ingredients to be used,
- Beas-WMS integration: 'Detail' locking for components reserved in Beas.
Note: If the Do Not Lock Stock on Picking option is enabled on the General tab of the Organization Structure, no lock is created for pick list proposals and pick lists generated for sales and transfer documents. Inventory locks are always added for pick list proposals and pick lists generated for production orders regardless if the process is initiated from WMS or Beas.
The stock locked by the user can be linked to a customer or a base document.
There are several ways to create inventory locks manually:
- On the PMX inventory report
It is possible to create batch or LUID level locking, linked to the customer or the base document on the Inventory report. Click on Locking>Add. On the opening screen select the locking level and the customer, then add the quantity to lock. Select the sales order or sales invoice if needed. Please note: when creating a locking linked to the sales order/invoice, the locked quantity cannot exceed the ordered quantity. - On the stock allocation screen
- Locking in advance: After the reception a LUID level locking will be created for the customer. Please note: Only products with a quality status that can be shipped will be locked.
Locking level | ||||
---|---|---|---|---|
Item/Quality status | Batch | LUID | Detail | |
System generated | ||||
Sales order | Linked to the base document | |||
Pick list proposal | Linked to the base document | Linked to the base document | ||
Pick list ‘Not Ready’ | Linked to the base document | Linked to the base document | ||
Pick list ‘Ready’ in normal picking | Linked to the base document | |||
Item picked in Ad hoc picking | Linked to the base document | |||
Receipt from Production | Linked to the base document | |||
Beas-WMS integration | Linked to the work order/position | |||
User created | ||||
PMX inventory report | Linked to the customer or the base document | Linked to the customer or the base document | ||
Stock allocation screen | Linked to the customer or the base document | Linked to the customer or the base document | ||
Locking in advance | Linked to the customer |
Existing locks can be seen on the PMX inventory report. Select a line, then click on Locking > View. On the opening ‘Locked quantity’ screen every lock for the item on the selected line will be listed.
2. Picklist proposal
Pick list proposals can be created for the following documents:
- Sales order
- Production order (only if the ‘Create proposal for picking’ option is set to true on the Picking for production controller )
- Inventory transfer request
When creating a pick list proposal, the system performs the following logic to allocate stock:
1. Get locked stock linked to the base document
If there is locked stock linked to the base document, the system will propose that stock.
2. Get locked stock linked to the customer
If there are no locked stock linked to the base document or the quantity of the locked stock is not sufficient, then the system will check if there are locked stock linked to the customer.
When there is stock locked for the customer, the system will propose that stock. If the quantity of the locked stock exceeds the ordered quantity, the system will sort the locked stock based on the option selected as ‘Stock order by’ and will allocate the stock from the first line.
3. Get the list of free stock
If there is no locked stock linked to the customer or the quantity of the locked stock is not sufficient, then the system will filter the free stock to create the list of the stock that are allowed to be picked.
A stock will be listed if the following verifies:
- The stock is located in the selected warehouse
- The stock is not locked for other customer or base document
- Quality status can be picked and shipped
- Not expired stock
- Stock within external shelf life
- If there are batch attributes selected on the sales order, then only batches with matching batch attributes will be listed
Stock located on:
- Locations where the ‘Block stock from being used for the picking process’ option is enabled will not be taken into account.
After the list of the stock that is available for picking has been created, the system sorts it based on the ‘Stock order by’ setting on the Pick list proposal generator. No pick list proposal will be created if there is no available stock.
When the pick list proposal is generated, the proposed stock will be locked except if the ‘Do not lock stock on picking (pick lists can be created even if no stock is available)’ option is set to true on the on General settings. The level of the locking depends on the selected ‘Stock order by’ setting.
When the proposal line is using stock that was locked for a sales order or customer, this locking is removed and replaced by a locking linked to the proposal line. The level of the locking will be kept regardless of the ‘Stock order by’ setting.
If the ’Show pick list proposal info screen on incomplete proposal?’ option is enabled on the Pick List Proposal generator, an additional screen will open when creating pick list proposal but the total ordered quantity could not be allocated for the pick list proposal.
Multiple pick list proposals
Multiple pick list proposals will be created for a single document in the following scenarios:
- The sales order/sales invoice lines have different Shipping type. The following shipping type settings are taken into account for splitting document lines into several proposals:
- Automatic shipping?
- Automatic invoicing?
- Is customer coming to collect?
- The document lines have different warehouses assigned.
- The document lines have different Ship-to Names assigned.
- For the Produmex pick list type of the sales order/sales invoice the ‘Split PL on item pick type?’ and/or the ‘Split PL on item pick type 2?’ option is set to ‘Yes’ and there are items on the sales order that has different ‘Pick type’/’Pick type 2’ set on the Produmex Sales tab of the Item Master Data.
- The number of the pallets linked to the pick list proposal is higher than the ’Number of pallets’ defined for the Produmex pick list type of the sales order/sales invoice. The number of pallets linked to the pick list proposal is calculated based on the ‘Default quantity on logistical unit’ value that was specified on the Produmex Inventory tab of the Item Master Data of the item and the ordered quantity. If there is not enough stock to fulfill the proposal, the number of pallets will be calculated based on the free quantity that can be allocated for the proposal.
EXAMPLE:
The default quantity on a logistic unit is 10 pcs for Item A and 20pcs for Item B. The number of the pallets for the pick list type is 5.Sales order 1:
Item A: 30pcs = 3 x 10pcs = 3 pallets
Item B: 20pcs = 1 x 20pcs = 1 pallet
3 + 1 = 4 < 5 → 1 pick list proposal
Because the total number of pallets needed to fulfill the order is less than the number of pallets allowed on a pick list proposal, only one pick list proposal is created.Sales order 2:
Item A: 60 pcs = 6 x 10pcs = 6 pallets
Item B: 105 pcs = 5.25 x 20pcs = 5.25 pallets
6 + 5.25 = 11.25 > 5 → 3 pick list proposals
Because the total number of pallets needed to fulfill the order is greater than the number of pallets allowed on the pick list proposal, the pick list proposal is split.
1. The first proposal is created for 5 pallets of Item A, which is 50pcs.
2. The second proposal is created for the remaining 1 pallet of Item A and 4 pallets of Item B, which is 10pcs of Item A and 80pcs of Item B.
3. The third proposal is created for the remaining 2 pallets of Item B, which is 25pcs.Sales order 3:
Item A: 5 pcs
Item B: 84 pcs
Item A: 3 pcs
The system groups the lines of Item A:
Item A: 5pcs + 3pcs = 8pcs = 0.8 pallet
Item B: 84 pcs = 4.2x 20pcs = 4.2 pallets
4.2+0.8 = 5 → 1 pick list proposal
Because the total number of pallets needed to fulfill the order equals to the number of pallets allowed on a pick list proposal, the pick list proposal is not split and only one pick list proposal is created.
3. Pick list
The pick list will use the stock details of the proposal it was created from. When the proposal has a batch linked to it, only that batch can be allocated on the pick list. When the proposal has a LUID linked to it, then only that LUID can be allocated on the pick lists.
The locks created for the proposal will be converted to locks for the pick list without changing the locking level.
When the ‘Only pick items on location on same or lower level as dock?’ option is flagged on the Picklist controller, system will check whether there is stock from the proposed batch on the same or lower level location as the destination location (loading dock/input location of the production line). If there is not, no pick list will be generated and the pick list proposal will be closed.
Multiple pick lists
Multiple pick lists will be created for a single document in the following scenarios:
- Multiple pick list proposals were generated (Please see: Picklist proposal)
- Proposals were created on different times and the pick list was created before creating the next proposal.
If the document already has a pick list, a new pick list proposal can only be generated when the following verifies:
- there is at least one document line where the quantity allocated on the existing pick list is less than the ordered quantity
- there is available stock that can be allocated
Example:
Sales order: ItemA 10 pcs ItemB 10 pcs
The available stock that can be allocated: ItemA 10 pcs ItemB 0pcs
- Create pick list proposal:
Pick list proposal (1) allocates: ItemA 10 pcs - Create pick list:
Pick list proposal (1) linked to Pick list (1)
Pick list (1): allocates: ItemA 10 pcs - Create pick list proposal after ItemB with 10 pcs became available:
Pick list proposal (2) allocates: ItemB 10 pcs (as ItemA is already allocated, it will not be proposed) - Create pick list:
Pick list proposal (2) linked to Pick list (2)
Pick list (2): allocates: ItemB 10 pcs
Please note: If the ‘Force all ingredients to be on a proposal before creating a pick list?’ option is set to true on the Picking for production controller, the pick list will be created for a production order only when the total quantity of every material is allocated on the pick list.
4. Initiate the picking
4.1. Picking/ Multi-picking/ Zone-picking
After the pick list has been printed or it has been selected on the scanner, the system will select the location to pick from based on the following checks:
- Only locations in the selected warehouse are taken into account
- There is stock of the proposed batch on the location
- Depending on the settings of the Pick list controller, bulk locations might be taken into account:
- If the option ‘Can the user pick full pallet from bulk location?’ is flagged and there is a full pallet on the bulk location.
- If the ‘Must the user first pick full pallet from bulk location?’ option is also flagged, the full pallet on the bulk location will be allocated.
- If the ‘Can the user pick bulk quantity from bulk location?’ option is set to true, the user can pick bulk quantities from bulk locations.
Stock on the locations that are allowed for picking will be sorted based on the ‘Stock order by’ setting on the Pick list controller, unless the ‘Force the user pick full pallet?’ option is set to true. In this case the user will be forced to pick the full pallet of items which contains the same or a lower quantity than the quantity that has to be picked. If there are still quantity to pick for the item and there are no more full pallets left, then the stock will be allocated based on the ‘Stock order by’ setting.
If there is stock from the proposed batch/LUID on a location from what the user can pick, the status of the pick list will be changed to ‘Ready’. The locks for the pick list will be converted to ‘Detail’ level.
If the 'Picking: Make pick list ready for selected line? (Y/N)' option is enabled on the pick list controller, and the user performs the picking in the Picking flow, then the status of the pick list is changed to ‘Partially Ready’ after an item is selected to pick. Only the corresponding pick list line’ s status is set to ‘Ready’, the other, unpicked lines remain in ‘Not Ready’ status.
If there is no stock of the proposed batch/LUID located on a location from the user can pick , then the status of the pick list will remain ‘Not ready’ and the locks will remain on the batch/LUID level. The user have to select alternate stock on the scanner. Every batch that is allowed to be picked will be listed on the scanner as alternate stock.
After a pick list line has been picked, the locking will be converted to ‘Detail’ level. The status of the line will be changed to ‘Picked’ or ‘Packed’. (based on the pick list type and the picking process.)
If the ‘Always status picked’ option is ticked for the pick list type, the line status will be converted to ‘Picked’ regardless of the picking process. If it is disabled, then the status will be changed to ‘Picked’ when picking onto a moveable location or ‘Packed’ when picking without a moveable location.
4.2. Ad hoc picking
The status of the pick list will remain ‘Not Ready’ and the locking level will remain ‘Batch’ or ‘LUID’ after the pick list has been printed or selected on the scanner. The stock that can be picked will always be sorted by:
- BBD
- Batch with smallest free stock
- Pick locations
- Location with most LUID’s
- Non-full pallets
- Smallest quantities per inventory line
- Location sequence
Please note that bulk locations are only taken into account if the ‘Allow ad hoc picking from bulk locations?’ option is set to true on the Pick list controller.
After a pick list line has been picked, the locking will be converted to ‘Detail’ level. The status of the line will be changed to ‘Picked’ or ‘Packed’ depending on the pick list type and the picking process.