FinanceFerret/HyperMoney: Difference between revisions
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
Template:Stub:Woozle 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.