VisionCore How To
Home Search Support Forum Knowledge Base Print

How FIFO/LIFO works in VisionCore

Before we follow how FIFO/LIFO works in VisionCore, let’s explain some terms that will be used in this illustration.

1.Incoming Stocks - Incoming stocks can come from various entry points in the system. It can be posted from Inventory Adjustment, Inventory Opening Balance, Purchase Receipt, Build Assembly, Inventory Transfer (as new stock to the target warehouse), and Credit Memo. It can also happen when you unpost a posted Sales Invoice transaction. Sales invoice transactions normally ‘sell’ outgoing stocks. Unposting the sales invoice transaction means you are buying back the item from the customer.

2.Outgoing Stocks – Outgoing stocks are posted in various exit points in the system. It can be posted in the Inventory Adjustment (using a negative quantity), Debit Memo (like selling the stock back to the Vendor), Sales Invoice, Build Assembly (as component of the assembly item), and Inventory Transfer (deducting the stock from the source warehouse). If you unpost any of these transactions – say you unpost a Debit Memo transaction, the system will treat it like a new Incoming Stock.

3.Transaction Date – The date used in the transaction. This is an important piece of this process. It is used in determining the age of the item. In FIFO, older items are sold first. In LIFO, older items are sold last.

Below is the process of FIFO/LIFO in VisionCore

Let’s begin by adding stocks for an item called Widget.

Nov. 3, 2011 - The user creates and posts a Purchase Receipt and receives 10 pieces of Widgets at $1.50 per piece. It is stocked in the MAIN warehouse.

What happens behind the scene:

Bullet PointThe system detects an Incoming Stock because the stock quantity is a positive 10.

Bullet PointThe system creates a new record of the item in tblICInventoryStock. It logs the transaction date, product id, warehouse, stock quantity received and cost. There is also a field in this table for stock quantity sold and it will be zero at this point of time because this is a new incoming stock.  tblICInventoryStock acts as the cost tier for FIFO/LIFO.

Bullet PointThere are other tables being populated by the system. Those tables are used in either tracking the average cost (yes, average cost still computes even when using FIFO/LIFO), the G/L entries for accounting, and look-up tables for the stock totals.

3.        Nov. 4, 2011 – The user creates and posts an Inventory Adjustment and receives 25 pieces of Widgets at $2.50 per piece. It is stocked in the MAIN warehouse.

What happens behind the scene:

Bullet PointThe system detects an Incoming Stock because the stock quantity is a positive 25.

Bullet PointThe system creates a new record of the item in tblICInventoryStock. It logs the transaction date, product id, warehouse, stock quantity received and cost. The stock quantity sold is at zero. At this point, there are now two records in this table, see below:

Transaction Date

Product ID

Warehouse

Stock Quantity Received

Stock Quantity Sold

Cost

Nov. 3, 2011

Widget

MAIN

10

0

$1.50

Nov. 4, 2011

Widget

MAIN

25

0

$2.50

 

4.        Let’s sell the item.

5.        Nov. 10, 2011 – the user creates and posts a Sales Invoice. The user sold 15 pieces of Widgets from the MAIN warehouse.

What happens behind the scene:

I.  The system detects an Outgoing Stock because selling an item means negative 15 for the system.

II.  Validate if there is enough stocks. If there is not enough stocks to sell, stop the process and inform the user. If there is enough stocks, the system will continue in posting the transaction.

III.  Begin a loop. Stop only after all the outgoing stocks are fulfilled.

IV.  Determine the record to use from tblICInventoryStock.

 For FIFO, the system will pick a record in tblICInventoryStock that fills the following criteria:

         a.)  The Stock Quantity Receive is greater than the Stock Quantity Sold.

         b.)  The record has the oldest transaction date.

         c.)  The item is a Widget and it will be coming from the MAIN warehouse.

 

 For LIFO, the system will pick a record in tblICInventoryStock that fills the following criteria:

         a.)  The Stock Quantity Receive is greater than the Stock Quantity Sold.

         b.)  The record has the youngest transaction date.

         c.)  The item is a Widget and it will be coming from the MAIN warehouse.

 

V.  Process the selected record.

 For FIFO:

         a.)  The system will pick the record from Nov. 3, 2011 first. This record can only sell 10 pieces because it only have 10 pieces in its Stock Quantity Received.

         b.)  The Stock Quantity Sold of the same record will be updated to 10.

         c.)  The system will add the G/L records saying it sold 10 pieces of Widget for $15.00 ($1.50 per piece).

 

 

Debit

Credit

Cost of Goods Sold

$15.00

 

              Inventory

 

$15.00

                                                         

         d.)  There are other tables being updated but no need to mention them because it is not primarily involved in the FIFO/LIFO process.

 

 For LIFO:

         a.)  The system will pick the record from Nov. 4, 2011 first. This record can sell 25  pieces. We only need 15 pieces to sell.

         b.)  The Stock Quantity Sold of the same record will be updated to 15.

         c.)  The system will add the G/L records saying it sold 15 pieces of Widget for $37.50 ($2.50 per piece).

 

Debit

Credit

Cost of Goods Sold

$37.50

 

              Inventory

 

$37.50

 

VI.  Are all stocks sold?

If the answer is YES, the system commit the stock changes and accounting to the G/L table.

If the answer is NO, the system will go back to step IV (Determine the record to use from tblICInventoryStock)

 For FIFO:

 In our sample above the system has to process 5 more pieces, it will repeat process IV.

         a.)  The system will now pick the record from Nov. 4, 2011. It has 25 stocks received and zero sold.

         b.)  The Stock Quantity Sold of the same record will be updated to 5.

         c.)  The system will add G/L record saying it sold 5 more pieces of Widget for $12.50 ($2.50 per piece).

 

 

Debit

Credit

Cost of Goods Sold

$12.50

 

              Inventory

 

$12.50

 

         d.)  After this, it will not go back to step IV.
                       

 For LIFO:

In our sample above, system has fulfilled to sell all 15 pieces. It will not go back to the loop.

6.        Let’s recap on how the tblICInventoryStock will look like after selling 15 pieces on the invoice in Nov. 10, 2011.

FIFO

Transaction Date

Product ID

Warehouse

Stock Quantity Received

Stock Quantity Sold

Cost

Nov. 3, 2011

Widget

MAIN

10

10

$1.50

Nov. 4, 2011

Widget

MAIN

25

5

$2.50

 

LIFO

Transaction Date

Product ID

Warehouse

Stock Quantity Received

Stock Quantity Sold

Cost

Nov. 3, 2011

Widget

MAIN

10

0

$1.50

Nov. 4, 2011

Widget

MAIN

25

15

$2.50

 

In summary, the system was able to determine which stocks to sell first in FIFO and LIFO by using the transaction date, arranging it from oldest to youngest (FIFO) or from youngest to oldest (LIFO) and comparing the Stock Quantity Received and Stock Quantity Sold.