Title: Port of the week: ledger | |
Author: Solène | |
Date: 02 May 2018 | |
Tags: unix | |
Description: | |
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 | |
Tickets:inv -2 City_A | |
Tickets:inv -2 City_B | |
Tickets | |
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: | |
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/) |