FinanceFerret/HyperMoney
HyperMoney is my attempt to write a money-management program (as in Quicken or Microsoft Money) that is actually usable and has no Stupid Features. It will be Open Source, as soon as I have source worth publishing (as of 2005-08-06, it's all written in Microsoft Access 97). The next step may be to convert it to web-based application, as HTML could possibly overcome many of the interface design issues I'm encountering.
2008-08-17 Update: I'm renaming the project FinanceFerret and moving the documentation over to HTYP (this has been done, and is what you are looking at).
Data Design
There are two main areas of concern: Accounts and Transactions. All other tables are supporting either or both of those, sometimes mainly for user-friendliness and not part of the core data design. User-friendliness functions include Grouping and Pre-entry (deferred data massaging).
Acccounts
Field | Type | Description |
---|---|---|
ID | int(4) autonumber | |
Name | text | short name for account |
Descr | text | description and notes |
Accounts are in a hierarchical tree, but this is mainly user-friendliness (though it can also be used for reports). The tree is in a separate table, Topics (see #Grouping), and the mapping from Accounts to Topics is in [Accounts x Topics].
Field | Type | Description |
---|---|---|
ID_Acct | int(4) | Accounts.ID |
ID_Topic | int(4) | Topics.ID |
Transactions
Every transaction consists of one or more TransParts associated with a master Transaction record. Inforamation about balances will be stored separately.
Field | Type | Description |
---|---|---|
ID | int(4) autonumber | |
Descr | text | description of transaction |
When | date | date when the transaction occurred, as recorded by user |
Field | Type | Description |
---|---|---|
ID | int(4) key autonumber | |
ID_Trx | int(4) | Trxacts.ID of master transaction |
ID_Mode | int(4) | TrxModes.ID of transaction mode (source, target, equity, topic) |
ID_Acct | int(4) | Accts.ID of account for this part of the transaction
May be NULL to indicate that this is a "loose" piece of information |
Seq | int(4) | Order in which this transaction part appears, among others of the same mode |
ID_Type | int(4) | TrxTypes.ID of transaction type for this part |
When | date | date when the transaction occurred, according to the institution hosting the account |
Amount | currency | amount of transaction; positive = deposit, negative = withdrawal.
|
Grouping
Field | Type | Description |
---|---|---|
ID | int(4) autonumber | |
Name | text | short name for topic, as shown in tree |
NameFull | text | (optional) longer form of name for display outside of tree context |
Descr | text | (optional) description of topic |
ID_Parent | int(4) | Topics.ID of parent topic; NULL = this is a root topic |
Interface Design
Links
- http://braincore.blogspot.com/2005/05/koding-what-am-i-koding-then.html - A Dutch developer discusses accounting software, briefly. Apparently they don't use checkbooks in Holland.