Sunteți pe pagina 1din 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 LC1 = $2.00/ea


Layer 2 LQ2 = 10 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 supplier’s 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 item’s 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 Beginning Balance Layer 1 1000 @ $5/ea


1/8 Issue 100 100 @ $5/ea
1/10 Receive 20 20 @ $10/ea (creates Layer2)
1/18 Receive 30 30 @ $5.5/ea (creates Layer3)
1/25 Issue 910 900 @ $5 (from Layer1)
10 @ $10 (from Layer2)
1/29 Receive 30 30 @ $6 (creates Layer4)

1/31 Ending Balance Layer 2 10 @ $10


Layer 3 30 @ $5.5
Layer 4 30 @ $6
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 layer’s
cost
- Customer returns (RMS receive transactions) are valued at the latest layer’s
cost; if the RMA is referred to a sales order line it is valued at that shipment’s
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 sub-
inventories 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 item’s 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

S-ar putea să vă placă și