hledger

time and money

hledger

list and journal

balance

budget

report

forecast

hledger

  • plain text based
  • command-line + web
  • any resources
  • multicurrency
  • CSV import with rules
  • Haskell :)

Record

Account classes

  • Income
  • Assets
  • Expenses

Expenses

  • expenses:food
  • expenses:alcohol
  • expenses:games
  • expenses:games:video
  • expenses:games:tabletop
  • expenses:games:paintball
  • ...

Balance

$ hledger balance
                $-65  assets
                 $65  expenses
                 $30    food
                  $5      apples
                  $5      bananas
                 $20      doshirak
                 $35    games
                 $15      gog
                 $20      steam
--------------------
                   0

Freelancing

2017/10/30 Заказ на разработку сайта-визитки от Васи
    (budget:вася:сайт-визитка:шапка)              1000
    (budget:вася:сайт-визитка:мясо)               3000

2017/10/31 Счёт (001) - (сайт-визитка)
    (budget:вася:сайт-визитка:шапка)              -500  ; update project budget
    (budget:вася:сайт-визитка:мясо)              -1000
    assets:receivable:вася:сайт-визитка:шапка      500
    assets:receivable:вася:сайт-визитка:мясо      1000
    revenues:вася
    (liabilities:tax:federal)                     -150  ; note tax due, eg 15%

2017/11/15 Платёж по счёту 001
    assets:receivable:вася:сайт-визитка:шапка     -500
    assets:receivable:вася:сайт-визитка:мясо     -1000
    assets:bank:checking

2018/4/15 Налоги за 2017
    liabilities:tax:federal                       5000
    assets:bank:checking

Budgeting

~ monthly from 2018/01
  Expenses:Food           500 USD
  Expenses:Health         200 USD
  Expenses:Home          2545 USD
  Expenses:Transport      120 USD
  Income:US            -10700 USD
  Assets:US

Budgeting

$ hledger balance -f example.hledger -f budget.journal\
  --budget cur:USD -MB -b 2018-01 -e 2018-02
Balance changes in 2018/01/01:

                          ||                            2013/01 
==========================++====================================
 <unbudgeted>:Expenses    ||                        5980.60 USD 
 <unbudgeted>:Liabilities ||                         293.09 USD 
 Assets:US                ||      1893.32 USD [26% of 7335 USD] 
 Expenses:Food            ||        396.46 USD [79% of 500 USD] 
 Expenses:Health          ||       290.70 USD [145% of 200 USD] 
 Expenses:Home            ||     2544.98 USD [100% of 2545 USD] 
 Expenses:Transport       ||       120.00 USD [100% of 120 USD] 
 Income:US                || -15119.10 USD [141% of -10700 USD] 
--------------------------++------------------------------------
                          ||                       -3599.95 USD

Multiple currencies

2018/05/16 Закупил яблок для сидра
    assets:debit card         -2000.00 RUR
    assets:food:apples         4 kg

2018/05/20 Перегнал сидр
    assets:food:apples        -4 kg
    assets:food:sugar         -2 kg
    assets:food:cider          4 bottles

CSV import

### Tinkoff CSV import rules for hledger
# tinkoff.csv.rules

## Actual header
# "Дата операции";"Дата платежа";"Номер карты";"Статус";"Сумма операции";"Валюта операции";"Сумма платежа";"Валюта платежа";"Кэшбэк";"Категория";"MCC";"Описание";"Бонусы (включая кэшбэк)"

# skip header
skip 1

# name the fields
fields date, _, _, _, amount, _, _, _, _, category, _, desc, _

date-format  %d.%m.%Y %T

description %category - %desc

account1    assets:tinkoff:main

CSV import

$ hledger -f tinkoff.csv print
using conversion rules file tinkoff.csv.rules
2012/03/22 DEPOSIT
    income:unknown             $-50.00
    assets:bank:checking        $50.00

2012/03/23 TRANSFER TO SAVINGS
    assets:bank:savings         $10.00
    assets:bank:checking       $-10.00

Time tracking

; 2018.timedot

2018/5/7
personal:email  20m
work:haskell    .... ..
work:slack      .
work:haskell    .... .
personal:tea    .
work:slack      .
work:email      ..
work:haskell    ...
personal:lunch  1h15m
work:slack      .
work:haskell    .... ...
personal:tea    .
work:slack      .
work:haskell    ..

Time budgeting

;;; Time budget for half a year
; time_budget.journal

~ every 6 months
    time:spent      -4320  ; 180*24
    time:sleep       1440  ; 180*8
    time:cooking     360   ; 180*2
    time:transport   260   ; 5*26*2
    time:work        1040  ; 5*26*8
    time:free

~ every Monday
    time:free       -2 ; Fitness
    time:spent

~ every Thursday
    time:free       -2 ; Fitness
    time:spent

Time tracking

; example.timedot

### Встреча однокурсников
2018/03/19
    time:free       3h
    time:spent

# Очень важный проект
## Нужно сделать до мая

### Задача 1
2018/05/01
    time:work       20h
    time:spent

### Задача 2
2018/05/01
    time:work       40h
    time:spent


### Mission impossible
2018/04/01
    time:work       1000h
    time:spent

Time reporting

$ hledger -f example.timedot -f time_budget.journal bal\
  --budget --forecast --cumulative -b 2018/02 -e 2018/06 -M
Budget performance in 2018/02/01-2018/05/31:

                ||                         Feb                          Mar                          Apr                          May 
================++====================================================================================================================
 time:cooking   ||          0 [   0% of   360]           0 [   0% of   360]           0 [   0% of   360]           0 [   0% of   360] 
 time:free      ||        0 [   0% of 1204.00]      3.00 [   0% of 1186.00]      3.00 [   0% of 1168.00]    -15.00 [  -1% of 1150.00] 
 time:sleep     ||          0 [   0% of  1440]           0 [   0% of  1440]           0 [   0% of  1440]           0 [   0% of  1440] 
 time:spent     ||       0 [   0% of -4304.00]        0 [   0% of -4286.00]        0 [   0% of -4268.00]    18.00 [   0% of -4250.00] 
 time:transport ||          0 [   0% of   260]           0 [   0% of   260]           0 [   0% of   260]           0 [   0% of   260] 
 time:work      ||          0 [   0% of  1040]           0 [   0% of  1040]     1000.00 [  96% of  1040]     1060.00 [ 102% of  1040] 
----------------++--------------------------------------------------------------------------------------------------------------------
                ||          0 [             0]        3.00 [             0]     1003.00 [             0]     1063.00 [             0]

References

hledger

By Alexander Letov

hledger

Introduction to hledger tool and it's basic usage.

  • 196