Friday, September 19, 2014

Budgeting for a Non-Profit in QuickBooks - expense accounts vs fund accounts

I am on the board for a non-profit school.  Each year for the last 6-7 years that I've been involved we've carefully done a budget and then controlled our expenses accordingly.  However, I have become increasingly concerned about the limitations of a simple budget in our case.

For those of you who are accountants the following will probably be the equivalent of saying "2+2=4" but my hope is that since I wasn't really "getting" this maybe a simple explanation from a non-accountant perspective may help someone else.

Here are some of the concerns/problems we were experiencing with simple expense budgeting:

  1. Each year we budget for contingencies.  Some years nothing happens and we spend zero.  Other years something huge will happen which breaks out budget.  It seems that if we spend less than we budgeted in one year then that amount should be available in subsequent years if we have one of the budget-breaker expenses come along.  This budget item should not restart at zero each year but should carry over from year to year.
  2. We have expenses that occur every n years and sometimes these expenses are considerable.  So we might pay for a software license once in 5 years or we might send our senior staff to an important regional professional development conference once in 3 years.  The difficulty is that when these expenses come up they stretch our single-year budget about as tight as it can get.  Again, there should be some way of budgeting across several years.
  3. We have some accounting areas which are irrelevant to our core business as a school and should not be the topic of discussion when we are discussing our budget.  For instance, someone donated the money to equip each of our classrooms with a room air conditioner.  Now every time we look at our budget we are wondering why "Equipment" is 3000% over budget.  Or we purchase uniforms in bulk and then sell them to the parents.  We may buy enough uniforms for the next 2-3 years when there is a great sale, but then the budget shows a huge overage in uniforms throughout that year.
  4. Related to the air conditioner donation from above, it was a designated gift and so we are ethically bound to use it for that purpose.  If we spend $950 of the $1000 that was given then we need to keep track of that remaining $50 and not spend it on notebooks or rent.
  5. When it comes to purchasing books for the upcoming year, departments have a tendency to reason along the lines of "if you don't spend it you will lose it!" and so you get comments like "Well I still have $20 left in my budget so I'll buy these notebooks - maybe we can use them sometime later."  If a department knew that money saved this year would be available in future years then they may feel more comfortable not spending to the last qindark (that's to the last dime if your school isn't in Albania) on potentially unneeded items.
In short, our budgeting process needs to be improved in the following ways:
  1. We need to move some parts of our budget out of the main part of our budget when it is not part of our core business.  Let's not talk about uniforms being over just because we bought ahead on a sale when we really need to be talking about the new math curriculum.
  2. Some of our budget categories need to carry over from year to year rather than starting over with zero each year. I want to budget $1000 per year for 3 years for the professional development conference rather than trying to pay all $3000 out of the budget of the 3rd year.
  3. When a budget item has its own income and expense together we need to easily be able to group those and know the status of those accounts. How much did we make on uniforms last year so I know how much I can spend on uniforms this year?
After doing some internet research and talking with some friends (thanks to all my accountant friends who contributed!) here is how we are going to move forward...
  1. Contingency will be entirely separated into a different bank account in a different bank.  We will make a transfer once or twice a year according to the amount we have budgeted for contingency.  Having it in a separate bank will help us both by making it harder to spend from contingency (an external type of discipline) as well as protecting us in the event that whatever emergency occurs somehow prevents us from accessing the funds in our primary bank.
  2. Our primary bank account (the one we do nearly all of our expenses from) will have a sub-account created for each designated gift (such as the air conditioners) or for each account where either we want multi-year carry-over in the budget (such as the curriculum budget for each department) or where the income/expense is somewhat insulated from other areas (such as the uniforms where the income from sales of uniforms is the only source we can draw on for the purchase of new uniforms).  These will be called "Fund Accounts."
    1. In addition to the other Fund Accounts which are created there will be one final sub-account created under this bank account labeled "Unrestricted".  This should allow the sum of all sub-accounts to be equal to the amount actually in the parent bank account.
  3. Income and expense accounts which are explicitly not connected with our core business will be moved from "Income" and "Expense" to "Other Income" and "Other Expense".

OLD Chart of Accounts (partial)

Here's how our chart of accounts used to look:
  • Bank Accounts
    • Bank - Albanian Leke
    • Petty Cash Leke
  • Income
    • Tuition
    • Capital Levy Fee
    • Donations
    • Donations
  • Expenses
    • Contingency
    • Equipment Purchase
    • Equipment Service
    • Professional Development
    • Software Licenses
    • Uniforms

NEW Chart of Accounts (partial)

Here's how they will look now:

  • Bank Accounts
    • Bank - Albanian Leke
    • Contingency - Bank B
    • Petty Cash Leke
      • Air Conditioner Fund
      • Curriculum - HS
      • Curriculum - LS
      • Curriculum - MS
      • Generator Service
      • Professional Dev Conference
      • Uniforms
      • Unrestricted
  • Income
    • Tuition
    • Capital Levy Fee
    • Donations - Unrestricted
  • Expenses
    • Contingency
    • Equipment Purchase
    • Equipment Service
    • Professional Development
    • Software Licenses
    • Uniforms
  • Other Income
    • Donations - Restricted
    • Parents Purchase Uniforms
  • Other Expense
    • Air Conditioners
    • Purchase Uniforms to Sell

Contingency

Now in September and January we will make a deposit from "Petty Cash Leke:Unrestricted" into "Contingency - Bank B".  Any spending from that amount will have appropriate controls (but not so much that it is unavailable in an emergency!) to make sure we are spending it for real emergencies and not just because we didn't budget carefully enough.  Our contingency will grow in good years and be carried over to subsequent years and hopefully be sufficient to help us out in the event of an emergency.

Uniforms

When a parent purchases a uniform the deposit will come through "Other Income:Parents Purchase Uniforms" and go into "Petty Cash Leke:Uniforms".  When we buy uniforms every couple years we will take money from "Petty Cash Leke:Uniforms" and purchase the uniforms using the expense category "Other Expense: Purchase Uniforms to Sell".  This way uniforms will only show up "on the edge" of our budget reports and won't distract us from our core business.  Also we will know how much we have to spend at any time - the amount will appropriately carry over from year to year.

Professional Development

For the 3 years prior to the professional development conference we will make a 50,000 transfer in September from "Petty Cash Leke:Unrestricted" into "Petty Cash Leke:Professional Dev Conference."  Then in March of the 3rd year we will spend from "Petty Cash Leke:Professional Dev Conference" using the account "Expenses:Professional Development".  The budget will show that we have overspent by three times, but we can easily see from the "Petty Cash Leke:Professional Dev Conference" that we are in fact in good shape.

Theoretically we could have a different account "Other Expense:Professional Dev Conference From Savings".  That way we would spend 50,000 using the account "Expenses:Professional Development" and 100,000 from the account "Other Expense:Professional Dev Conference From Savings".  This would push our technically over-budget spending out of view of our normal budget report, but maybe that's a bit overkill?

Software Licenses

When we want to save up for the every-other-year payment for a software license we will do it in just the same way as we did for the Professional Development conference above.

Air Conditioner Donation and Purchases

When we receive a donation for 100,000 for air conditioners we will make it into "Petty Cash Leke:Air Conditioner Fund" using the account "Other Income:Donations - Restricted".  Then when we purchase an air conditioner for 30,000 it will be from the "Petty Cash Leke:Air Conditioner Fund" again but using the "Other Expenses:Air Conditioners" account.  Since this is not part of our core business this will keep the entire matter in the "other" section of the budget and it will also allow us to carry this donation over into the next year if we are delayed in spending all of it.  If the last air conditioner was partially paid for with the donation and the remainder paid for using the "Expenses:Equipment Purchase" then we simply make 2 different transactions.  One from the Petty Cash Leke:Air conditioning fund" using the "Other Expenses:Air Conditioners" account and one from "Petty Cash Leke:Unrestricted" fund using the "Expenses:Equipment Purchase" account.

Normal Expenses

When we purchase a ream of paper for the photocopier we will spend from "Petty Cash Leke:Unrestricted" using the account "Expenses:Office Supplies".

This article is still under revision, but I'll go ahead and publish it in case I never get around to making my revisions... :-)

Tuesday, September 09, 2014

Using gmail hotkeys in outlook

I am obsessed with saving keystrokes and despise having to use my mouse for ANYTHING.  (I could do the math for you on how saving 1-3 seconds per action multiplies by thousands and becomes savings of weeks or even months during a lifetime, but usually only geeks are interested so I'll refrain.)  So for me the hotkeys in gmail are fantastic.

My company has just moved to a new email protocol which requires me to move back to Outlook with an exchange-based email server for work-related stuff.  I really missed those gmail hotkeys (especially e to archive and go to the next message because I hate deleting messages!) and another colleague (thanks, Andreas!) pointed me to this article - full credit there for 90% of the work!

This only makes sense if you are connecting to your email server in Outlook 2013 via IMAP or Exchange so that the changes will be propogated.  Obvious, I suppose, but better to be clear.

It requires AutoHotKeys (AHK) but I already use that on a regular basis for all kinds of macros and hotkeys and other quickie-type programs. [What?! You don't use it?! How have you lived?!?!]

But the problem was that it was written for Outlook 2007 and 2003 whereas I have 2013.  Fortunately after a bit of banging around (and using the comment from the guys who previously converted it for version 2010) it was fairly straightforward to convert it for use in Outlook 2013.

(1) Install AHK, putting the AutoHotkey.ahk somewhere accessible and including a shortcut from your start menu. [1] Make sure it works by testing with the ctrl+alt+n hotkey to bring up notepad.
(2) In outlook create a folder (I called it "archived" under "inbox") and then make a QuickStep called "Move to Archived" to move the current email message into that folder and mark it as read.  In properties set it up to use CTRL-SHIFT-1 as the shortcut key.  Test it - pressing CTRL-SHIFT-1 should move the current message into the archive folder. Do the same with a second email account and appropriate archive folder, if applicable [2]
(3) Open the AutoHotkey.ahk file with your favorite TEXT editor (notepad works, vim is much better but requires a certain level of geekiness) and copy/paste the following into it at the very top:

SetTitleMatchMode, RegEx    ; This MUST be at the very top to auto-execute

; FROM http://www.ocellated.com/2009/03/18/pimping-microsoft-outlook/
; MODIFIED AND RE-POSTED FOR Outlook 2013: 
;*************************************************************************
;"GMAIL" Hotkeys for Outlook 2013
;*************************************************************************
;As best I can tell, the window text ‘NUIDocumentWindow’ is not present
;on any other items except the main window. Also, I look for the phrase
; ‘ – Microsoft Outlook’ in the title, which will not appear in the title (unless
;a user types this string into the subject of a message or task).

#IfWinActive,- Outlook,NUIDocumentWindow
;y::MsgBox Hello, World y
f::HandleOutlookKeys("^f", "f") ;forwards message
r::HandleOutlookKeys("^r", "r") ;replies to message
a::HandleOutlookKeys("^+r", "a") ;reply all
v::HandleOutlookKeys("^+v", "v") ;Move message box
+u::HandleOutlookKeys("^u", "+u") ;marks messages as unread
+i::HandleOutlookKeys("^q", "+i") ;marks messages as read (^q is read/unread toggle)
j::HandleOutlookKeys("{Down}", "j") ;move down in list
+j::HandleOutlookKeys("{Down}{Enter}", "+j") ;move down and select next item
k::HandleOutlookKeys("{Up}", "k") ;move up
+k::HandleOutlookKeys("{Up}{Enter}", "+k") ;move up and select next item
o::HandleOutlookKeys("^o", "o") ;open message
s::HandleOutlookKeys("{Insert}", "s") ;toggle flag (star)
c::HandleOutlookKeys("^n", "c") ;new message
/::HandleOutlookKeys("^e", "/") ;focus search box
.::HandleOutlookKeys("+{F10}", ".") ;Display context menu
#IfWinActive

#IfWinActive, Inbox - MYADDRESS@example.com - Outlook ahk_class rctrl_renwnd32,NUIDocumentWindow
e::HandleOutlookKeys("^+1", "e") ;calls archive macro

#IfWinActive, Inbox - MYADDRESS2@example.com - Outlook ahk_class rctrl_renwnd32,NUIDocumentWindow
e::HandleOutlookKeys("^+2", "e") ;calls archive macro

;Passes Outlook a special key combination for custom keystrokes or normal key value, depending on context
HandleOutlookKeys( specialKey, normalKey ) {
;Activates key only on main outlook window, not messages, tasks, contacts, etc.
IfWinActive, - Outlook ahk_class rctrl_renwnd32, NUIDocumentWindow, ,
{
;Find out which control in Outlook has focus
ControlGetFocus, currentCtrl
;MsgBox, Control with focus = %currentCtrl%
;set list of controls that should respond to specialKey. Controls are the list of emails and the main (and minor) controls of the reading pane, including controls when viewing certain attachments.
;Currently I handle archiving when viewing attachments of Word, Excel, Powerpoint, Text, jpgs, pdfs
;The control ‘RichEdit20WPT1' (email subject line) is used extensively for inline editing. Thus it had to be removed. If an email’s subject has focus, it won’t archive…
ctrlList = Acrobat Preview Window1,AfxWndW5,AfxWndW6,EXCEL71,MsoCommandBar1,OlkPicturePreviewer1,paneClassDC1,RichEdit20WPT2,RichEdit20WPT4,RichEdit20WPT5,RICHEDIT50W1,SUPERGRID1,SUPERGRID2,_WwG1,OutlookGrid1
if currentCtrl in %ctrlList%
{
Send %specialKey%
;Allow typing normalKey somewhere else in the main Outlook window. (Like the search field or the folder pane.)
} else {
Send %normalKey%
}
;Allow typing normalKey in another window type within Outlook, like a mail message, task, appointment, etc.
} else {
;this_id := WinExist("A")
;WinGetTitle, this_title, ahk_id %this_id%
;MsgBox DEBUG: Non-active (%A_TitleMatchMode%) :%this_title%:
Send %normalKey%
}
}
; END FROM http://www.ocellated.com/2009/03/18/pimping-microsoft-outlook/


(4) Edit that text, replacing MYADDRESS@example.com and MYADDRESS2@example.com with your email address [2]
(5) Right-click on the hotkey icon in the notification area (green box with white H) and click on "Reload this script".

Voila - feel free to use r to reply, f to forward, e to archive, s to star, j to move down, k to move up, etc.

If you have any problems, please let me know in the comments.

If it works at first but stops working after you reboot then you need to look at your AHK installation and make sure you've got the scheduler set up correctly.

If you're wanting to use this on a Mac ... [maniacal laughter fades into the distance]




[1] Getting something to start automatically in Windows 8 or 8.1 is a bit of a pain in the neck.  I think I ended up using the windows scheduler as per this article, but I did it quite some time ago (when I first installed win8) so I don't remember exactly.  [I do wish AHK would give an option in their installer to do that automatically!]

[2] I have set this up so with 2 separate addresses because I use my corporate address as well as my gmail address in Outlook via IMAP. I obviously don't want to archive my corporate email into my gmail "all mail" nor do I want to archive my personal email into my corporate archive. So that's why I've got it separated. If you are only using a single IMAP account then you wouldn't need to do anything with the 2nd QuickStep or to mess with changing the MYADDRESS2@example.com to your address.