I'm just starting to use ledger to implement finances for an organization. The organization is a home with a bunch of folks where we share costs. I'm thinking that the virtual transactions will work great for budgeting; for example I'm thinking of doing something like this to track utilities bills:
4/1 Pay electric Expenses:Utilities:Electric $100 Housebills:Dave ; because I'm the one who actually paid it (Budget:Utilities:2010-04) $100 4/1 Pay gas for April and May Expenses:Utilities:Water $100 Housebills:Jane ; Maybe she paid the water bill (Budget:Utilities:2010-04) $50 (Budget:Utilities:2010-05) $50 ; ... etc for all the utilities ; Then when it's time to issue housebill, I can use ; ledger bal budget:utilities:2010-04 ; to find out that the total utilities for the month were $150 4/15 Charge utilities Income:Utilities Collected $-150 (Budget:Utilities:2010-04) $-150 Housebills:Dave $50 Housebills:Jane $50 Housebills:Alex $50 splitting the costs evenly among my housemates So there are two features that would be nice here: 1: For many instances of the virtual posting (the first and the last, specifically) I want the posting to the budget to be the exact same as some real posting. For example, I'd like to add the exact value I spent on electricity to the utilities budget and having to type the same number twice leaves room for error. 2: There are a bunch of cases where I want to divide a charge evenly among a bunch of postings. Both in the "Take the utilities budget for this month and divide it evenly among my housemates" case (all non-virtual) and in the "Take the water bill (real charge) and divide it evenly among virtual budget charges for two months" cases. Maybe these can be implemented by allowing some sort of special syntax in the amount field? So I could write something like: 4/1 Pay electric Expenses:Utilities:Electric $100 (Budget:Utilities:2010-04) ^=^ Housebills:Dave ; because I'm the one who actually paid it 4/1 Pay gas for April and May Expenses:Utilities:Water $100 (Budget:Utilities:2010-04) ^/^ (Budget:Utilities:2010-05) ^/^ Housebills:Jane ; Maybe she paid the water bill 4/15 Charge utilities Income:Utilities Collected $-150 (Budget:Utilities:2010-04) ^=^ Housebills:Dave ^-/^ Housebills:Jane ^-/^ Housebills:Alex ^-/^ This is not necessarily the best syntax. The semantics would basically be: - When you read a ^=^, interpret it as equal to whatever is written immediately above it. - When you read a ^-=^, interpret it as the negative of whatever is written immediately above it. - When you read a ^/^, hold off on calculating its value and keep reading until you find a posting that isn't ^/^. Then take the value immediately above the first ^/^, divide it by the number of ^/^s, and assign that it all of them. ^-/^ is the same but assigns the negative. ^^ elements perhaps can't be after a posting with an empty amount. If you place a ^=^ after a ^/^ it copies the value of the ^/^ not the total that it was adding up to. Would something like this be reasonable? I'd be interesting in helping implement too, although I'll admit that I've had some difficulty getting a build environment for ledger (I can probably build based on whatever is in MacPorts but that isn't git master, I think). --dave -- [email protected] | langtonlabs.org | flickr.com/photos/glasser/
