Checks, Invoices and Deposits

When PBooks first started, there was support for invoices and checks. However, to keep the scope and focus of the open source project manageable, I removed this functionality, as it requires some level of customer relationship management (CRM).

I may replace these components very soon, but only with RESTful CRM hooks, no built-in CRM functionality. Alternatively, an LDAP backend could be used as a storage and retrieval mechanism for payee and customer information.

If you are familiar with open source web applications, you'll surely note the availability of some terrific open source CRM projects, like SugarCRM. It would be great to integrate with SugarCRM at some point, but the last time I examined its code, I was overwhelmed with its complexity. Bookkeeping Metadata

While I'm thinking about checks, invoices and deposits, I'll jot down a few notes:

  • Probably a good idea to store checks, invoices, and deposits just like any other journal entry
  • Store the fact that a certain journal transaction involves a check, invoice, deposit, or other special transaction as metadata in a new table called "entry_metadata".
  • Why? Like the options key-value-pairs, entry_metadata will allow a flexible mechanism for arbitrary metadata, keeping the core model lean and mean. This is a necessity for vast amounts of financial data to be stored, analyzed, and transformed.

Also while I'm at it, I should also mention that I plan to move the "memorandum" and "description" fields out of the entries and general ledger tables, as I'm noticed they are quite repetitive. By storing them in a separate table and referencing them with a unique identifier, the data will be stored in a more efficient manner. I don't plan to do this for some time, but I want to make sure I remember this important idea.

By on May 29, 2007 9:34 AM