Difference between revisions of "HyperMoney"
Line 18: | Line 18: | ||
===Acccounts=== | ===Acccounts=== | ||
{| style="background: #eeeeff;" | {| style="background: #eeeeff;" | ||
|+Accounts | |+'''Accounts''' table | ||
|- | |- | ||
!Field||Type||Description | !Field||Type||Description | ||
Line 27: | Line 27: | ||
|- | |- | ||
|Descr||text||description and notes | |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, and the mapping from Accounts to Topics is in [Account Topics]. | |||
{| style="background: #eeeeff;" | |||
|+'''Topics''' table | |||
|- | |||
!Field||Type||Description | |||
|- | |||
|ID||int(4) autonumber | |||
|- | |||
|Name||text||short name for topic | |||
|- | |||
|ID_Parent||int(4)||Topics.ID of parent topic; NULL = this is a root topic | |||
|} | |||
{| style="background: #eeeeff;" | |||
|+'''Account Topics''' table | |||
|- | |||
!Field||Type||Description | |||
|- | |- | ||
| | |ID_Acct||int(4)||Accounts.ID | ||
|- | |||
|ID_Topic||int(4)||Topics.ID | |||
|} | |} | ||
===Transactions=== | ===Transactions=== | ||
Every transaction consists of one or more [[TransPart]]s associated with a master Transaction record. Inforamation about balances will be stored separately. | |||
{| style="background: #eeeeff;" | |||
|+'''Trxacts''' table (Transactions) | |||
|- | |||
!Field||Type||Description | |||
|- | |||
|ID||int(4) autonumber | |||
|- | |||
|Descr||text||description of transaction | |||
|- | |||
|When||date||date when the transaction occurred, as recorded by user | |||
|} | |||
{| style="background: #eeeeff;" | |||
|+'''TrxParts''' table ([[TransParts]]) | |||
|- | |||
!Field||Type||Description | |||
|- | |||
|ID_Trx||int(4)||Trxacts.ID of master transaction | |||
|- | |||
|ID_Acct||int(4)||Accts.ID of account for this part of the transaction | |||
|- | |||
|ID_Type||int(4)||TrxTypes.ID of transaction type for this part | |||
|- | |||
|ID_Mode||int(4)||TrxModes.ID of transaction mode (source, target, equity, topic) | |||
|- | |||
|When||date||date when the transaction occurred, according to the institution hosting the account | |||
|- | |||
|Amount||currency||amount of transaction; positive = deposit, negative = withdrawal. | |||
|- | |||
|colspan=3| | |||
*Sum of all source parts plus all target parts must equal zero. | |||
*Sum of all equity parts must equal sum of all target parts. | |||
|} | |||
==Interface Design== | ==Interface Design== |
Revision as of 19:04, 6 August 2005
This article is a stub requiring substantial initial content from Woozle. Although you may be able to help expand it, it is more likely that Woozle will have to finish setting up the initial content before it will make sense to anyone else. 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.
Project Goals
- To avoid shortcomings in existing money manager software: see HyperMoney: Flaws in Other Software
- To minimize the "setup curve", i.e. the amount of preparatory work needed before any useful amounts of data can be entered
- To provide all basic functionality needed for the following:
- Tracking and balancing one's bank accounts, credit cards, and other basic types of money accounts
- Tracking debts and loans involving one or more other parties of varying levels of disorganization (they might or might not send you regular statements or even reliable itemizations)
- To make data entry as painless as possible:
- Easy identification of redundantly-entered transactions -- so you can Just Start Typing instead of worrying about where you left off last time
- Deferred data massaging -- so you can Just Start Typing, and worry about assigning proper accounts and categories to things later; the program should keep track of incomplete data massaging so you can take care of it when you have time
Data Design
There are two main areas of concern: Accounts and Transactions.
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, and the mapping from Accounts to Topics is in [Account Topics].
Field | Type | Description |
---|---|---|
ID | int(4) autonumber | |
Name | text | short name for topic |
ID_Parent | int(4) | Topics.ID of parent topic; NULL = this is a root topic |
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_Trx | int(4) | Trxacts.ID of master transaction |
ID_Acct | int(4) | Accts.ID of account for this part of the transaction |
ID_Type | int(4) | TrxTypes.ID of transaction type for this part |
ID_Mode | int(4) | TrxModes.ID of transaction mode (source, target, equity, topic) |
When | date | date when the transaction occurred, according to the institution hosting the account |
Amount | currency | amount of transaction; positive = deposit, negative = withdrawal. |
|
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.