I'm not sure I fully understand either. But I'm guessing that what you want to achieve is slightly different to what bpat1434 has come up with.
If I understand you correctly, you want to be able to record the "cost price" of these widgets and reflect this when they are used. The "cost price" can potentially be different every time they are purchased.
To do this you would need to build in a purchasing history into an inventory control system.
This might need a table something like
USER_ID, PRODUCT CODE, PURCHASE_DATE, UNIT_COST, NUMBER_PURCHASED, NUMBER_REMAINING
every time the user purchases some widgets, you store a record in here.
So, if user 102 bought 100 of product code 1234 at $10 each on Tuesday, this would look something like:
102, 1234, 2006/01/24, 10.00, 100, 100
If they bought a further 100 @ $11.50 on Wednesday, a further record would be added
102, 1234, 2006/01/25, 11.50, 100, 100
The table now looks like
102, 1234, 2006/01/24, 10.00, 100, 100
102, 1234, 2006/01/25, 11.50, 100, 100
Now, if user 102 "uses" 75 of these widgets, this table can be search to find the "oldest" 75 widgets in the data base. In this case, they are all from Tuesday's batch. This would mean that the first record would need to be updated to reflect the usage of 75. The table now looks like this:
102, 1234, 2006/01/24, 10.00, 100, 25
102, 1234, 2006/01/25, 11.50, 100, 100
Now, imagine the user comes back to use a further 50 widgets. Again, you search the database for the oldest supply of widgets, and you see that there are 25 remaining in Tuesday's batch. You update this to reflect that you are now using 25 of them. Now you start your search again, and you find that the oldest supply dates from Wednesday, so you update that record to reflect that a 25 of these have been used.
102, 1234, 2006/01/24, 10.00, 100, 0
102, 1234, 2006/01/25, 11.50, 100, 75
Does this sound like what you want?