FinanceFerret

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
Revision as of 01:24, 31 August 2008 by Woozle (talk | contribs) (→‎Tables: Transactions (exported from MySQL))
Jump to navigation Jump to search

Overview

FinanceFerret is the working name for an (eventually) open source personal finance manager application currently being developed by Woozle.

Goals

  • To avoid shortcomings in existing money manager 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

Naming

Googling for "financeferret" did not turn up any apparent trademarks. The domain name "financeferret.com" was registered in 2006, but the web site still shows it as "coming soon" -- possibly a domain squatter. "financeferret.net" and "financeferret.org" are available as of 2008-08-17, and I don't plan to register them (got enough just-for-the-name domains sitting around sucking $12/year out of my bank account).

From this, I determine that the name is more or less available for this use. If the registrant of financeferret.com would like to donate it to this project, I'd be happy to accept it. --Woozle 09:26, 17 August 2008 (EDT)

Status

The software currently exists as a Microsoft Access 97 program (written in VBA); I have migrated the tables to MySQL, and the basic functions are now working and usable. The rest of the application will be migrated to non-proprietary platforms as time permits, and I will be posting the source code as soon as I have any worth publishing.

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.

Early documentation for that version is on HypertWiki.

Concepts

Tables

Transactions

<mysql>DROP TABLE IF EXISTS `Transactions`; CREATE TABLE `Transactions` (

 `ID` int(4) NOT NULL auto_increment,
 `ID_Type` varchar(50) default NULL,
 `ID_Acct` int(4) default NULL,
 `ID_Dest` int(4) default NULL,
 `ID_Equity` int(4) default NULL,
 `ID_TrxMirror` int(4) default NULL,
 `ID_TrxDup` int(4) default NULL,
 `CheckNum` varchar(50) default NULL,
 `Amount` float default NULL,
 `AmountOrig` float default NULL,
 `DateAction` datetime default NULL,
 `DateEffective` datetime default NULL,
 `WhenEntered` datetime default NULL,
 `WhenChanged` datetime default NULL,
 `WhoEntered` varchar(63) default NULL COMMENT "[user]@machine",
 `Accounted` tinyint(1) default NULL,
 `Voided` tinyint(1) default NULL,
 `ToVerify` tinyint(1) default NULL,
 `IsApprox` tinyint(1) default NULL,
 `SortEntry` varchar(50) default NULL,
 `SortInst` varchar(50) default NULL,
 `BalanceImmed` float default NULL,
 `BalanceStated` float default NULL,
 `UseBalanceEffective` tinyint(1) default NULL,
 `Descr` varchar(255) default NULL,
 `CalcBalance` float default NULL,
 PRIMARY KEY  (`ID`),
 KEY `Acct` (`ID_Acct`)

) ENGINE=MyISAM;</mysql>

This is pretty much the Access version, with a minor tweak for multiuser support (WhoEntered).

Event Log

Copied, with only slight changes, from VbzCart tables. This version is suitable for re-use in other projects, but perhaps should be renamed EventLog or Events because the MySQL syntax highlighter thinks "log" is a keyword.

<mysql>DROP TABLE IF EXISTS `Event Log`; CREATE TABLE `Event Log` (

   ID INT NOT NULL AUTO_INCREMENT COMMENT "log line identifier",
   EvWhen DATETIME NOT NULL COMMENT "when the event started",
   EvWhere varchar(255) COMMENT "where in the code the event happened (suitable for filtering)",
   Params varchar(255) COMMENT "any relevant parameters",
   Descr varchar(255) COMMENT "description of event",
   Code INT DEFAULT NULL COMMENT "numeric event code unique to location (EvWhere)",
   AppUser varchar(127) COMMENT "application username, for when we have a user-security system",
   SysUser varchar(127) COMMENT "who logged into the operating system (username)",
   Machine varchar(64) COMMENT "network name of machine from which the event was initiated, if applicable",
   isError BOOL COMMENT "FALSE = this is just a message or normal event; TRUE = there is a problem to fix (error)",
   isSevere BOOL COMMENT "TRUE = important enough to send email to admin immediately",
   Notes varchar(255) DEFAULT NULL COMMENT "manually-entered notes",
   PRIMARY KEY (`ID`)
) ENGINE = MYISAM;</mysql>

  • Have to use "Ev" prefix because When and Where are keywords.