HyperMoney

From HypertWiki

Jump to: navigation, search

Woozle: Projects: 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.

Contents

[edit] 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).

[edit] Acccounts

Accounts table
FieldTypeDescription
IDint(4) autonumber
Nametextshort name for account
Descrtextdescription 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].

Accounts x Topics table
FieldTypeDescription
ID_Acctint(4)Accounts.ID
ID_Topicint(4)Topics.ID

[edit] Transactions

Every transaction consists of one or more TransParts associated with a master Transaction record. Inforamation about balances will be stored separately.

Trxacts table (Transactions)
FieldTypeDescription
IDint(4) autonumber
Descrtextdescription of transaction
Whendatedate when the transaction occurred, as recorded by user
TrxParts table (TransParts)
FieldTypeDescription
IDint(4) key autonumber
ID_Trxint(4)Trxacts.ID of master transaction
ID_Modeint(4)TrxModes.ID of transaction mode (source, target, equity, topic)
ID_Acctint(4)Accts.ID of account for this part of the transaction

May be NULL to indicate that this is a "loose" piece of information

Seqint(4)Order in which this transaction part appears, among others of the same mode
ID_Typeint(4)TrxTypes.ID of transaction type for this part
Whendatedate when the transaction occurred, according to the institution hosting the account
Amountcurrencyamount of transaction; positive = deposit, negative = withdrawal.
  • Sum of all source parts plus all target parts must equal zero.
  • Sum of all equity parts must equal sum of all target parts.

[edit] Grouping

Topics table
FieldTypeDescription
IDint(4) autonumber
Nametextshort name for topic, as shown in tree
NameFulltext(optional) longer form of name for display outside of tree context
Descrtext(optional) description of topic
ID_Parentint(4)Topics.ID of parent topic; NULL = this is a root topic

[edit] Interface Design

[edit] Links

Personal tools