Using QHacc!

## Using QHacc

QHacc was designed to be as simple and straightforward as possible. It utilizes popups, pulldowns, keyboard commands, highlighting, and bold fonts to help you organize your finances easily. However, in order to get it running, you must set the QHACC_HOME environment variable to the QHacc working directory. QHacc writes three text files per account, plus a config file. To keep your system clean, QHacc allows (in fact, forces) you to specify where you want all these files. I suggest ~/.qhacc, but it's up to you. QHacc will only write to the specified directory, and will not place files anywhere else on your system. The QHACC_HOME directory must exist prior to saving any files. QHacc will not create this directory for you if it doesn't exist.

QHacc accepts a few command line arguments. These are:

-f | This arg must be followed by a QHACC_HOME setting. Using this switch will override whatever value is currently stored in the QHACC_HOME environment variable, if any.
-w | show warranty information
--cron | see Scheduled Transactions below
--archive | see Archiving below
--restore | see Archiving below
--report | see Reporting below
--balances | display account names, balances, and number of transactions
--help | show these options

Note: if --cron and --archive are both specified, they will be executed in the order given on the command line.

## Interface Layout

The QHacc window consists of just two main parts: the Account Chooser and the Transaction Display. The Account Chooser is on the left side of the screen, and displays all your accounts and their balances.

### The Account Chooser

The Account Chooser is the navigator and maintenance hub for accounts. Clicking on an account will open that account, and display all its transactions in the Transaction Display. Double-clicking on an account will bring up the Account Edit Dialog box. More about that later.

If you are not using a mouse, the Account Chooser is navigable with the up and down arrows. Pressing the spacebar will open the account.

In both cases, the selected account will be printed in bold font and a colored highlight bar will illuminate the account in the Chooser.

The popup menu available in the Account Chooser allows you to reconcile, edit, add, or delete an account. It is not necessary to open an account in order to use these functions. (i.e., You can be viewing your checking account, and open your savings account for reconciling.) Please be careful when using this liberty to make sure you don't delete the wrong account. If you are not using a mouse, these functions are available from the Account menubar.

### The Transaction Display

The Transaction Display displays all the transactions in the opened account. Clicking on a transaction will open it for editing. Alternately, you can click on the "<new>" transaction to insert a totally new transaction. Alternately alternately, you can use the keyboard to navigate the Transaction Display. Using the up and down arrows will select transactions. As with the Account Chooser, pressing the spacebar will open the transaction for editing.

The Transaction Display window has two different popups, depending on what is currently highlighted. When a transaction is highlighted, the popup will allow you to edit the current transaction, or add a new one, reconcile a single transaction, or memorize one. Please see the section below for more details on memorizing transactions. If the "<new>" transaction is highlighted, the popup will allow you to insert either a new or memorized transaction, or change the system preferences.

The Transaction Display will always remain sorted based on date. This could change in the future.

## Creating an Account

The account is the central object in the QHacc engine. All transactions must be part of at least one account to be displayed. That said, creating an account is a painless process. You can either right-click in the Account Chooser and select "new account" from the pulldown, or choose "Create" from the Account menubar. From that dialog, you can enter the specifics of the account like opening balance or institution contact information. You can also specify a parent account to further categorize transactions. There are several types of accounts in QHacc:

ASSET
LIABILITY
EQUITY
EXPENSE
REVENUE

You can get more information about how to use these accounts in the Accounting Primer.

## Transaction Operations

QHacc has a number of different types of transactions. They all work in the same way, so using them is easy. All transactions have five main fields:

- Number
- Date
- Payee
- Sum
- Memo

### Normal Transactions

If you use single-entry bookkeeping, most of the transactions you will probably enter into QHacc will be classified as normal transactions. They contain only the fields listed above. As described above, clicking on the "<new>" part of the Transaction Display is the usual way to enter a new transaction. An opened transaction can be saved by hitting the enter key. The changes can be discarded by pressing esc.

### Split/Double-Entry Transactions

Split and Double-Entry transactions are handled the same way in QHacc. In order to use this transaction type, you must specify double entry bookkeeping from the Preferences Dialog.

Double-Entry transactions are just like single-entry transactions, except that each transaction must be part of two accounts. Double-Entry transactions are generally split between an income and expense account, though this rule is not a requirement. In any event, when you specify double entry bookkeeping, the Transaction Dialog will get one more field--the double entry account field.

Split Transactions are a special type of transaction where one transaction has many different double-entry pairs. The most common use of this type of transaction is probably for entering your paycheck, I think. Your employer generally pays you one sum, but also pays taxes on your behalf, or splits your paycheck between several different accounts, like a checking and savings account. All these splits can be entered into a different account, but still only take up one transaction in your "job" account, for example. Is that clear?

In order to change a regular double-entry transaction into a good old-fashioned split transaction, one just needs to push the "+" button on the Transaction Dialog. This will append another split entry area to the dialog, and you can go merrily on your way. If, on the other hand, you have a split transaction that you would like to make into a double-entry transaction, set it's sum to "0.00" or just leave the appropriate sum field blank. When the dialog closes, extra transactions will be removed.

### Memorized Transactions

Memorized Transactions are a feature of QHacc aimed at reducing the number of times you must enter the same transaction. If you have a transaction that you enter into an account regularly (or just often), you can memorize it. From the transaction popup, select "memorize." Then, you can re-enter the same transaction as often as you like by selecting it from the "memorized" part of the popup. Everytime you enter a memorized transaction, the new one will be identical to the old one, except that the date will be that day. This feature works for normal, double-entry, and split transactions, so use it 'til your heart's content.

To remove a transaction from the "memorized" list, delete the transaction that you originally memorized.

QHacc supports cutting and pasting transactions as well. The mechanism is exactly the same as for memorized transactions, but the only one transaction can be pasted at a time. Ctrl-C and Ctrl-P are the cut and paste shortcuts, respectively.

### Scheduled Transactions

Scheduled Transactions are slightly different from the other types because there is no facility for creating them while QHacc is running. Scheduled transactions aren't really scheduled by QHacc. They can be entered by creating a file in a particular format (see Scheduler), and running QHacc from cron with the --cron argument and the filename. The --cron mode starts a command-line version of QHacc and enters a single transaction before saving everything and exiting. In this mode, errors are written to standard error, but nothing else is written to the screen. Presently, only adding transactions is supported in --cron mode.

## Reconciling

Reconciling is one of the most important functions of any accounting program. It is the way to compare your balance to your bank's balance. In QHacc, you can open a reconcile window by right-clicking "reconcile" from either the Account Chooser popup or the Account pulldown. The reconcile window allows you to enter the starting and ending balances for reconciling, as well as the cut-off date for transactions. When opening the window, the current date and current balance of the account are pre-entered in their respective fields. Changing the date will recalculate the expected balance, but this can also be user-specified. The reconcile window has a Transaction Display as well, but selecting a transaction will simply mark it as reconciled, and not open it for editing.

The reconcile window is a fully-capable Transaction Display. That is, transactions can be added, removed, or edited just as they can be in the main Transaction Display. Both displays will remain synchronized while the reconcile window is open. Any transactions added while the reconcile window is open will automatically be marked as reconciled, regardless of which display is used to enter it. The reconcile window is modeless, so several accounts be reconciled at once.

An account cannot be deleted while it is being reconciled.

## Archiving

QHacc provides a method for clearing out old transactions from accounts. The mode is similar to the --cron mode (above). This mode can be entered from by specifying --archive on the command-line. The --archive argument must be followed by the date of the last transaction to prune. The date string must conform to the format specified in the Prefs Dialog. That is, if you normally use the European format and '-' as the separator, and you are currently in the QHACC_HOME directory, the command: "qhacc --archive 29-02-2000" would archive all transactions before 1 March, 2000. All pruned transactions are kept in the QHACC_HOME directory, and suffixed with ".archived." It may be beneficial to move or rename these files since they are not time-stamped. The next archiving will erase the previous archives. In this mode, just like --cron mode, errors are written to standard error, but nothing else is written to the screen.

The opposite of --archive is --restore. It must be followed by the directory from which to read the archive files.

## Reporting

QHacc supports limited reporting from the GUI and the command line. The reports are available through the Graphs menu, or in the popup of the Account Chooser. The Report Dialog allows for reports from any date range and for any account or account type. From the command line, the reports are slightly more restricted. Date ranges are not supported from the command line, though a dedicated user can create similar functionalty by creatively using the archive and restore functionailty in combination with the reports. In any event, the reports can be accessed from the command line using the --report option followed by the exact account name, or one of the following: Assets, Liabilities, Equities, Expenses, Revenues.

## Preferences

The preferences object is perhaps the most widely used object in QHacc. It defines how dates are displayed, how currencies are marked, which colors and fonts are used, and which type of bookkeeping you prefer. Any character can be used for a currency symbol, or for the date element separator but I wouldn't recommend using a numerical value for either one (the default of "/" should be good for most dates).

When switching bookkeeping styles, QHacc performs what I will call "lazy" updating. That is, if you used to use double-entry bookkeeping and you switched to single-entry, none of the links will break. The links between transactions remain intact until the transaction is opened and then resaved. Likewise, single-entry transactions will remain pairless until they are opened as double-entry transactions. This is true even across saves.