Budgeting proposal

Dave Fancella david.fancella at attbi.com
Wed Apr 16 22:09:57 CDT 2003

On Wednesday 16 April 2003 08:20 pm, you wrote:

> This is, IMO, a bad idea.  A Budget is a separate entity; it should not
> be relegated to the ambiguous netherworld of kvp-dom (KVPs are suitable
> for extending existing objects, I guess, but should be avoided for new
> entities--a Budget is a new entity).

I'm going to have to disagree on the separate entity part, however, with a 
disclaimer that I am not an accountant.  :)  GNUCash is my initiation into 
double-entry, and my sole motivation for budgeting is for my family budget.  
Anybody coming from a business accounting background, or who even knows more 
than I do (which is exactly jack) will be better prepared to define this 
relationship than, but I'll continue farther down.  :)

> Budgets are only loosely linked to Accounts.  Accounts are handy to have
> when you set up your Budget, because the BudgetCategories can be taken
> directly from the Account hierarchy.  E.g., "create me a new Budget
> based on my Account tree".  In a robust system, you would be able to
> link and delink BudgetCategories to/from Accounts.  A delinked
> free-standing BudgetCategory may not be very useful without an Account,
> but there you go...

Um, thing is, at least the way my account tree is currently setup, each 
expense account is labeled somewhat descriptively with what was bought.  I.e. 
Utilities:Internet (yes, it's a utility, not a luxury), Utilities: Gas & 
Water, etc.  So the account structure already tracks exactly how the money is 
spent.  A budget would be an overlay on top of the existing account structure 
that says "This is how much you are supposed to spend, no more, no less".

But I've been thinking some more and have something a bit half-baked, but 
might be along the lines of what you're talking about.  And it's potentially 
complicated, but extremely powerful.  :)

> Once you have your Budget hierarchy created (either manually, or based
> on you Account hierarchy), you can enter the period of time for which
> the Budget is effective, as well as individual amounts for each
> BudgetCategory.  Note that it would be useful to have the amount entry
> automated based on the Account history for a period of time (where the
> period of time is user-specified).
> The above model is greatly simplified, of course, from my vision of the
> whole thing.  You should be able to edit the Budget in a similar fashion
> to editing Accounts.  That is, the hierarchy would be displayed the same
> as the Account hierarchy, but "opening" a BudgetCategory would bring up
> a dialog to edit the currency amount, etc.,  instead of bringing up a
> register.
> This model also allows for creating several simultaneous Budgets and
> running scenarios/reports against each one to determine the most
> favorable outcome, or whatever.  You could, perhaps, mark a given Budget
> as default, and all reports are run against that Budget by default.
> Reports could show you how your current expenditures match your Budget,
> etc.  A lot of the tracking stuff doesn't really need to be stored--it
> can be captured in reports as needed.

This is a weakness in the setup I proposed, not having multiple budgets.  It 
would also be nice if we could track changes, so that if you decrease your 
budgeted amount in a category, then show a report later you could hit a 
button that says "Compare to previous changes" or something.  How useful this 
information is is quite beyond me, but I'd like to look at my previous year's 
budget and say "If I had stuck to my January budget completely, how would it 
have looked for the whole year?".

> As for your columns idea to show the budgeted amount and the current
> Account balance, I like that idea.  To implement it, you would just mark
> a given Budget as default (with appropriate date reasonability checks,
> of course), and you could see the difference.  This would require,
> though, that the Account balances be captured for the same period for
> which the Budget is effective.  I think, in the short term, that a
> dynamic report would be easier to write, though.

I was actually thinking that you would just query the transactions for the 
specific time period, kinda like this:  (note: I've no idea how GNUCash 
handles queries right now, here's some broken SQL)

SELECT * FROM Utilities:Internet WHERE DATE <in the budgeted range> 

(my SQL isn't real good, I know)

Basically, get all the transactions for the specific budget for the specific 
time period, total them up, and show that.

> I think conceptually, we're pretty close.  One point I'd like to make
> though:  where you use months/basetimeunits, etc., we need to be sure
> that the effective time period for a Budget is 100% customizable.  For
> example, my current project at work certainly has a time limit, but the
> Budget is actually (or will be, when approved. :( ) effective for the
> life of the project, as opposed to effective for a period of time.
> Subtle difference, but critical.

Ok, I tried twice to explain my understanding of the difference and erased it, 
but I'm not seeing how it matters one way or the other.  Instead, without a 
project architecture, I'd have to say that for these situations, it's not 
necessary to setup a time for a budget.  Say, make any of the numbers 0 would 
clear out the time period, and just define the if the result of the division 
of the ratio is 0 then the budget is indefinite, and expires only when it's 
finished.  We could allow the two date fields (or the one date field, I 
haven't figured out if expires should be a date field or not) to be made 
blank to reflect an indefinite length of time, or better yet (since you'll 
want time-based reports at some point) you get the basetimeunit ratio to come 
out 0, then set the startdate for the beginning of the project and the 
expires for the estimated end of the project.  Then you modify expires as 
needed, and track this change.

Another weakness in my kvp-based proposal is that budgeted amounts in a 
category are a detail relationship to the category master, so the setup 
really needs to allow multiple records to be made.  In this fashion, we can 
also log every single slight change to a budget that is ever made, and who 
makes it (in the database, anyway).

Aha, I remember what I was thinking last night.  :)

An account type "budget" that's handled different than regular accounts.  You 
can still see a ledger, but I'll continue.  :)

I'm not entirely sure how to organize this, but each budget is an account, 
still.  When you receive money in your budget, money is deposited into the 
budget account.  Then, when you spend the money in that budget account, it is 
transferred into your Expense account.  In this way, the budget accounts show 
you how much you have, how much you anticipate having in the future.  The 
expense accounts show you how much you have spent in the past.  With 
historical records in the budget accounts, you can compare those to the 
expense accounts for historical reporting.  The only problem I'm having with 
this is that it looks like you have to make 3-4 entries for every 
transaction, instead of just 2.  :(

One thing I'm trying to make happen, somehow, is to transfer money from one 
budget to another.  So let's say you get your electric bill and it's $20 
higher than budgeted, you transfer a total of $20 from other budgeted 
categories to make up the difference, but it's only temporary.  Next month 
everything goes back to normal (except for any budgets you borrowed from that 
haven't moved into their next recursion).

How do paper accountants handle budgeting for companies?  Is there a standard 


> Good thoughts,

"I slipped inside the oval office,
I slipped in oh so fast,
Grabbed the president by the necktie
And wiped my funky ass, hey"
                -Soulhat, "Bonecrusher"

More information about the gnucash-devel mailing list