What is it?

GreaseMoney is a Greasemonkey userscript that adds budgetting to Wells Fargo's summary page. You provide groups and categories for your budget, and GreaseMoney will subtract those amounts from the balance in your checking account to display how much extra, "not spoken for" money you really have for the month.

Please note that GreaseMoney does NOT do anything to your actual checking account balance! All it does is change what the "Total" displays as. It's purely a display issue so you can play psychological tricks on yourself. You never have to worry about GreaseMoney actually withdrawing money from your accounts.

Features

  • pretty controls
  • create an unlimited number of groups and categories
  • modify budget item names and values
  • option to save changes automatically
  • automatically subtracts credit card debt
  • set goals with target amounts and deadlines

Requirements

  1. Firefox, version 1.5 or better
  2. Greasemonkey, a Firefox extension that GreaseMoney currently relies on (tested with version 6.5.20060727)
  3. GreaseMoney, my userscript that adds budgetting to Wells Fargo's summary page

Download

The current version of GreaseMoney can be downloaded here (last modified ).

Installation

Like installing any Greasemonkey script, you just go to the *.user.js file in your browser, click the "Install" button in the upper right, and reload the tab or open a new one. Make sure the little monkey face in the status bar is smiling and happy — that means Greasemonkey is enabled. If you right click on the monkey face and select "Manage User Scripts" from the popup menu, you should now see GreaseMoney listed. You're ready to go!

Watch out for an "unresponsive script" dialog that may pop up occasionally. Firefox seems to be overly zealous about how quickly it thinks a page should load. You may also see this dialog on sites like Gmail that employ heavy Javascript use. To tell Firefox to chill, set the about:config preference to a higher number than 5 (people recommend 20). Details here.

Usage

Creating Your Budget

since version 0.1.0:

When you first go to the Account Summary page of Wells Fargo, you will be prompted to set up your budget. You may either use a default budget (which is good to see an example) or you can use a (mostly) blank budget and start from scratch.

I say "mostly" because there will always be a "Credit Accounts" category if you have any credit accounts. The rationale behind this decision is that debts to credit accounts must be paid out of your checking accounts. If you always pay off your credit card balance in full each month, this should be exactly what you want. In the future, I may add a "minimal balance" option, so that the entire credit card debt isn't subtracted from your checking account balance.

version 0.2.0

You should now have some rows of budget items below your checking account and above the "Total" row. Their combined value is subtracted from the amount currently in your checking account, giving you a new total. This new value represents how much extra money you have that isn't already planned to be spent on something else.

since version 0.2.5:

If you have a savings account in addition to your checking account, the money in the savings account will not apply to your budget. That is, GreaseMoney assumes you don't want to allocate your savings to pay your monthly expenses.

Modifying Your Budget

since version 0.1.0:

Below any credit accounts you may have, there is a guide to what the various GreaseMoney buttons do. The red x deletes a group or category; the yellow down-arrow (a "v", really) inserts a category into the group; the greed plus adds a new group or category after the current one; and the blue question mark renames the group or category. Clicking on the item's monetary amount lets you change the value.

When you enter an amount for a category, it's assumed that you mean to subtract that amount from your checking account balance. You do not have to type a minus sign before your value; it's assumed. If, on the other hand, your really do mean to add available money to your budget from some source other than your checking account, do include a minus sign. Note that negative values are displayed within parentheses, as is standard in accounting.

Setting Goals

since version 0.2.5:

By clicking on the gray "G" (for "Goals"), you can set a target value and deadline for a particular category. A progress bar will chart how close you are to your goal. Click on the progress bar to modify your target amount. Click on the deadline to modify the date.

Saving Your Budget

since version 0.2.0:

You can save the current budget at any time by clicking the "save" button. Enabling "auto-save" will keep GreaseMoney from prompting you to save when you leave the page. If you ever want to reset the budget values to either the default budget or the mostly-blank one, just click the appropriate button.

since version 0.2.5:

If you save your budget with some groups collapsed or hidden, they will remain that way when you reload the page.

Copying Your Budget to Other Computers

since version 0.2.2:

Finally, the "show data" button displays the raw data used to create the budget you see. If you save your budget, the same budget groups and categories will be displayed automatically the next time you visit the Account Summary page. However, this only works for the Firefox profile you installed GreaseMoney on. Wells Fargo itself has no idea about GreaseMoney, so if you log on from another computer or profile, your budget will not appear. If you want to transfer your budget to another computer or profile on which you've already installed GreaseMoney, you will need the "show data" button.

Click the "show data" button to display the raw data. The "greasemonkey.scriptvals..." text up to the equals sign is the name of the Firefox preference. If you've installed GreaseMoney but not run it yet (that is, you haven't visited the Account Summary page yet), then you will need to create this preferences yourself. Go to about:config, right-click anywhere, and select "New -> String." Copy the preference name, up to but not including the equals sign, and paste it into the prompt. Copy the budget values (again, not including the equals sign) and paste that into the value for the preference. Do this for both the groups and categories preferences.

If you have already run GreaseMoney and want to replace your budget with these other budget values, then go to about:config. In the "Filter" textbox, type "GreaseMoney." Right-click on each of the two preferences, select "Modify," and replace the current value with the data from "show data." The next time you go to the Wells Fargo page, your budget should be updated!

Known Issues

// FIXME
//  - all group and category names currently must be unique
//  - cannot add a group above the top group
//  - intermittently loses saved values -- why?

Future Features

// TODO
//  - make monthly bills reoccurring and "payable"
//  - allow groups and categories to be reordered
//  - place budget directly under account being used
//  - add elements web2.0ishly, not with Javascript prompts 
//  - compile into a standalone Firefox extension

Credits

GreaseMoney would not exist without several tools provided free by others:

Changelog

------------------------------------------------------------------------
r95 | arthaey | 2006-08-30 04:56:14 -0700 (Wed, 30 Aug 2006) | 25 lines

Version 0.2.5: added preliminary progress bars for goals, plus other features.

New features:
   - Clicking on the "G" button makes a category into a goal, with a target
     value and a deadline.
     
         TODO: make these settings modifiable once they've been set.

         TODO: make colors of the date-picker calender match page colors

   - If there is more than one cash account, only the first one is used for the
     budget. The use case here is to ignore savings accounts as available
     income.
     
         TODO: place budget lines directly under the first account, and add a
               subtotal row.

   - Collapsed or expanded status is saved. Creating a group with a "+" or "-"
     as the first character of its name will force display status on creation
     of a group, as an acceptable side-effect.

   - Made CSS external files, so the script should load faster now. A
     side-effect of this is, when the external scripts are loading slowly, you
     may see the elements unstyled for a few seconds.

------------------------------------------------------------------------
r93 | arthaey | 2006-08-29 20:40:31 -0700 (Tue, 29 Aug 2006) | 1 line

Changed capitalization: greasemoney > GreaseMoney
------------------------------------------------------------------------
r91 | arthaey | 2006-08-29 20:37:17 -0700 (Tue, 29 Aug 2006) | 1 line

Changed capitalization: greasemoney > GreaseMoney
------------------------------------------------------------------------
r90 | arthaey | 2006-08-29 20:26:54 -0700 (Tue, 29 Aug 2006) | 7 lines

Version 0.2.4: minor bug fixes.

Fixed:
   - Credit Accounts value shouldn't be a link
   - categories added to a collapsed group are still displayed
   - categories should be indented further

------------------------------------------------------------------------
r89 | arthaey | 2006-08-29 20:14:14 -0700 (Tue, 29 Aug 2006) | 2 lines

Version 0.2.3: groups can now be expanded and collapsed (toggle visibility).

------------------------------------------------------------------------
r88 | arthaey | 2006-08-29 14:33:10 -0700 (Tue, 29 Aug 2006) | 2 lines

Version 0.2.2: added "show data" control to display GM_getValue data.

------------------------------------------------------------------------
r87 | arthaey | 2006-08-29 13:43:30 -0700 (Tue, 29 Aug 2006) | 13 lines

Version 0.2.1: no functionality change for the end-user.

Instead of using link elements with href="#" to trigger Javascript calls, I
switched to spans with onclicks. This prevents the addition of the "#" entries
to the browser history and keeps the browser window scrolled to the same
position (rather than jumping to the top, as it does with href="#").

Also, I added and commented out a call to Yahoo's Calendar widget. The
dynamically added Javascripts are in the real, unsafeWindow's context. This is
why NiftyCube and Behaviour didn't work before. I can't call createCalendar()
directly because it doesn't give enough time for the external Javascript to be
loaded.

------------------------------------------------------------------------
r85 | arthaey | 2006-08-29 03:30:57 -0700 (Tue, 29 Aug 2006) | 46 lines

Version 0.2. Screenshot at http://flickr.com/photos/arthaey/228075505/.
Category types are commented out from displaying on-screen.

Fixed:
   - sometimes need to click on a "button" multiple times -- why?

     NiftyCube adds a bunch of HTML element decorators to the "button" links
     in order to make the corners rounded. As a side affect, these elements
     will trigger the onClick event of the link, but the target object will
     not be the link object as I had expected. By walking up the tree until
     the actual link object is found, I made the entire visual button hot.

   - disable "save budget" when nothing has been modified
   - don't prompt to save on unload when nothing has been modified

     Added a "dirty" flag to the Budget object. Also added "auto-save"
     functionality so it will stop prompting all the time. Buttons
     automatically update their states accordingly.

   - final total is very negative compared to how it should be

     The starting balance of the checking account wasn't initially added to the
     budget total.

   - categories are subtracted from the budget twice each

     Removed extraneous budget.addToTotal call is Group's constructor.

   - budget values are not being saved between reloads

     Fixed erroneous placement of calls to reset the values in onUnload.

   - budget doesn't load without credit accounts present

     Removed dependency on credit accounts. Will only be added when present.

   - groups and categories can be created without a name

     Added error-checking to group and category user prompts. No action is
     taken if any required parameters are blank.

   - budget control buttons have "undefined" tooltips

     Added error-checking to createLink function so that tooltips are only
     added when text for the tooltip has been provided.

------------------------------------------------------------------------