As my files have grown, and the complexity of my data has increased, validation has been a big concern.
Typos in account names, metadata tags (ER #'s, categories, etc), missing links to receipts, or myriads of other kinds of parseable but slightly broken transactions have cropped up and always cost me money in lost reimbursements. This is a key item I need to fix immediately, and is closely related to using a UI for data entry instead of a text editor. A freeform text editor doesn't understand ledger's format, just plain text. Using emacs helps with color coding, but try teaching an end user emacs AND ledger at the same time. So here, the flexibility of text is hurting me because text allows inconsistency. I need to be able to ensure that data is entered (or altered) consistently and correctly. A UI can really help by limiting the kinds of edits and allowed values, or potentially constraints can be placed in ledger (John's assert statements). This was one of the main reasons I had considered moving to a database like SQL. I could strictly enforce constraints on the data, without having to code text editing routines and dealing with varying underlying file layouts (ie: multiple files and directories). A database was simple, central storage with a fast API to develop against. I don't like SQL because SQL means I lose VC and the benefits that provides. I looked at some text databases like GNU Recutils which allow typed enumerated fields, and John suggested that ledger could simulate that with assert statements. I'm still investigating that option. I did throw together an example database schema modelled on Ledger's text format, with a txn composed of multiple postings. It didn't take long at all. Unfortunately all the Ledger functionality would be unavailable if I took that route, and I would be reimplementing basic features from scratch on the reporting side. ------------------------------------------------------------------ Russell Adams [email protected] PGP Key ID: 0x1160DCB3 http://www.adamsinfoserv.com/ Fingerprint: 1723 D8CA 4280 1EC9 557F 66E8 1154 E018 1160 DCB3
