You are on page 1of 11

FIFO/LIFO Perpetual Costing Overview

Laura Miller September 2001

FIFO/LIFO Perpetual Costing Overview


In addition to Standard and Weighted Average costing methods, there is an additional primary cost method known as FIFO/LIFO costing. This method of costing is generally accepted and widely used. This functionality is available in Oracle Applications Release 11.5.2. FIFO is defined as First In First Out. The earliest received stock is used first while the latest received stock is still on hand. LIFO is defined as Last In First Out. The latest received stock is used first while earliest-received stock is still on hand. The company will choose either FIFO or LIFO costing based on the business requirements of a particular organization. FIFO Costing is a method of identifying inventory based on the assumption that costs should be charged against revenue in the order in which they occur. The inventory remaining on hand is presumed to consist of the most recent costs. The first goods acquired are the first goods out, and the last goods acquired are in ending inventory (assuming that ending inventory exists). FIFO approximates the results that would be obtained by the specific identification method of costing inventory. This means that the cost is determined by the association of flows of inventory. Under FIFO, the first units in stock are the first units out, which means that ending inventory is of the units purchased last. LIFO Costing is in general the opposite of FIFO costing with a few exceptions. Those exceptions will be highlighted further in this document as they are applicable. FIFO/LIFO Item Costs and layer costs are maintained at the elemental levels and by cost groups. The FIFO/LIFO Item Cost is the weighted average of all inventory layer costs divided by the sum of the layer quantities. This item cost is used for current inquiries and reports. The Copy Cost, Mass Edit and Cost Rollup process will use this item cost for processing. FIFO example: Layer 1 LQ1 = 20 ea Layer 2 LQ2 = 10 ea LC1 = $2.00/ea LC2 = $1.40/ea

FIFO Item Cost = ($2.00 * 20 + $1.40 * 10)/(20+10) = 1.80 ea

The costing can be processed at the organization level only. If the organization is a FIFO costing organization, then all inventories of the org is valued at FIFO. No mixing of cost types is allowed in an organization and there is no sharing of costs with orgs when using FIFO/LIFO costing. The FIFO/LIFO method can be used for an organization even if the other organizations in a company are using standard or average costing. With perpetual costing, inventory balances and values are updated after every transaction. Using FIFO/LIFO allows a company to have a more accurate inventory value for the business practices of the organization. The cost of the inventory is maintained in layers. Receipts and assembly completions are maintained in layers, each with its own costs and quantities. Issues are valued at the costs of the earliest layers remaining in onhand inventory. Period end value is kept in layers, based on receipts that sill have quantity balances. As the period closes, the layers for previous periods and years will be in a single layer and carried over to the next period. The inventory layer is the unique identification of every receipt into inventory. Each inventory layer has an associated cost and quantity. The costs are tracked with respect to a cost group. Therefore the item cost in a cost group is the weighted average of costs across all inventory layers in that cost group. Cost Layers are maintained at cost group level. This is available to support Project Manufacturing. Using cost groups allows an organization to maintain layers and values at the project cost group level. This allows for a more accurate costing of projects to be reported. A Cost Group is the entity that owns the cost of an item. The cost group is defined under a specific legal entity and associated to an inventory organization in the Legal Entity. Assigning inventory organizations to the same cost group (organization type) allows the item to share costs across the inventory organizations. Cost Groups can be of two types: - Project type: Used to support Project Manufacturing in Perpetual Weighted average costing. - Organization type: Used to support Periodic Costing for legal reporting requirements

FIFO/LIFO costing is based on Purchase Order prices. No invoice or acquisition costs are considered when costing a suppliers receipt. This is similar to Average costing; invoice price, freight, taxes and other charges are not included. To include those additional costs, a manual cost update for the item must be performed. The Layer Cost of an item is updateable. Each items cost can be updated at a specified layer with user-defined values. The process then creates adjustment entries onhand quantity. Also like average costing the update can only be done for a specific item not for a range of items or for all items. In FIFO/LIFO costing, every receipt is stored as an inventory layer. The cost however does not include acquisition costs so it is not a representation of the true cost of the item. To allow a realistic representation of the true cost, to include acquisition costs, taxes and freight costs, the user can manually update costs associated with an inventory layer. This process is similar to the Average Cost update process When the cost associated with an inventory layer is updated, the WIP layer adjustments is not supported. The new cost will be used the next time the layer is consumed Layer cost update form updates the cost of the inventory layer by inserting a layer cost update transaction in MMT (txn_action_id = 24, txn_src_type_id =15) and cost details into MSTCD There are three ways to perform the update: 1 - Update the total item cost for the inventory layer The total change in the item cost is proportionately distributed to individual elements and level types that currently exist for an item 2 - Update cost by element and level type 3 - Update total value, i.e. change to the value of layer_quantity * layer_cost. Variance could occur if the value change leads to negative onhand value; in this case onhand value becomes 0 and the balance becomes the variance amount Inventory quantities and values are tracked and reported by layer. The application tracks receipts throughout the lifecycle from the initial delivery until the item is used up or shipped.

Reports and Inquiries that are currently available for Weighted Average Costing are also available for FIFO and LIFO costing. New reports and inquiries for the layer information have been added. CMCLCW Layer Cost Transaction Worker Spawned by Actual Cost Manager CMCACM Run sequentially, only on allowed at a time CSTRLIVR Layer Inventory Value Report

FIFO/LIFO transactions are classified as two types: 1 - Layer-Identified transactions: these identify specific layers and can be a new layer (from a new PO) or existing layers. 2 - Layer-Derived transactions: these transactions do not have layer identification. Most miscellaneous issues are of this type and follow the FIFO/LIFO method established for the organization. Layers are created as inventory is received. A receipt creates a new layer with it's own quantity and cost. These layers will be consumed if there is a balance in the layer. Then consumption moves to the next layer. The cost for issues can vary due to the related cost of the layer being consumed. Layers are maintained only in the seeded FIFO/LIFO cost types. User defined cost types do not have layers costs. Cost layers are not held at sub-inventory levels. FIFO Cost Flow example for an item: 1/1 1/8 1/10 1/18 1/25 Beginning Balance Issue 100 Receive 20 Receive 30 Issue 910 30 Layer 2 Layer 3 Layer 4 Layer 1 1000 @ $5/ea 100 @ $5/ea 20 @ $10/ea 30 @ $5.5/ea 900 @ $5 10 @ $10 30 @ $6 10 @ $10 30 @ $5.5 30 @ $6

1/29 Receive

(creates Layer2) (creates Layer3) (from Layer1) (from Layer2) (creates Layer4)

1/31 Ending Balance

A new receipt layer is costed as follows: - PO receipts are valued at PO price - Assembly completions are valued at job completion cost - Misc. receipts, account receipts, and user-defined transactions are valued at user entered transaction cost - Direct interorg transfer and intransit receipts are valued at transfer transaction cost - WIP component returns are values at the job component cost - Positive cycle counts and physical adjustments are valued at the latest layers cost - Customer returns (RMS receive transactions) are valued at the latest layers cost; if the RMA is referred to a sales order line it is valued at that shipments layer cost The Receipt Layer in Inventory is the entity that identifies a receipt into inventory. Each receipt layer has a cost and a quantity. The costs are associated with a cost group. The cost of each item in a cost group is the weight average cost of the costs across all receipt layers in that cost group. Quantities are consumed on the FIFO/LIFO basis identified for the organization. A receipt into Inventory replenishes negative layers. Layers can be replenished up to a zero balance, oldest layers first for FIFO and recent layers first for LIFO. If there are negative layers at the time of a receipt transaction, the receipt will cause replenishment of the negative layers. The layers will be replenished to a zero balance with the oldest negative layers replenished first for FIFO and the most recent layer first for LIFO costing. Inventory layers are consumed under these conditions: - Issued to jobs - Transferred out of inventory, the project cost group or the org - Sold - Scrapped - Loss (cycle count or physical count adjustments) Layer-Identified transactions have their own transaction costs and will consume the specified layer if there is still a positive balance for the layer. Return to Vendor and Assembly Return to WIP are examples of this type of transaction. When a Layer-Identified issue cannot consume the specified layers, then the next layer will be consumed. This alternate layer may not have the same costs as the first layer. This will cause a variance to be created.

The variance is the difference between the cost of the transaction and the value of the layer(s) actually consumed. The variance account (Layer Variance) is entered by the user when defining the organization parameters costing information or when defining the cost groups for the organization. This variance account is then credited or debited, depending on the value of the transaction. For transactions that have a negative variance, the transaction is considered to be undercosted. For transactions that have a positive variance, the transaction is considered to be overcosted. Material transactions in the MTL_MATERIAL_TRANSACTIONS table are grouped based on layer identified and layer derived transactions. Layer identified transactions identify the exact inventory receipt layer to consume Examples: Return to Vendor, RMA, WIP Assembly returns Layer Derived Transactions do not identify an exact receipt layer to consume. The FIFO/LIFO processor chooses the layers to be consumed based on the layer consumption algorithm. This is determined by the application. Examples: Issues, Completions, and Physical Inventory Adjustments Components issued to WIP are maintained in independent layers. Return job components to inventory based on the FIFO WIP layers; the earliest components issued to a job and not consumed are returned to inventory. Job components are returned to inventory at the cost of the latest WIP layer. WIP layers are created when there are WIP component issues. Each WIP layer consists of one or more inventory layers. This depends on the number of layers consumed by the issue transaction. Quantity and costs are maintained separately for each inventory layer within a WIP layer. When an assembly is completed, the relieved material costs for the assembly are costed using the earliest layer's costs within the WIP layer that are still available to be relieved. Scrap transactions relieve costs in the same manner. WIP Component Issue - Consumes inventory layers in FIFO method - Creates one WIP layer and maintains the inventory layers visibility in WIP - Increases the applied_quantity in CST_WIP LAYERS tables

WIP Component Return - Will consume inventory layers in WIP in LIFO manner - Decrease the applied_quantity in CST_WIP_LAYERS table - If no WIP layers exist, it creates on at the latest layer reference/cost in inventory - If available quantity (applied_quantity relieved_quantity) is insufficient, it drives the latest WIP layer applied_quantity negative - Creates a single new inventory layer, averaging the cost from WIP layers by inserting a row in MTL_CST_TXN_COST_DETAILS WIP Assembly Completion (NonFinal) and WIP Scrap - Consumes layers in WIP in FIFO order - Increases relieved_quantity in CST_WIP_LAYERS - If no WIP layers exists, creates a new WIP layer using the latest layer reference/cost in inventory - If available quantity is insufficient, drives latest WIP layer relieved_quantity greater than the applied_quantity - Creates a new single inventory layer by inserting a row in MTL_CST_TXN_COST_DETAILS WIP Assembly Return, WIP Scrap Return - Updates the layers in WIP, decreases relieved_quantity in CST_WIP_LAYERS in LIFO order - Quantity decreases using this ratio: i_txn_qty/CST_COMP_SNAPSHOT.prior_completion_qty - If no WIP layers exist creates a new WIP layer using the latest cost in inventory (should not ever happen as per dev) - If available relieved_quantity is insufficient, it drives the latest WIP layer relieved_quantity negative (should never happen as per development) - For assembly returns, inventory layers are consumed in FIFO order, using this as the cost basis and driving differences to variance WIP Final Completion - Flush all quantities out of WIP layers for each operation/layer - If applied_quantity relieved_quantity >=0 flushes quantities to CST_WIP_LAYER_DETAILS.relieved_completion_quantity - If applied_quantity- - relieved_quantity <0 flushes quantities to CST_WIP_LAYER_DETAILS.relieved_final_compl_quantity - Flush WIP_REQ_OPERATION_COST_DETAILS values by calling existing weighted average assembly completion algorithm

WIP valuations are maintained in WIP_PERIOD_BALANCES table. This table is supported by the following tables: WIP_REQUIREMENT_OPERATIONS WIP_REQ_OPERATION_COST_DETAILS WIP_OPERATION_RESOURCES WIP_OPERATION_OVERHEADS For FIFO/LIFO costing, WRO and WROCD need to reflect the cost information by layer; so additional tables were created to support the layer costing: CST_WIP_LAYERS CST_WIP_LAYER_COST_DETAILS Sub-inventory transfers for FIFO/LIFO costing is similar to the process that currently exists for Average Costing. The only difference is that layer maintenance must be performed in the FIFO/LIFO cost method. Although the inventory layer is maintained at the cost group level, not the sub-inventory level, then the sub-inventory transfer does not affect the inventory level. Because transfers can be done between subinventories holding stock for different cost groups or between an asset and expense sub-inventories, logic is required to support these cases. When a transfer takes place, two inventory transactions are created. One is created for the sending organization and one for the receiving organization. If there is a cost group change, then the inventory layers will be consumed from the sending organization and an inventory layer is created in the receiving sub-inventory. If there is no cost group change, then the current cost of the item is obtained and no new inventory layer is created in the receiving organization. For an Asset to Expense transfer, the asset sub-inventory for the item is consumed. There is no new inventory layer created in the expense sub-inventory. For Expense to Asset sub-inventory transfer and the item is an asset, a new inventory layer is created in the receiving sub-inventory. The cost of the item is taken from the latest layer cost in the receiving cost group. Inter-org Transfers and FIFO/LIFO Costing: Direct transfer from FIFO/LIFO ==> FIFO/LIFO organization causes the cost workers to process the costs in each organization before the inventory is transferred. This allows the inventory layers to be consumed and the new weighted item cost to be used a s a new inventory layer in the receiving organization.

Direct transfer from FIFO/LIFO ==> Average Cost organization causes the inventory layers to be consumed in the sending organization. The cost worker then picks up that new weighted item cost and re-averages the costs for the item in the Average Costing organization. Direct transfer from Average Organization ==> FIFO/LIFO organization causes the cost worker to issue the item at the current cost. The FIFO/LIFO organization will then pick up the cost and create a new inventory layer for the item using that current cost. Direct transfer from FIFO/LIFO ==> Standard Costing organization causes the cost worker to consume the inventory layers for the item in the sending organization. The item is then costed in the standard organization at the standard cost. Direct transfer from Standard Costing organization ==> FIFO/LIFO organization causes the new cost to be the standard cost of the item. A new inventory layer is created in the FIFO/LIFO organization with that cost.

New tables used for FIFO/LIFO are the following: CST_INV_LAYERS This table stores the layers that get created due to a receipt into inventory; Creation_date is the sysdate when the layer is created, NOT the transaction date of the transaction creating the layer Layer_cost column stores the items layer cost and issues of the item will be at that cost

CST_INV_LAYER_COST_DETAILS This is the child table of CST_INV_LAYERS table and stores layer cost details by level/cost element

MTL_CST_LAYER_ACT_COST_DETAILS This is the child table of MTL_CST_ACT_COST_DETAILS and stores transaction/layer cost information and quantity Stores costs of layers by level and cost element Layer_cost at which layer is consumed Actual_cost cost at which layer is supposed to be consumed Differences between the costs are stored in variance_amount Summarized cost variance across layers for a cost group is stored in MCACD

You might also like