Port of the week: ledger

NILIn 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/)