# Test budget addon # Rewrite rules within journal always applied runghc ../../bin/hledger-budget.hs bal -f - --no-total -DH budget <<< = ^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 >>> Ending balances (historical) in 2016/12/31-2017/01/02: || 2016/12/31 2017/01/01 2017/01/02 ================++===================================== budget:food || 0 $-50.00 $-50.00 budget:housing || $-600.00 $-600.00 $-600.00 budget:misc || 0 $-15.00 $-16.60 >>>2 >>>=0 # Rewrite rules can chain one another according to order of definition runghc ../../bin/hledger-budget.hs reg -f - <<< ; unfortunately date override in posting comment doesn't work = liabilities:credit amt:<0 date:2016/12 liabilities:credit *-1 ; [2017/1/1] assets:bank *1 ; [2017/1/1] = liabilities:credit amt:<0 date:2017/1 liabilities:credit *-1 ; [2017/2/1] assets:bank *1 ; [2017/2/1] = liabilities:credit amt:<0 date:2017/2 liabilities:credit *-1 ; [2017/3/1] assets:bank *1 ; [2017/3/1] = assets:bank date:2017/2 amt:<0 assets:bank *0.008 expenses:fee *-0.008 ; :salary-card: cash withdraw fee = expenses:fee tag:salary-card date:2017-2017/12/26 income:compensate *-0.5 assets:bank *0.5 ; compensation from employer 2016/12/31 expenses:housing $600 liabilities:credit 2017/1/1 expenses:food $20 expenses:leisure $15 expenses:grocery $30 liabilities:credit 2017/1/2 assets:cash $200.00 liabilities:credit 2017/2/1 assets:cash $100.00 liabilities:credit >>> 2016/12/31 expenses:housing $600.00 $600.00 liabilities:credit $-600.00 0 liabilities:credit $600.00 $600.00 assets:bank $-600.00 0 2017/01/01 expenses:food $20.00 $20.00 expenses:leisure $15.00 $35.00 expenses:grocery $30.00 $65.00 liabilities:credit $-65.00 0 liabilities:credit $65.00 $65.00 assets:bank $-65.00 0 2017/01/02 assets:cash $200.00 $200.00 liabilities:credit $-200.00 0 liabilities:credit $200.00 $200.00 assets:bank $-200.00 0 2017/02/01 assets:cash $100.00 $100.00 liabilities:credit $-100.00 0 liabilities:credit $100.00 $100.00 assets:bank $-100.00 0 assets:bank $-0.80 $-0.80 expenses:fee $0.80 0 income:compensate $-0.40 $-0.40 assets:bank $0.40 0 >>>2 >>>=0 # Periodical transactions within journal being applied with inverted sign in amounts # As well, accounts from periodic transaction being used for bucketing runghc ../../bin/hledger-budget.hs bal -f - --no-total -DH expenses <<< ~ daily from 2016/12/31 expenses:food $8 assets ~ weekly expenses:leisure $20 expenses:grocery $50 expenses:housing $250 expenses:fee $10 assets = ^assets:bank$ date:2017/1 amt:<0 assets:bank *0.008 expenses:fee *-0.008 ; cash withdraw fee 2016/12/31 expenses:housing:rent $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/1/4 assets:cash $100.00 assets:bank >>> Ending balances (historical) in 2016/12/26-2017/01/04: || 2016/12/26 2016/12/27 2016/12/28 2016/12/29 2016/12/30 2016/12/31 2017/01/01 2017/01/02 2017/01/03 2017/01/04 ==================++========================================================================================================================= expenses:fee || $-10 $-10 $-10 $-10 $-10 $-10 $-10 $-18.40 $-18.40 $-17.60 expenses:food || 0 0 0 0 0 $-8 $4.00 $-4.00 $-12.00 $-20.00 expenses:grocery || $-50 $-50 $-50 $-50 $-50 $-50 $-20.00 $-70.00 $-70.00 $-70.00 expenses:housing || $-250 $-250 $-250 $-250 $-250 $350.00 $350.00 $100.00 $100.00 $100.00 expenses:leisure || $-20 $-20 $-20 $-20 $-20 $-20 $-5.00 $-25.00 $-25.00 $-25.00 >>>2 >>>=0 # We still can disable bucketing keeping rewrites and budget offset runghc ../../bin/hledger-budget.hs bal -f - --no-total --no-buckets -DH expenses <<< ~ daily from 2016/12/31 expenses:food $8 assets = ^assets:bank$ date:2017/1 amt:<0 assets:bank *0.008 expenses:fee *-0.008 ; cash withdraw fee 2016/12/31 expenses:housing:rent $600 assets:bank 2017/1/1 expenses:food $20 expenses:leisure $15 expenses:grocery $30 assets:bank >>> Ending balances (historical) in 2016/12/31-2017/01/01: || 2016/12/31 2017/01/01 =======================++========================= expenses:fee || 0 $1 expenses:food || $-8 $4 expenses:grocery || 0 $30 expenses:housing:rent || $600 $600 expenses:leisure || 0 $15 >>>2 >>>=0 # We can disable offset keeping rewrites and bucketing # Note that original account names used for query runghc ../../bin/hledger-budget.hs bal -f - --no-total --no-offset -DH expenses <<< ~ daily from 2016/12/31 expenses:food $8 assets = ^assets:bank$ date:2017/1 amt:<0 assets:bank *0.008 expenses:fee *-0.008 ; cash withdraw fee 2016/12/31 expenses:housing:rent $600 assets:bank 2017/1/1 expenses:food $20 expenses:leisure $15 expenses:grocery $30 assets:bank >>> Ending balances (historical) in 2016/12/31-2017/01/01: || 2016/12/31 2017/01/01 ===============++========================= || $600 $646 expenses:food || 0 $20 >>>2 >>>=0 # We can keep just rewrites runghc ../../bin/hledger-budget.hs bal -f - --no-total --no-buckets --no-offset -DH expenses <<< ~ daily from 2016/12/31 expenses:food $8 assets = ^assets:bank$ date:2017/1 amt:<0 assets:bank *0.008 expenses:fee *-0.008 ; cash withdraw fee 2016/12/31 expenses:housing:rent $600 assets:bank 2017/1/1 expenses:food $20 expenses:leisure $15 expenses:grocery $30 assets:bank >>> Ending balances (historical) in 2016/12/31-2017/01/01: || 2016/12/31 2017/01/01 =======================++========================= expenses:fee || 0 $1 expenses:food || 0 $20 expenses:grocery || 0 $30 expenses:housing:rent || $600 $600 expenses:leisure || 0 $15 >>>2 >>>=0