FinanceFerret/HyperMoney: Difference between revisions
m (removed stub template) |
m (update) |
||
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[ | '''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. | ||
[[ | |||
[[ | '''2008-08-17''' Update: I'm renaming the project [[FinanceFerret]] <s>and moving the documentation over to [[htyp:FinanceFerret|HTYP]]</s> (this has been done, and is what you are looking at except [2020-10-10] that it is now on wooz.dev and is an old version). | ||
==Data Design== | ==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). | 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). | ||
Line 21: | Line 11: | ||
!Field||Type||Description | !Field||Type||Description | ||
|- | |- | ||
|ID||int(4) autonumber | |'''ID'''||int(4) autonumber | ||
|- | |- | ||
|Name||text||short name for account | |'''Name'''||text||short name for account | ||
|- | |- | ||
|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 [ | 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]. | ||
{| style="background: #eeeeff;" | {| style="background: #eeeeff;" | ||
|+''' | |+'''Accounts x Topics''' table | ||
|- | |- | ||
!Field||Type||Description | !Field||Type||Description | ||
|- | |- | ||
|ID_Acct||int(4)||Accounts.ID | |'''ID_Acct'''||int(4)||Accounts.ID | ||
|- | |- | ||
|ID_Topic||int(4)||Topics.ID | |'''ID_Topic'''||int(4)||Topics.ID | ||
|} | |} | ||
===Transactions=== | ===Transactions=== | ||
Line 48: | Line 39: | ||
!Field||Type||Description | !Field||Type||Description | ||
|- | |- | ||
|ID||int(4) autonumber | |'''ID'''||int(4) autonumber | ||
|- | |- | ||
|Descr||text||description of transaction | |'''Descr'''||text||description of transaction | ||
|- | |- | ||
|When||date||date when the transaction occurred, as recorded by user | |'''When'''||date||date when the transaction occurred, as recorded by user | ||
|} | |} | ||
Line 60: | Line 51: | ||
!Field||Type||Description | !Field||Type||Description | ||
|- | |- | ||
| | ||'''ID'''||int(4) key autonumber | ||
|- | |- | ||
|ID_Mode||int(4)||TrxModes.ID of transaction mode (source, target, equity, topic) | |'''ID_Trx'''||int(4)||Trxacts.ID of master transaction | ||
|- valign=top | |||
|'''ID_Mode'''||int(4)||TrxModes.ID of transaction mode (source, target, equity, topic) | |||
|- valign=top | |||
|'''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 | ||
|- valign=top | |||
|'''Amount'''||currency||amount of transaction; positive = deposit, negative = withdrawal. | |||
*Sum of all source parts plus all target parts must equal zero. | *Sum of all source parts plus all target parts must equal zero. | ||
*Sum of all equity parts must equal sum of all target parts. | *Sum of all equity parts must equal sum of all target parts. | ||
Line 83: | Line 77: | ||
!Field||Type||Description | !Field||Type||Description | ||
|- | |- | ||
|ID||int(4) autonumber | |'''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|| | |'''Descr'''||text||(optional) description of topic | ||
|- | |- | ||
|ID_Parent||int(4)||Topics.ID of parent topic; NULL = this is a root topic | |'''ID_Parent'''||int(4)||Topics.ID of parent topic; NULL = this is a root topic | ||
|} | |} | ||
Latest revision as of 13:54, 10 October 2020
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 except [2020-10-10] that it is now on wooz.dev and is an old version).
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.