Ensures parseable and more sensible-looking output in more cases, and behaves more like Ledger's print. There is still an issue with adding trailing zeroes, which would be nice to prevent.
255 lines
7.5 KiB
Plaintext
255 lines
7.5 KiB
Plaintext
|
|
# 1. Add proportional income tax (from documentation)
|
|
hledger rewrite -f- ^income --add-posting '(liabilities:tax) *.33 ; income tax'
|
|
<<<
|
|
2016/1/1 paycheck
|
|
income:remuneration $-100
|
|
income:donations $-15
|
|
assets:bank
|
|
|
|
2016/1/1 withdraw
|
|
assets:cash $20
|
|
assets:bank
|
|
>>>
|
|
2016-01-01 paycheck ; modified:
|
|
income:remuneration $-100
|
|
(liabilities:tax) $-33 ; income tax, generated-posting: = ^income
|
|
income:donations $-15
|
|
(liabilities:tax) $-4.95 ; income tax, generated-posting: = ^income
|
|
assets:bank
|
|
|
|
2016-01-01 withdraw
|
|
assets:cash $20
|
|
assets:bank
|
|
|
|
>>>2
|
|
>>>=0
|
|
|
|
# 2. Duplicate posting for budgeting (from documentation).
|
|
# It uses same date as the matched posting.
|
|
hledger rewrite -f- expenses:gifts --add-posting '(budget:gifts) *-1'
|
|
<<<
|
|
2016/1/1 withdraw
|
|
assets:cash $20
|
|
assets:bank
|
|
|
|
2016/1/1 gift
|
|
assets:cash $-15
|
|
expenses:gifts ; [1/2]
|
|
>>>
|
|
2016-01-01 withdraw
|
|
assets:cash $20
|
|
assets:bank
|
|
|
|
2016-01-01 gift ; modified:
|
|
assets:cash $-15
|
|
expenses:gifts ; [1/2]
|
|
(budget:gifts) $-15 ; [2016-01-02], generated-posting: = expenses:gifts
|
|
|
|
>>>2
|
|
>>>=0
|
|
|
|
# 3. Add postings in another commodity
|
|
hledger rewrite -f-
|
|
<<<
|
|
2017/04/24 * 09:00-09:25
|
|
(assets:unbilled:client1) 0.42h
|
|
|
|
2017/04/25 * 10:00-11:15
|
|
(assets:unbilled:client1) 1.25h
|
|
|
|
2017/04/25 * 14:00-15:32
|
|
(assets:unbilled:client2) 1.54h
|
|
|
|
; billing rules
|
|
= ^assets:unbilled:client1
|
|
(assets:to bill:client1) *100.00 CAD
|
|
|
|
= ^assets:unbilled:client2
|
|
(assets:to bill:client2) *150.00 CAD
|
|
>>>
|
|
2017-04-24 * 09:00-09:25 ; modified:
|
|
(assets:unbilled:client1) 0.42h
|
|
(assets:to bill:client1) 42.00 CAD ; generated-posting: = ^assets:unbilled:client1
|
|
|
|
2017-04-25 * 10:00-11:15 ; modified:
|
|
(assets:unbilled:client1) 1.25h
|
|
(assets:to bill:client1) 125.00 CAD ; generated-posting: = ^assets:unbilled:client1
|
|
|
|
2017-04-25 * 14:00-15:32 ; modified:
|
|
(assets:unbilled:client2) 1.54h
|
|
(assets:to bill:client2) 231.00 CAD ; generated-posting: = ^assets:unbilled:client2
|
|
|
|
>>>2
|
|
>>>=0
|
|
|
|
|
|
# 4. Add postings with prices
|
|
hledger rewrite -f- -B
|
|
<<<
|
|
2017/04/24 * 09:00-09:25
|
|
(assets:unbilled:client1) 0.42h
|
|
|
|
2017/04/25 * 10:00-11:15
|
|
(assets:unbilled:client1) 1.25h
|
|
|
|
2017/04/25 * 14:00-15:32
|
|
(assets:unbilled:client2) 1.54h
|
|
|
|
; billing rules
|
|
= ^assets:unbilled:client1
|
|
assets:to bill:client1 *1.00 hours @ $100.00
|
|
income:consulting:client1
|
|
|
|
= ^assets:unbilled:client2
|
|
assets:to bill:client2 *1.00 hours @ $150.00
|
|
income:consulting:client2
|
|
>>>
|
|
2017-04-24 * 09:00-09:25 ; modified:
|
|
(assets:unbilled:client1) 0.42h
|
|
assets:to bill:client1 $42.00 ; generated-posting: = ^assets:unbilled:client1
|
|
income:consulting:client1 ; generated-posting: = ^assets:unbilled:client1
|
|
|
|
2017-04-25 * 10:00-11:15 ; modified:
|
|
(assets:unbilled:client1) 1.25h
|
|
assets:to bill:client1 $125.00 ; generated-posting: = ^assets:unbilled:client1
|
|
income:consulting:client1 ; generated-posting: = ^assets:unbilled:client1
|
|
|
|
2017-04-25 * 14:00-15:32 ; modified:
|
|
(assets:unbilled:client2) 1.54h
|
|
assets:to bill:client2 $231.00 ; generated-posting: = ^assets:unbilled:client2
|
|
income:consulting:client2 ; generated-posting: = ^assets:unbilled:client2
|
|
|
|
>>>2
|
|
>>>=0
|
|
|
|
# 5. Add absolute bank processing fee
|
|
# XXX is "and" really processed here ?
|
|
hledger rewrite -f- assets:bank and 'amt:<0' --add-posting 'expenses:fee $5' --add-posting 'assets:bank $-5'
|
|
<<<
|
|
2016/1/1 withdraw
|
|
assets:cash $20
|
|
assets:bank
|
|
|
|
2016/1/2 withdraw
|
|
assets:cash
|
|
assets:bank $-30
|
|
|
|
# # TODO: Fix to filter out this txn by missing amt:<0 condition on assets:bank
|
|
# 2016/1/31 paycheck
|
|
# income:remuneration $-100
|
|
# assets:bank
|
|
>>>
|
|
2016-01-01 withdraw ; modified:
|
|
assets:cash $20
|
|
assets:bank
|
|
expenses:fee $5 ; generated-posting: = assets:bank and "amt:<0"
|
|
assets:bank $-5 ; generated-posting: = assets:bank and "amt:<0"
|
|
|
|
2016-01-02 withdraw ; modified:
|
|
assets:cash
|
|
assets:bank $-30
|
|
expenses:fee $5 ; generated-posting: = assets:bank and "amt:<0"
|
|
assets:bank $-5 ; generated-posting: = assets:bank and "amt:<0"
|
|
|
|
>>>2
|
|
>>>=0
|
|
|
|
# 6. Rewrite rule within journal
|
|
hledger rewrite -f- date:2017/1 --add-posting 'Here comes Santa $0'
|
|
<<<
|
|
= ^assets:bank$ date:2017/1 amt:<0
|
|
assets:bank *0.008
|
|
expenses:fee *-0.008 ; cash withdraw fee
|
|
= ^expenses:housing
|
|
(budget:housing) *-1
|
|
= ^expenses:grocery ^expenses:food
|
|
(budget:food) *-1
|
|
|
|
2016/12/31
|
|
expenses:housing $600
|
|
assets:cash
|
|
|
|
2017/1/1
|
|
expenses:food $20
|
|
expenses:leisure $15
|
|
expenses:grocery $30
|
|
assets:cash
|
|
|
|
2017/1/2
|
|
assets:cash $200.00
|
|
assets:bank
|
|
|
|
2017/2/1
|
|
assets:cash $100.00
|
|
assets:bank
|
|
|
|
; order with normal entries doesn't matter
|
|
; but relative order matters to refer-rewritten transactions
|
|
= ^expenses not:housing not:grocery not:food
|
|
(budget:misc) *-1
|
|
>>>
|
|
2016-12-31 ; modified:
|
|
expenses:housing $600.00
|
|
(budget:housing) $-600.00 ; generated-posting: = ^expenses:housing
|
|
assets:cash
|
|
|
|
2017-01-01 ; modified:
|
|
expenses:food $20.00
|
|
(budget:food) $-20.00 ; generated-posting: = ^expenses:grocery ^expenses:food
|
|
Here comes Santa 0 ; generated-posting: = date:2017/1
|
|
expenses:leisure $15.00
|
|
(budget:misc) $-15.00 ; generated-posting: = ^expenses not:housing not:grocery not:food
|
|
Here comes Santa 0 ; generated-posting: = date:2017/1
|
|
expenses:grocery $30.00
|
|
(budget:food) $-30.00 ; generated-posting: = ^expenses:grocery ^expenses:food
|
|
Here comes Santa 0 ; generated-posting: = date:2017/1
|
|
assets:cash
|
|
Here comes Santa 0 ; generated-posting: = date:2017/1
|
|
|
|
2017-01-02 ; modified:
|
|
assets:cash $200.00
|
|
Here comes Santa 0 ; generated-posting: = date:2017/1
|
|
assets:bank
|
|
assets:bank $-1.60 ; generated-posting: = ^assets:bank$ date:2017/1 amt:<0
|
|
expenses:fee $1.60 ; cash withdraw fee, generated-posting: = ^assets:bank$ date:2017/1 amt:<0
|
|
(budget:misc) $-1.60 ; generated-posting: = ^expenses not:housing not:grocery not:food
|
|
Here comes Santa 0 ; generated-posting: = date:2017/1
|
|
|
|
2017-02-01
|
|
assets:cash $100.00
|
|
assets:bank
|
|
|
|
>>>2
|
|
>>>=0
|
|
|
|
# 7. Rewrite using diff output
|
|
hledger rewrite --diff -f- assets:bank and 'amt:<0' --add-posting 'expenses:fee $5' --add-posting 'assets:bank $-5'
|
|
<<<
|
|
2016/01/01 withdraw
|
|
assets:cash $20
|
|
assets:bank
|
|
|
|
2016/01/02 withdraw
|
|
assets:cash
|
|
assets:bank $-30
|
|
>>>
|
|
--- -
|
|
+++ -
|
|
@@ -1,3 +1,5 @@
|
|
-2016/01/01 withdraw
|
|
+2016-01-01 withdraw ; modified:
|
|
assets:cash $20
|
|
assets:bank
|
|
+ expenses:fee $5 ; generated-posting: = assets:bank and "amt:<0"
|
|
+ assets:bank $-5 ; generated-posting: = assets:bank and "amt:<0"
|
|
@@ -5,3 +7,5 @@
|
|
-2016/01/02 withdraw
|
|
+2016-01-02 withdraw ; modified:
|
|
assets:cash
|
|
assets:bank $-30
|
|
+ expenses:fee $5 ; generated-posting: = assets:bank and "amt:<0"
|
|
+ assets:bank $-5 ; generated-posting: = assets:bank and "amt:<0"
|
|
>>>2
|
|
>>>=0
|