with hledger
https://pauley.org.za/functional-finance-hledger/
Code for these slides: https://github.com/apauley/functional-finance-hledger
Pros | Cons |
---|---|
Low learning curve | No full picture |
Auto import some accounts | No multi-currency support |
Day-to-day view | |
Low maintenance | Low on Privacy |
Pre-created reports | No custom reports |
Auto-classification | Useful classification |
Pros | Cons |
---|---|
Full picture | High maintenance |
Flexible | Transaction import |
Learning curve | Everything is DIY |
Built-in graphs | Not an accounting tool |
Privacy |
Pros | Cons |
---|---|
GUI | GUI |
Full picture | High maintenance |
Multi-currency | GUI-approved currencies |
Import statements | Manual classification |
Reports | Black box - hidden internals |
Privacy | Easy to screw it up |
Learning curve |
Pros | Cons |
---|---|
Plain text files | Learning curve |
Full picture | Only for geeks |
Multi-currency | Some DIY Reports |
Import statements | |
Rules-based classification | |
Maintenance | |
Privacy |
https://github.com/apauley/hledger-makeitso
hledger-makeitso import
2,account_number,'MR JOHN D DEER','FNB TJEKREKENING' 3,,'Staat' 3,'Staatnommer','Vanaf Datum','Tot Datum','Openingsaldo','Afsluitingsaldo','BTW Gehef' 3,55,'28 Desember 2017','28 Januarie 2018',0.01,0.01,-0.01 4,,'Opsomming' 5,,'Transaksies' 5,'Nommer','Datum','Beskrywing1','Beskrywing2','Beskrywing3','Bedrag','Saldo','Opgeloopte Koste' 5,1,'29 Des',"Payment received","Company, Inc",,5000.01,7000.01, 5,2,'01 Jan',"POS Transaction","Grocery Store","My town",-4000.00,3000.01, 6,'END'
Copy it here:
import/mybank/savings/1-in/2018/123456789_2018-01-30.csv
https://github.com/apauley/fnb-csv-demoronizer
"5","'Nommer'","'Datum'","'Beskrywing1'","'Beskrywing2'","'Beskrywing3'","'Bedrag'","'Saldo'","'Opgeloopte Koste'","account2" "5","1","2017-12-29","Payment received","Company, Inc","","5000.01","7000.01","","income:spouse:taxyear2018:salary:nett" "5","2","2018-01-01","POS Transaction","Grocery Store","My town","-4000.01","3000.01","",
Your preprocess script should save it here:
import/mybank/savings/2-preprocessed/2018/123456789_2018-01-30.csv
2017-12-28 Savings Account Opening Balance assets:current:spouse:mybank:savings R2000.00 equity:opening balances:spouse:mybank:savings
skip 1 fields _, code, date, desc1, desc2, desc3, amount, balance, _, account2 currency R status * account1 assets:current:spouse:mybank:savings description %desc1/%desc2/%desc3 if POS.*Grocery Store.*My town account2 expenses:food:groceries
hledger-makeitso import
├── import │ └── mybank │ ├── mybank.journal │ └── savings │ ├── 1-in │ │ └── 2018 │ │ └── 123456789_2018-01-30.csv │ ├── 2-preprocessed │ │ └── 2018 │ │ └── 123456789_2018-01-30.csv │ ├── 3-journal │ │ └── 2018 │ │ └── 123456789_2018-01-30.journal │ ├── fnb-csv-demoronizer │ ├── mybank-savings.journal │ ├── mybank-savings.rules │ ├── opening.journal │ └── preprocess └── import-all.journal
$ cat import-all.journal ### Generated by hledger-makeitso - DO NOT EDIT ### !include import/mybank/mybank.journal
$ cat import/mybank/mybank.journal ### Generated by hledger-makeitso - DO NOT EDIT ### !include savings/mybank-savings.journal
$ cat import/mybank/savings/mybank-savings.journal
### Generated by hledger-makeitso - DO NOT EDIT ###
!include opening.journal
!include 3-journal/2018/123456789_2018-01-30.journal
$ hledger print assets:current not:equity $ cat import/mybank/savings/3-journal/2018/123456789_2018-01-30.journal
2017/12/29 * (1) Payment received/Company, Inc/ assets:current:spouse:mybank:savings R5000.01 = R7000.01 income:spouse:taxyear2018:salary:nett R-5000.01 2018/01/01 * (2) POS Transaction/Grocery Store/My town assets:current:spouse:mybank:savings R-4000.00 = R3000.01 expenses:food:groceries R4000.00
$ hledger balance --pretty-tables --monthly --average \ --sort-amount --depth 2 Balance changes in 2017/12/01-2018/01/31: ║ Dec Jan Average ═════════════════════════╬═════════════════════════════════ expenses:food ║ 0 R4000.00 R2000.00 assets:current ║ R7000.01 R-4000.00 R1500.00 equity:opening balances ║ R-2000.00 0 R-1000.00 income:spouse ║ R-5000.01 0 R-2500.00 ─────────────────────────╫───────────────────────────────── ║ 0 0 0
$ hledger -f example/import-all.journal incomestatement \ --pretty-tables --monthly --average --depth 3 Income Statement 2017/12/28-2018/01/01 ║ Dec Jan Average ═══════════════════════════╬═══════════════════════════════ Revenues ║ ───────────────────────────╫─────────────────────────────── income:spouse:taxyear2018 ║ R5000.01 0 R2500.00 ───────────────────────────╫─────────────────────────────── ║ R5000.01 0 R2500.00 ═══════════════════════════╬═══════════════════════════════ Expenses ║ ───────────────────────────╫─────────────────────────────── expenses:food:groceries ║ 0 R4000.00 R2000.00 ───────────────────────────╫─────────────────────────────── ║ 0 R4000.00 R2000.00 ═══════════════════════════╬═══════════════════════════════ Net: ║ R5000.01 R-4000.00 R500.00
$ hledger print assets:current not:equity -O csv | grep -v assets:current "txnidx","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","posting-status","posting-comment" "2","2017/12/29","","*","1","Payment received/Company, Inc/","","income:unknown","-5000.01","R","5000.01","","","" "3","2018/01/01","","*","2","POS Transaction/Grocery Store/My town","","expenses:food:groceries","4000.00","R","","4000.00","",""
https://plaintextaccounting.org/