Trial Balance: The Future

I’ve been thinking lots of thoughts about Trial Balance lately. I’m at the stage where I’ve actually finished the Accounts and Transactions parts of the application, and if I added some reporting capabilities, I would probably half a functional double-entry accounting application. Since it’s against the nature of personal projects to actually ship anything, especially before it’s due, I’ve spent the last few days thinking about ways to make it better.

A lot of these thoughts have been persisted across MSN conversations, emails to myself, thoughts in my head and sample code. I thought I’d take the opportunity to structure a few of these thoughts into something meaningful.

Here’s what I’ve been thinking:


Grids

Data grids, like the Transactions grid I have below, are, like, sooo Windows Forms 1.1:

The custom Transactions grid in Trial Balance

While simple, quick, well understood and efficient, it certainly doesn’t scream “Windows Presentation Foundation!”. I want to replace this with something more visual, something that gives users a better “feel” for their data.

So far I’m thinking about a kind of 3D scrolling list, where as you scroll up, transactions appear at the top as if they came in from behind the grid - almost as if they were appearing from the past. I also want the selected row to appear a little more “highlighted” when it’s clicked, by having it grow and appear to come into the foreground more as an animation. This will give me a chance to play with some WPF matrix transformations and maybe even some 3D stuff.


Accounts

My “Account Details” page looks like this (click for a bigger picture):


Creating a Cash at Bank account in Trial Balance

The idea is that you enter the account details, and can immediately begin entering transactions for that account.

While this makes creating an account very quick, it’s hardly taking advantage of any of the WPF capabilities, and it’s not very friendly to people who aren’t sure what they’re supposed to do.

To make this cooler, I plan to do two things. First, I’ll remove the Transactions part. I’ll create another ribbon tab at the top of the application just for Transactions. On this page I’ll show all of the transactions in the system, along with a filter to be able to quickly find the one you want. I think this will actually make it a lot nicer for when you want to enter lots of transactions in one go. Of course, the items on this page will be loaded asynchronously and paged as per my Asynchronous Business Objects presentation.

Second, I’m going to turn the “Details” section into a wizard, using WPF PageFunctions and a simple Workflow. The wizard will have these pages:

  1. Welcome, enter the name and description of the account.
  2. Select the account type (asset, liabiliy, expense, etc.)
  3. Select the category of account (current, non-current, sales, etc.)
    Note: Equity accounts don’t have categories, so they’ll skip this page.
  4. In later versions, for accounts like Non-current Assets, this might lead to screens like entering depreciation information.

The wizard will launch as a seperate window so it doesn’t interrupt the flow of the application. The pages will be pretty self-describing, using Command Buttons rather than Next/Back buttons.

By performing the wizard in the order above, it would allow me to “guess” what the account type and category should be by matching it against a list of commonly used accounts. For example, if they type “Cash at Bank”, the account type page will default to “Asset”, and the category page will default to “Current”.

I’m not quite sure whether Windows Workflow would be suitable for a wizard like this, since PageFunctions could probably do the job themselves, but hey - it’s a chane to try a new technology :)


UI Logic Objects

I created a prototype of this approach the other day, and I really like the advantages it’s given me. I showed the code to Darren today, and he remarked that it is very similar to the model/view/controller design. I’m going to use this approach in Trial Balance as much as I can, and if I have any success (or if people are interested) I’ll blog some more details about the idea.


Building and Publishing

Trial Balance has been in the Readify internal Team Foundation Server for some time now, and now that we have Continuous Integration support I’d like to get Trial Balance building whenever I check-in. I’d also like to modify the build script to produce an installer, a ZIP file of all the source code, and to upload it to the Project Distributor download page via Project Distributors web service. Ahhh, I love it when it all comes together. If only I had time to implement it all!

I think I’ll start out by refactoring the Accounts page as I described above, and work on the Wizard. For some reason, I find that kind of code more exciting than 3D spinning transaction lists, but I’ll implement those as well, if for nothing else than the “wow!” factor.

If you know a better way to visualise transactions or anything else, please leave a comment!

One Response to “Trial Balance: The Future”

  1. i am from pakistan i want a source of this trial balance for learning parpose

Leave a Reply