Inventory Allocation - Kit Processing

This section describes how kit items are reserved and allocated to by the order entry and order processing systems.

Special note on kits: When an order is for a “kit” the system checks the bill of materials (BOM) for the kit and will update the allocation information in both the “kit” item and component items.  The “reserved” quantity will always be updated.  The system will only allocate sufficient quantities of top level and component items to build complete kits.  Example: If the order line is for 5 “kits” and only sufficient component parts are present for 3 kits the system will increment the reserved quantities for the complete number of kits and component items, but only allocate enough for three kits.  This kit processing takes place any time inventory is reserved or allocated.  An item is identified as being a “kit” by setting the TYPE field in the inventory master to “K”.

RESERVE__KIT Function: The reserve kit function is called by the soalloc routine each time a “kit” item is processed by the soalloc routine.  This function is passed the quantity required, which during order entry is the quantity ordered and in all other cases is the quantity ordered minus (the quantity already shipped plus the quantity already allocated) and does the following before returning the quantity that are available to allocate of the top level item (kit).

The function expects the top level (kit) part to be in the buffer and leaves the same record in the buffer when it is done processing

The function first issues a Start Transaction command and then re-reads the top level item, thereby locking it.  It then reads through the BOM for the top level item, checking the inventory record for each component item to determine the maximum number of top level items that can be built.  This process locks both the inventory records of the component items and the BOM records to provide a stable data set for processing.

Once the function has determined the maximum number of “kits” that can be build with the available (un-allocated) component items it then loops though the BOM again.  The reserved quantities (QTY_RSV & TOT_RSV) in each inventory record is updated by the total number of items required (if the reserve inventory argument was passed to the function) using the schedule date passed to the function.  The allocated quantity is updated based upon the maximum number of kits that can be built.  This means that component items are not allocated until there are sufficient component items available to build complete kits.

Once the second loop is completed an End Transaction command is issued to complete the transaction.  Note: performance on systems capable of performing record locking will be much better than systems doing file locking.

SOALLOC Code: This code, stored as an #include file, is the primary allocation code used in all places where allocation is required except order entry[1].  This procedure is passed an inventory item (through the buffer) which it then processes as follows.

1. The process checks the BOM file to determine if the item is part of any “kits”.  If the item is part of a kit (item exists in a BOM) the process then completes the following steps.

 If the item is not found in a BOM (not a kit) then the process starts scanning through the open, and then the back ordered, sales orders allocating inventory until no more inventory is available to be allocated.

2. If the item is part of a “kit” the process reads through the BOM file to identify all BOMS the item is part of.  This is the “outer” loop.

3. Each time it finds a BOM containing the item the process then searches through the sales order line item file to identify orders for the top level item (kit) that the BOM describes. This is the “inner” loop.  As it finds top level items that are not yet fully allocated to, it creates a temporary record in the Sotemp file, using a temporary number, for each sales order line found.  The open (un-allocated) quantity is recorded in the temporary line.

4. When it has loaded the Sotemp file with a list of all the top level items possibly requiring the item it then reads through the open order file and adds records to the Sotemp file for orders specifically for the item being processed.

5. Once this is completed the process reads through the list of records in the Sotemp file in  order number sequence and either allocates inventory to the item or, if it is a “kit”, calls the Reserve_Kit function to attempt to allocate inventory by checking all the component items making up the kit.  Note that this can have the result of allocating other component items.

On a regular basis, the shipping company can use the information entered in the Sales Order and Inventory files to produce a report of the items and quantities required to fill orders through a particular scheduled shipping date.  By comparing the order quantities and schedule dates for  each item to the inventory on hand quantities, lead times (amount of time it takes to reorder the item), and safety stock levels, the shippers purchasing department is able to order only the quantities of each item that will be required to fill current orders.  

As inventory is received by the shipper and entered into the system, the inventory on hand quantities and the quantity available (quantity on hand less the quantity reserved) of each item received are increased.  Once the Inventory receipts for the day have been entered, the system allows the operator to allocate the newly available items to backordered sales order lines in schedule date order.  As inventory is allocated to the backordered sales order lines, the system changes the status of the allocated to sales order lines from "B" (backordered) to "O" (open). 

Once available inventory has been allocated, the operator prints the picklists for all open unprinted orders with schedule dates that fall within the schedule date through which inventory has been allocated.  The result is that the system prints the picklists for all open orders with schedule dates within the range selected, and for which inventory is available to be shipped out to the customer.  The orders for which picklists have been printed are then filled and shipped out and the procedure is repeated again the next day.

As part of normal order processing orders will be accepted for delivery on a future date.  This is called a scheduled shipment.  This document describes how the STREAM Order Processing System handles these situations.

As inventory is received and entered into the system, the inventory on hand quantities and the calculated quantity available (quantity on hand less the quantity reserved) of each item received are increased.

Once Inventory receipts for the day have been entered, the system allows the operator to allocate the newly available items to open and backordered sales order lines.  As inventory is allocated to the backordered sales order lines, the system changes the status of the allocated to sales order lines from "B" (backordered) to "O" (open) and the PRINT FLAG is set to "Y" to indicate that a  picklist should be printed.

Once available inventory has been allocated, the operator prints the picklists for all open unprinted orders by schedule date.  Which schedule date should be used depends upon your companies specific operating procedures which should be documented in your "System Procedures Guide".   The result is that the system prints picklists for all open orders with schedule dates within the range selected, and for which inventory is allocated.  The orders for which picklists have been printed are then filled and shipped out and the procedure is repeated again the next day.

Picklist - The document produced by the system which lists the items which are required to fill a particular sales order and which inventory has been allocated to by the system.  The picklist lists the items on the order that are available, and due, to be shipped to the customer.  Beside each item on the picking list is a space in which the person filling the order can indicate the actual quantity of each item that was actually picked for shipment.  When the scheduled shipping system is used, picklists are printed both automatically and in batches. 

Picklists are printed automatically by the Sales Order Entry program when the items on the order are scheduled within the scheduling window and the items are available to be shipped at the time the order is entered.  In other words, picklists are printed automatically when inventory is allocated to an order at the time of order entry. 

Picklists are also printed in batches.  If an order is not scheduled within the scheduling window or if there is no inventory available to complete the order, the Sales Order Entry program does not print a picklist for the order.  As time goes by and inventory is received, sales orders are reconciled and available inventory is allocated to backordered sales order lines.  As these procedures take place, orders which were not allocated to at order entry time move forward into the scheduling window.  Backordered order lines also are converted to open order lines as inventory is received and becomes available to ship.  On a regular basis (normally daily), picklists for these orders are printed so they may be completed.  The operator uses the Print Picklist program to print picklists for these orders which are allocated to after they are entered.

The following table describes data elements (fields) used by the allocation process in the inventory master, sales order, and shop order line records.

Inventory Fields Used by the Allocation Process

Field Name

Description

Usage

QTY_OH

Quantity On Hand

The number of units in stock or “on hand” for the item in the inventory location currently being processed.

QTY_RSV

Quantity Reserved

The total quantity of the open (or backordered) sales order and shop order lines for the item that are scheduled within the current scheduling window for the item.[2] 

TOT_RSV

Total Reserved

The total quantity or the open (or backordered) sales order and shop order lines for the item.  This total includes both order lines with schedule dates in the current scheduling window, and order lines that have not yet fallen into the window (orders scheduled into the future).  The Total Reserved Quantity is the total quantity of the item that is needed to fill customer and production orders at a point in time.

AUTO_ALLOCATE

Auto-allocate Flag

The Auto Allocate flag is used to determine whether or not to automatically allocate quantities of the item to open sales and shop orders for the item when the item is built or received into the system.  The Auto Allocate flag is normally set to Y for all items so that the system can allocate the item when it is needed.  The Auto Allocate flag can also be set to N, to prevent the system from automatically allocating available quantities of the item.  This option is used mainly when there is a shortage of a particular item, and you need to manually allocate the item to make sure it is allocated to the sales or shop orders that you wish to fulfill.  Please note:  If the Auto Allocate flag for an item is set to no (N) then inventory will never be automatically allocated to sales orders for an item.

MAX_AUTO_ALLOC

Maximum Auto-allocation quantity

The maximum number of units the system should allocate to a sales order.  Setting this quantity allows the company to force human action before unusually large quantities of an item are shipped (in error), or to allow for vendor shipment of an item when appropriate.  The Maximum quantity that the system should be allowed to allocate should be entered into this field in the Inventory record.

QTY_ALLOC

Quantity Allocated

The number of units of this item that have been allocated to open sales and or shop orders.  This number should always be lower than or equal to the quantity on hand for the item for stocking items.  Non Stock items may have an allocated quantity greater than the on hand quantity.

LEAD

Lead Days

The Sales Lead Days for the Inventory Item.  The system can be configured to base the scheduling window for each item on the value entered into the Lead field for each item or it can be configured to use a global value for all items in the system.  Please see the discussion on the scheduling window for more information about this field and system configuration options.

SAFE_STK

Safety Stock

The quantity of safety stock that has been reserved for particular customers.  Safety stock is inventory that you guarantee to have available in stock for certain customers.  If a safety stock level is defined for an item, the system will never automatically allocate below the safety stock level for the item.  Safety stock is allocated using the manual allocation procedure.

Sales Order Line Item Fields used by the Allocation Process

Field Name

Description

Usage

ORDERED

Quantity Ordered

The number of units desired by (ordered by) the customer on the current sales order line.

SHIPPED

Quantity Shipped

The number of units that have been already shipped out against the current sales order line.  The ordered – shipped quantity in each line item determines the remaining open quantity in the line.

SHIP_QTY

Quantity Allocated

The number of units, of on hand inventory that have been allocated to or specifically assigned to the current sales order line.

SCH_DATE

Schedule Date

The Schedule Date in each Sales Order Line Item is used along with the Lead Days in the Item (or a system parameter value) to determine if each sales order line is in the current scheduling window.  The system will only allocate inventory automatically when the order line is in the current window and when inventory is available to be allocated to the order.

Shop Order Line Item Fields used by the Allocation Process

Field Name

Description

Usage

EXTENDED_QTY

The extended or total quantity of the component item required to build the number of top level units specified in the shop order.

The extended quantity is used along with the allocated and the pulled quantity to determine the quantity of the item that still needs to be allocated to the line item.  The total extended quantity of the component, less the quantity already pulled and the quantity that is currently allocated is used to determine the number of units that still need to be allocated to the shop order line.

PULLED

The quantity of the component that has already been pulled into work in process or the production system.

The pulled quantity is used along with the extended and the allocated quantity to determine the quantity of the item that still needs to be allocated to the line item.  The total extended quantity of the component, less the quantity already pulled and the quantity that is currently allocated is used to determine the number of units that still need to be allocated to the shop order line.

ALLOCATED

The quantity of the component item that is currently allocated or assigned to the shop order line.

The allocated quantity is used along with the extended and the pulled quantity to determine the quantity of the item that still needs to be allocated to the line item.  The total extended quantity of the component, less the quantity already pulled and the quantity that is currently allocated is used to determine the number of units that still need to be allocated to the shop order line.  The allocated quantity in each shop order line is also used to determine the quantity of the item that should be printed on the pull ticket for the shop order when a pull ticket is issued for the order.  You may not pull and process a pull ticket quantity for the line that is higher than the quantity that is allocated to the line.

SCH_DATE

Schedule Date

The schedule date for each shop order is also used along with the lead days for each inventory item (or a global variable) to determine if the shop order line is in the current scheduling window.  The system will only automatically allocate to shop order lines that are in the current window.

Technical Information

add ons –

add section on scheduling window

config options

manual alloc,

safety stock issues

printed flags – block allocation.

special order items

vendor ship items.