|
|
(9 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| {{stub:Woozle}} | | {{to htyp|FinanceFerret}} |
| [[Category:Software Projects]]
| |
| [[User: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 [[FOSS|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. | | [[Category:Software Projects|HyperMoney]] |
| | |
| ==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. 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===
| |
| {| style="background: #eeeeff;"
| |
| |+'''Accounts''' table
| |
| |-
| |
| !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].
| |
| | |
| {| style="background: #eeeeff;"
| |
| |+'''Account Topics''' table
| |
| |-
| |
| !Field||Type||Description
| |
| |-
| |
| |ID_Acct||int(4)||Accounts.ID
| |
| |-
| |
| |ID_Topic||int(4)||Topics.ID
| |
| |}
| |
| ===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.
| |
| |}
| |
| ===Grouping===
| |
| {| style="background: #eeeeff;"
| |
| |+'''Topics''' table
| |
| |-
| |
| !Field||Type||Description
| |
| |-
| |
| |ID||int(4) autonumber
| |
| |-
| |
| |Name||text||short name for topic
| |
| |-
| |
| |Descr||text||longer description of topic (optional)
| |
| |-
| |
| |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.
| |