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
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
ledger -f tickets.dat balance Tickets shows my tickets
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