hledger icon indicating copy to clipboard operation
hledger copied to clipboard

HEP: re-think support for budgeting (incomplete)

Open ony opened this issue 8 years ago • 0 comments

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

Discussion

ony avatar Jan 21 '17 04:01 ony