in an ideal world stock control is not a function of a specific product
you define products
you define stock movements and form that you can calculate what your current stick levels is. sometimes its possibel to hvae a negative stock (especially if you have forward committments for that stock item (ie you have committed to use 100 of product X for use in manufacturing ovver the next 3 months so you know you have the reuirment but you dont' have sufficient stock on hand
in pricniple you should always calcualte stock on hand as and when required and not store such derived values. however soemtimes for perfomrance reasons you may want to to store a stock on hand level.
the key to a stocxk system is a list of transactions reflecting actual stock movements. in the past Ive defiend a transactions type table with an affect value (either +1 or -1) which indicates what the affect of the transation is... so +1 * qty indicates stock has risen (say through purchases, stock count adjustment, return from customer), -1 * qty equates to a reduction in stock through sales, transfers, scrap or so on.
from that its very easy to get to a stock level
each transaction code has an affect multiply that by the qty in the transaction itself, summed over time gives you the free stock on hand.
I'd rather be riding on the Tiger 800 or the Norton