Inventory system design: proposal:

Beth Leonard beth at
Tue Oct 9 14:20:17 EDT 2007


I'm hoping to answer your question by giving you some use-case

I am not an accountant, but I do have a friend who is going through
accounting school, and I have a small business for which my
accountant asks me every April how much inventory of raw materials
I had in stock on December 31st, and how much it cost me to buy.
(I bought several years worth a few years ago when it was being
discontinued.)  This has always been a very difficult question
for me to answer, and I can hope that GnuCash could one day help
with it.

I buy raw DVD blanks and cases, and I sell finished DVDs.  When
I make a finished DVD I decrease the number of blanks
and cases by 1 (sometimes more if there was a mis-burn) and I
increase the number of finished DVDs to sell.  When I sell
a finished DVD, I decrease the number of finished DVDs by 1.
My accountant seems to care about the dollar value of blanks
and cases, but not the dollar value of unsold finished DVDs.
I'm sure there exists a scenario where someone would need a
report that cared about the value of the unsold finished ones.

There are several ways to account for inventory, and my friend
describes them here:

Right now it's making my head hurt, but I think it means that
inventory needs to be associated with a date as well.  And that
there needs to somewhere be a way to have an annual inflation
index for the use of the reports.  (Perhaps stored in the priceDB?)

Beth Leonard

On Tue, Oct 09, 2007 at 11:15:10PM +0700, Lianto Ruyang wrote:
> Hello Everyone,
> I want to add an inventory system to gnucash. After looking at the code and
> considering how i want it to be, i come up with the following design:
> inventory-system:
> * core
>  - Item { name, sell-price, buy-price, quantity, description, item_group,
> asset-account, expense-account,
>                income-account }
>  - Item_group { name, list_of_item }
> * ui
>  - input-dialog
>  - select-dialog (A tree-view of "Item_groups", and inside each "Item_group"
> are the "Items")
>  - invoice (Press "Enter" in the description register will pop-up the
> select-dialog)
> * report (profit of each item, qty of each item, etc)
> * backend (xml??)
> The "Item" and "Item_group" object will be derived from QofInstance, so they
> will be queryable. Above are informations which i think is needed most for
> those objects.
> The 'asset-account', 'expense-account', and 'income-account' will be useful
> in filling the invoice. After a user select an "Item" from select-dialog,
> the "account" columns and "price" columns can be automatically filled.
> The dialogs can be created using glade.
> There are a lot of problems which i choose to put aside for now (because it
> gives me too much headache :) such as
> - how to make the select-dialog can show items quickly (i imagine if the
> items are in thousands the tree-view will be very slow)
> - is it allright to modify the current invoice, or is it better to make
> another special invoice for inventory?
> and lots lots of other things which hasn't occured to me just now. Not to
> mention how to write the code :)
> Please tell me your opinion (any opinion!!) and thoughts. I've never
> involved in opensource software development before, lot of stuff to learn.
> Hope it 's ok.
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at

More information about the gnucash-devel mailing list