Problem : Stock Control in MS ACCESS with FIFO
Allready I’ve got some solution in Ms Access 2002 for stock control ( purchasing and sales), but when it comes to calculate the price then i got the problem, because I want everything to be sold with purchasing price + profit. So I’m not interested on full solution but only sugestions how to calculate the sale price for each product by method (FIFO or LIFO):
Example for goods in stock:
PrID PurchaseDate Quantity Price
001 01/01/2007 50 1
001 01/02/2007 150 2
If we are going to sale the 100 pieces of product 001 on date 02/02/2007 than price should be calculated in this way:
PrID SaleDate Quantity Price Profit Value
001 02/02/2007 50 1 10 60
001 02/02/2007 50 2 10 110
——————————————————–
So my application should take out from stock Product 001 on date 02/02/2007 Quantity 100 (50 from first purchase and rest from second) with cost price of first purchase (50×1) and second purchase (50×2) in thase case 1.5 adding profit 20 and total value of sold goods is 170
Stock Control in MS ACCESS with FIFO
I see at least five tables:
Vendors
======
VendorID
VendorName
etc.
Clients
=====
ClientID
ClientName
Add1
Add2
etc
Products
======
ProdID
ProdName
etc.
Purchases
========
PurID – primary key
ProdID – foreign key from Products
VendorID = long
PurDate – datetime
Qty – long
UnitCost – Currency
Sales
====
SalesID – primary key
ProdID – foreign key from Products
ClientID – foreign key from Clients
SalesDate – datetime
Qty – long
Profit – Currency
PurID – long – once you have decided on the stock depletion method
To determine the stock on hand for a given product:
SELECT Sum(Purchases.Amt)-Sum(Sales.Qty)From Purchases Inner Join Sales On Purchases.ProdID=Sales.ProdID WHERE Purchases.ProdID=[EnterProdID];
When you get down to defining a stock depletion method of FIFO or LIFO, it will now require annotating each Sales record with the source, ie. PurID and in that process, do a test on dates. Anyway, I’m not going to try and design the system, but as you said, provide a few ideas on how to go about this task. Good Luck.