Title : Port of the week: ledger
Author: Solène
Date  : 02 May 2018
Tags  : unix

In this post I will do a short presentation of the port
productivity/ledger, an very powerful command line accounting
software, using plain text as back-end. Writing on it is not an easy
task, I will use a real life workflow of my usage as material, even if
my use is special.

As I said before, Ledger is _very_ powerful. It can helps you manage
your bank accounts, bills, rents, shares and others things. It uses a
double entry system which means each time you add an operation
(withdraw, paycheck, ...) , this entry will also have to contain the
current state of the account after the operation. This will be checked
by ledger by recalculating every operations made since it has been
initialized with a custom amount as a start. Ledger can also tracks
categories where you spend money or statistics about your payment
method (check, credit card, bank transfer, money...).

As I am not an english native speaker and that I don't work in banks
or related, I am not very familiar with accounting words in english,
it makes me very hard to understand all ledger keywords, but I found a
special use case for accounting things and not money which is really
practical.

My special use case is that I work from home for a company working in
a remote location. From time to time, I take the train to the to the
office, the full travel is

    [home]   → [underground A] → [train] → [underground B] → [office]
    [office] → [underground B] → [train] → [underground A] → [home]

It means I need to buy tickets for both underground A and underground
B system, and I want to track tickets I use for going to work. I buy
the tickets 10 by 10 but sometimes I use it for my personal use or
sometimes I give a ticket to someone. So I need to keep track of my
tickets to know when I can give a bill to my work for being refunded.

Practical example: I buy 10 tickets of A, I use 2 tickets at
day 1. On day 2, I give 1 ticket to someone and I use 2 tickets in the
day for personal use. It means I still have 5 tickets in my bag but,
from my work office point of view, I should still have 8 tickets. This
is what I am tracking with ledger.

    2018/02/01 * tickets stock Initialization + go to work
        Tickets:inv                                   10 City_A
        Tickets:inv                                   10 City_B
        Tickets:inv                                   -2 City_A
        Tickets:inv                                   -2 City_B
        Tickets
    
    2018/02/08 * Work
        Tickets:inv                                    -2 City_A
        Tickets:inv                                    -2 City_B
        Tickets
    
    2018/02/15 * Work + Datacenter access through underground
        Tickets:inv                                    -4 City_B
        Tickets:inv                                    -2 City_A
        Tickets

At the point, running `ledger -f tickets.dat balance Tickets` shows my
tickets remaining:

    4 City_A
    2 City_B  Tickets:inv

Will add another entry which requires me to buy tickets:
   
    2018/02/22 * Work + Datacenter access through underground
        Tickets:inv                                    -4 City_B
        Tickets:inv                                    -2 City_A
        Tickets:inv                                    10 City_B
        Tickets

Now, running `ledger -f tickets.dat balance Tickets` shows my tickets
remaining:

    2 City_A
    8 City_B  Tickets:inv


I hope that the example was clear enought and interesting. There is a
big tutorial document available on the ledger homepage, I recommend to
read it before using ledger, it contains real world examples with
accounting. [Homepage link](http://www.ledger-cli.org/)