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 import2,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/