hledger
hledger copied to clipboard
HEP: re-think support for budgeting (incomplete)
What is being proposed, in one sentence ?
Make periodic and automated transactions run all the time, but hide some transactions by tags declared for hiding and accounts market for budget bucketing.
What real problem is being solved ?
Orthogonality of behavior for auto/periodic/budget transaction. Periodic transaction isn't just for budgeting.
What is the proposed UI and help, if applicable ?
Budgeting with offsets to existing accounts
account assets
tag budget-account
account expenses:grocery
tag budget-account
tag budget-txn
enabled false
~ monthly from 2017/3
; :budget-txn:
expenses:housing:rent $1,200
expenses:grocery:milk $100
expenses:clothes $100
assets:bank
2017/3/1 !
; :budget-txn:
expenses:house:agency $1,200.00
assets:bank
$ hledger bal --enable=budget-txn --bucket-by=budget-account
Budgeting with separate accounts
account assets:budget
tag budget-account
account budget:grocery
tag budget-account
tag budget-txn
enabled false
~ monthly
; :budget-txn:
budget:grocery $300
budget:clothes $50
assets:budget
= ^expenses:grocery
budget:grocery *-1 ; :budget-txn:
assets:budget *1 ; :budget-txn:
$ hledger bal --enable=budget-txn tag:budget-account
You still can use periodic and automated transactions outside of your budgeting.
; each month employers owes me money for my past work
~ monthly
income:employer:salary $-5,000.00
liabilities:employer
; I'm to lazy to always write this postings with each withdraw that results in bank fee
= ^assets:my bank:account1 amt:<0 not:tag:override
assets:my bank:account1 *0.008
expenses:bank fee *-0.008
; When I buy a product I'd let it automatically split off expenses (e.g. 20% VAT)
= ^expenses:grocery
$account *-0.20 ; TODO: implement referencing matched account
expenses:taxes:vat *0.20
Pivot based approach with manual-allocation (already supported)
account expenses:grocery
tag budget:grocery
2017/1/1
income:salary $-5000
assets:bank $200 ; budget:grocery
assets:bank $1300 ; budget:housing:rent
assets:bank ; budget:savings
2017/1/1
expenses:grocery $200
assets:bank
$ hledger bal --pivot=budget
What is a rough draft of the reference documentation, or other details ?
What is in and out of scope for this ?
- Account-level tags.
- Reducing tree of accounts by a tag.
- Tag sub-directive to to disable transaction marked by such tags.
How will this interact with existing features and systems ?
These features with automated and periodic transaction may help to build budgeting workflow.
How will we test or ensure this remains effective ?
shelltests? TBD
What is an estimate of hours required ?
Which of our current Projects does this relate to, if any ?
2017-2 improve real-world usefulness