# Test generation of periodic transactions with --forecast. # Note periodic transaction tests should include a regular transaction # to pin the start date of forecasted transactions. # 1. A balance report with forecasted transactions. hledger bal -M -b 2016-11 -e 2017-02 -f - --forecast <<< 2016/12/31 expenses:housing $600 assets:cash ~ monthly from 2016/1 income $-1000 expenses:food $20 expenses:leisure $15 expenses:grocery $30 assets:cash >>> Balance changes in 2016-12-01-2017-01-31: || Dec Jan ==================++=============== assets:cash || $-600 $935 expenses:food || 0 $20 expenses:grocery || 0 $30 expenses:housing || $600 0 expenses:leisure || 0 $15 income || 0 $-1000 ------------------++--------------- || 0 0 >>>2 >>>=0 # 2. print forecasted transactions, with status and description. hledger print -b 2016-11 -e 2017-02 -f - --forecast <<< 2016/12/31 expenses:housing $600 assets:cash ~ monthly from 2016/1 * marked cleared, and with a description income $-1000 expenses:food $20 expenses:leisure $15 expenses:grocery $30 assets:cash >>> 2016-12-31 expenses:housing $600 assets:cash 2017-01-01 * marked cleared, and with a description ; generated-transaction: ~ monthly from 2016/1 income $-1000 expenses:food $20 expenses:leisure $15 expenses:grocery $30 assets:cash >>>2 >>>=0 # 3. A register with forecasted transactions, with a comment and tag. hledger register -b 2016-11 -e 2017-02 -f - --forecast tag:a <<< 2016/12/31 expenses:housing $600 assets:cash ~ monthly from 2016/1 ; or a comment, maybe with a:tag income $-1000 expenses:food $20 expenses:leisure $15 expenses:grocery $30 assets:cash >>> 2017-01-01 income $-1000 $-1000 expenses:food $20 $-980 expenses:leisure $15 $-965 expenses:grocery $30 $-935 assets:cash $935 0 >>>2 >>>=0 # 4. Check that --forecast generates transactions only after last transaction date in journal. hledger register -b 2015-12 -e 2017-02 -f - assets:cash --forecast <<< 2016/01/01 expenses:fun $10 ; more fireworks assets:cash 2016/12/02 expenses:housing $600 assets:cash ~ yearly from 2016 income $-10000 ; bonus assets:cash >>> 2016-01-01 assets:cash $-10 $-10 2016-12-02 assets:cash $-600 $-610 2017-01-01 assets:cash $10000 $9390 >>>2 >>>=0 # 5. Y affects M/D partial dates in periodic transactions. # The recur tag shows the original period expression and is not modified. hledger -f - print --forecast desc:forecast <<< Y 2000 ~ 2/1 forecast ; a real transaction to set the start of the forecast window 2000/1/1 real >>> 2000-02-01 forecast ; generated-transaction: ~ 2/1 >>>2 >>>=0 # 6. Y also sets the month to 1, affecting D dates: hledger -f - print --forecast desc:forecast <<< Y 2000 ~ 15 forecast ; a real transaction to set the start of the forecast window 2000/1/1 real >>> 2000-01-15 forecast ; generated-transaction: ~ 15 >>>2 >>>=0 # 7. Y also sets the day to 1, affecting relative dates: hledger -f - print --forecast desc:forecast <<< Y 2000 ~ next month forecast ; a real transaction to set the start of the forecast window 2000/1/1 real >>> 2000-02-01 forecast ; generated-transaction: ~ next month >>>2 >>>=0