hledger/tests/rewrite.test
Stephen Morgan 9de238757b lib,cli,ui: Introduce showMixed*Unnormalised, eliminate most direct calls of strWidth.
This introduces some new helper functions which are exactly the same
as what we had before, but do not call
normaliseMixedAmountSquashPricesForDisplay, so that we can use the new
functions for displaying Transaction and Posting. It also goes through
and gets rid of most uses of the old showMixed* functions which would
benefit from using the new interface.
2020-11-04 14:25:20 +11:00

254 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) $-5 ; 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