This changes showMixedAmountElided so that the width to elide to is given as an argument, rather than fixed at 22 characters. This actually uses the new renderTable interface. Mostly this is just an internal change, but since we have more information about the widths of things, we can actually get rid of some superfluous spaces in the budget report output, previously there to make sure it stayed aligned with the largest reasonable contents.
		
			
				
	
	
		
			535 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			535 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # balance --budget tests
 | |
| 
 | |
| 2016/12/01
 | |
|     expenses:food  $10
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/02
 | |
|     expenses:food  $9
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/03
 | |
|     expenses:food  $11
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/02
 | |
|     expenses:leisure  $5
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/03
 | |
|     expenses:movies  $25
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/03
 | |
|     expenses:cab  $15
 | |
|     assets:cash
 | |
| 
 | |
| ~ daily from 2016/1/1
 | |
|     expenses:food     $10
 | |
|     expenses:leisure  $15
 | |
|     assets:cash
 | |
| 
 | |
| 
 | |
| # 1. Test --budget switch
 | |
| $ hledger -f- bal -D -b 2016-12-01 -e 2016-12-04 --budget
 | |
| Budget performance in 2016-12-01..2016-12-03:
 | |
| 
 | |
|                   ||          2016-12-01          2016-12-02           2016-12-03 
 | |
| ==================++==============================================================
 | |
|  assets:cash      || $-10 [ 40% of $-25]  $-14 [56% of $-25]  $-51 [204% of $-25] 
 | |
|  expenses         ||  $10 [ 40% of  $25]   $14 [56% of  $25]   $51 [204% of  $25] 
 | |
|  expenses:food    ||  $10 [100% of  $10]    $9 [90% of  $10]   $11 [110% of  $10] 
 | |
|  expenses:leisure ||    0 [  0% of  $15]    $5 [33% of  $15]     0 [  0% of  $15] 
 | |
| ------------------++--------------------------------------------------------------
 | |
|                   ||    0 [           0]     0 [          0]     0 [           0] 
 | |
| 
 | |
| # 2. -E
 | |
| $ hledger -f- bal -D -b 2016-12-01 -e 2016-12-04 --budget -E
 | |
| Budget performance in 2016-12-01..2016-12-03:
 | |
| 
 | |
|                   ||          2016-12-01          2016-12-02           2016-12-03 
 | |
| ==================++==============================================================
 | |
|  assets:cash      || $-10 [ 40% of $-25]  $-14 [56% of $-25]  $-51 [204% of $-25] 
 | |
|  expenses         ||  $10 [ 40% of  $25]   $14 [56% of  $25]   $51 [204% of  $25] 
 | |
|  expenses:cab     ||    0                    0                 $15                
 | |
|  expenses:food    ||  $10 [100% of  $10]    $9 [90% of  $10]   $11 [110% of  $10] 
 | |
|  expenses:leisure ||    0 [  0% of  $15]    $5 [33% of  $15]     0 [  0% of  $15] 
 | |
|  expenses:movies  ||    0                    0                 $25                
 | |
| ------------------++--------------------------------------------------------------
 | |
|                   ||    0 [           0]     0 [          0]     0 [           0] 
 | |
| 
 | |
| # 3. Test that budget works with mix of commodities
 | |
| <
 | |
| 2016/12/01
 | |
|     expenses:food  £10 @@ $15
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/02
 | |
|     expenses:food  10 CAD @ $1
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/02
 | |
|     expenses:food  10 CAD @ $1.1
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/03
 | |
|     expenses:food  $11
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/02
 | |
|     expenses:leisure  $5
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/03
 | |
|     expenses:movies  $25
 | |
|     assets:cash
 | |
| 
 | |
| 2016/12/03
 | |
|     expenses:cab  $15
 | |
|     assets:cash
 | |
| 
 | |
| ~ daily from 2016/1/1
 | |
|     expenses:food     $10
 | |
|     expenses:leisure  $15
 | |
|     assets:cash
 | |
| 
 | |
| $ hledger -f- bal -D -b 2016-12-01 -e 2016-12-04 --budget
 | |
| Budget performance in 2016-12-01..2016-12-03:
 | |
| 
 | |
|                   ||              2016-12-01                   2016-12-02           2016-12-03 
 | |
| ==================++===========================================================================
 | |
|  assets:cash      ||      $-15 [60% of $-25]          $-26 [104% of $-25]  $-51 [204% of $-25] 
 | |
|  expenses         ||       £10 [        $25]    $5, 20 CAD [         $25]   $51 [204% of  $25] 
 | |
|  expenses:food    ||       £10 [        $10]        20 CAD [         $10]   $11 [110% of  $10] 
 | |
|  expenses:leisure ||         0 [ 0% of  $15]            $5 [ 33% of  $15]     0 [  0% of  $15] 
 | |
| ------------------++---------------------------------------------------------------------------
 | |
|                   || $-15, £10 [          0]  $-21, 20 CAD [           0]     0 [           0] 
 | |
| 
 | |
| # 4. --budget with no interval shows total budget for the journal period
 | |
| # (in tabular format). 
 | |
| <
 | |
| ~ daily
 | |
|   (a)  10
 | |
| 
 | |
| ~weekly
 | |
|   (b)  100
 | |
| 
 | |
| ~weekly
 | |
|   (c)  1000
 | |
| 
 | |
| 2018/1/1
 | |
|   (a)  1
 | |
|   (b)  1
 | |
|   (c)  1
 | |
| 
 | |
| 2018/1/3
 | |
|   (a)  1
 | |
|   (b)  1
 | |
|   (c)  1
 | |
| 
 | |
| $ hledger -f- bal --budget
 | |
| Budget performance in 2018-01-01..2018-01-03:
 | |
| 
 | |
|    || 2018-01-01..2018-01-03 
 | |
| ===++========================
 | |
|  a ||         2 [7% of   30] 
 | |
|  b ||         2 [2% of  100] 
 | |
|  c ||         2 [0% of 1000] 
 | |
| ---++------------------------
 | |
|    ||         6 [1% of 1130] 
 | |
| 
 | |
| # 5. Multiple periodic transactions with different intervals are combined. 
 | |
| # Budget goals with lower frequency than the report are posted in the 
 | |
| # appropriate intermittent periods. 
 | |
| $ hledger -f- bal --budget -D
 | |
| Budget performance in 2018-01-01..2018-01-03:
 | |
| 
 | |
|    ||      2018-01-01    2018-01-02     2018-01-03 
 | |
| ===++==============================================
 | |
|  a || 1 [10% of   10]  0 [0% of 10]  1 [10% of 10] 
 | |
|  b || 1 [ 1% of  100]  0 [       0]  1 [        0] 
 | |
|  c || 1 [ 0% of 1000]  0 [       0]  1 [        0] 
 | |
| ---++----------------------------------------------
 | |
|    || 3 [ 0% of 1110]  0 [0% of 10]  3 [30% of 10] 
 | |
| 
 | |
| # 6. Budget goals with higher frequency than the report get added up appropriately.
 | |
| $ hledger -f- bal --budget -W
 | |
| Budget performance in 2018-01-01W01:
 | |
| 
 | |
|    ||  2018-01-01W01 
 | |
| ===++================
 | |
|  a || 2 [7% of   30] 
 | |
|  b || 2 [2% of  100] 
 | |
|  c || 2 [0% of 1000] 
 | |
| ---++----------------
 | |
|    || 6 [1% of 1130] 
 | |
| 
 | |
| # 7. A bounded two day budget. The end date is exclusive as usual.
 | |
| <
 | |
| ~ daily from 2018/1/2 to 2018/1/4
 | |
|   (a)  1
 | |
| 
 | |
| 2018/1/1
 | |
|   (a)  1
 | |
|   (b)  1
 | |
| 
 | |
| 2018/1/2
 | |
|   (a)  1
 | |
|   (b)  1
 | |
| 
 | |
| 2018/1/3
 | |
|   (a)  1
 | |
|   (b)  1
 | |
| 
 | |
| 2018/1/4
 | |
|   (a)  1
 | |
|   (b)  1
 | |
| 
 | |
| $ hledger -f- bal --budget -D
 | |
| Budget performance in 2018-01-01..2018-01-04:
 | |
| 
 | |
|               || 2018-01-01     2018-01-02     2018-01-03  2018-01-04 
 | |
| ==============++======================================================
 | |
|  <unbudgeted> ||          1  1              1                       1 
 | |
|  a            ||          1  1 [100% of 1]  1 [100% of 1]           1 
 | |
| --------------++------------------------------------------------------
 | |
|               ||          2  2 [200% of 1]  2 [200% of 1]           2 
 | |
| 
 | |
| # 8. Multiple bounded budgets.
 | |
| <
 | |
| ~ daily from 2018/1/1 to 2018/1/3
 | |
|   (a)  1
 | |
| 
 | |
| ~ daily from 2018/1/3 to 2018/1/5
 | |
|   (a)  10
 | |
| 
 | |
| 2018/1/1
 | |
|   (a)  1
 | |
| 
 | |
| 2018/1/2
 | |
|   (a)  1
 | |
| 
 | |
| 2018/1/3
 | |
|   (a)  1
 | |
| 
 | |
| 2018/1/4
 | |
|   (a)  1
 | |
| 
 | |
| $ hledger -f- bal --budget -D
 | |
| Budget performance in 2018-01-01..2018-01-04:
 | |
| 
 | |
|    ||    2018-01-01     2018-01-02     2018-01-03     2018-01-04 
 | |
| ===++============================================================
 | |
|  a || 1 [100% of 1]  1 [100% of 1]  1 [10% of 10]  1 [10% of 10] 
 | |
| ---++------------------------------------------------------------
 | |
|    || 1 [100% of 1]  1 [100% of 1]  1 [10% of 10]  1 [10% of 10] 
 | |
| 
 | |
| # 9. A "from A to B" budget should not be included in a report beginning on B.
 | |
| $ hledger -f- bal --budget -D -b 2018/1/3
 | |
| Budget performance in 2018-01-03..2018-01-04:
 | |
| 
 | |
|    ||    2018-01-03     2018-01-04 
 | |
| ===++==============================
 | |
|  a || 1 [10% of 10]  1 [10% of 10] 
 | |
| ---++------------------------------
 | |
|    || 1 [10% of 10]  1 [10% of 10] 
 | |
| 
 | |
| <
 | |
| ~ daily
 | |
|   (a)  1
 | |
| 
 | |
| 2018/1/2
 | |
|   (a)  2
 | |
| 
 | |
| 2018/1/2
 | |
|   (a)  -2
 | |
| 
 | |
| # 10. accounts with non-zero budget should be shown by default 
 | |
| # even if there are no actual transactions in the period,
 | |
| # or if the actual amount is zero.
 | |
| $ hledger -f- bal --budget -D date:2018/1/1-2018/1/3
 | |
| Budget performance in 2018-01-01..2018-01-02:
 | |
| 
 | |
|    ||  2018-01-01   2018-01-02 
 | |
| ===++==========================
 | |
|  a || 0 [0% of 1]  0 [0% of 1] 
 | |
| ---++--------------------------
 | |
|    || 0 [0% of 1]  0 [0% of 1] 
 | |
| 
 | |
| # 11. With -E, zeroes are shown
 | |
| $ hledger -f- bal --budget -D date:2018/1/1-2018/1/3 -E
 | |
| Budget performance in 2018-01-01..2018-01-02:
 | |
| 
 | |
|    ||  2018-01-01   2018-01-02 
 | |
| ===++==========================
 | |
|  a || 0 [0% of 1]  0 [0% of 1] 
 | |
| ---++--------------------------
 | |
|    || 0 [0% of 1]  0 [0% of 1] 
 | |
| 
 | |
| # 12. subaccounts of budgeted accounts count towards budget
 | |
| <
 | |
| ~ daily
 | |
|   (a)      1
 | |
| 
 | |
| 2018/1/1
 | |
|   (a:b)    1
 | |
| 
 | |
| $ hledger -f- bal --budget -N
 | |
| Budget performance in 2018-01-01:
 | |
| 
 | |
|    ||    2018-01-01 
 | |
| ===++===============
 | |
|  a || 1 [100% of 1] 
 | |
| 
 | |
| # 13. budget goals on both parent and subaccounts are counted
 | |
| <
 | |
| ~ daily
 | |
|   (a)        100
 | |
|   (a:b:c)      1
 | |
| 
 | |
| 2018/1/1
 | |
|   (a)          1
 | |
|   (a:b:c)      1
 | |
| 
 | |
| $ hledger -f- bal --budget
 | |
| Budget performance in 2018-01-01:
 | |
| 
 | |
|        ||      2018-01-01 
 | |
| =======++=================
 | |
|  a     || 2 [  2% of 101] 
 | |
|  a:b:c || 1 [100% of   1] 
 | |
| -------++-----------------
 | |
|        || 2 [  2% of 101] 
 | |
| 
 | |
| # 14. tree mode
 | |
| $ hledger -f- bal --budget --tree
 | |
| Budget performance in 2018-01-01:
 | |
| 
 | |
|        ||      2018-01-01 
 | |
| =======++=================
 | |
|  a     || 2 [  2% of 101] 
 | |
|    b:c || 1 [100% of   1] 
 | |
| -------++-----------------
 | |
|        || 2 [  2% of 101] 
 | |
| 
 | |
| # TODO: respect hierarchy when sorting in tree mode
 | |
| 
 | |
| # TODO: respect --sort-amount
 | |
| 
 | |
| # 15. respect --value
 | |
| <
 | |
| P 2018/01/26 SHARE €10
 | |
| 
 | |
| 2018/05/17 Dividend
 | |
|     revenue:dividend       €-10
 | |
|     assets:pension          €10
 | |
| 
 | |
| 2018/05/17 Buy
 | |
|     assets:pension:shares   1 SHARE @ €10
 | |
|     assets:pension          €-10
 | |
| 
 | |
| ~ monthly from 2018/06 to 2018/07
 | |
|     assets:pension                    €1
 | |
|     assets:bank
 | |
| 
 | |
| $ hledger -f - bal -M --budget --cumulative --forecast -V
 | |
| Budget performance in 2018-05-01..2018-06-30, valued at period ends:
 | |
| 
 | |
|                 || 2018-05-31           2018-06-30 
 | |
| ================++=================================
 | |
|  <unbudgeted>   ||       €-10  €-10                
 | |
|  assets         ||        €10   €10 [           0] 
 | |
|  assets:bank    ||          0   €-1 [ 100% of €-1] 
 | |
|  assets:pension ||        €10   €11 [1100% of  €1] 
 | |
| ----------------++---------------------------------
 | |
|                 ||          0     0 [           0] 
 | |
| 
 | |
| # 16. With subaccounts, child accounts are properly included in the parent balance when budget is checked
 | |
| <
 | |
| ~ monthly from 2019/01
 | |
|     expenses:personal             $1,000.00
 | |
|     liabilities
 | |
| 
 | |
| 2019/01/01 Google home hub and home mini x2
 | |
|     expenses:personal:electronics          $10.00
 | |
|     liabilities                           $-10.00
 | |
| 
 | |
| 2019/01/02 Google Home Hub Permium Subscription
 | |
|     expenses:personal:electronics:upgrades          $10.00
 | |
|     liabilities                           $-10.00
 | |
| 
 | |
| 2019/01/03 Something else
 | |
|     expenses:personal          $30.00
 | |
|     liabilities                           $-30.00
 | |
| 
 | |
| $ hledger -f- bal --budget
 | |
| Budget performance in 2019-01-01..2019-01-03:
 | |
| 
 | |
|                    ||    2019-01-01..2019-01-03 
 | |
| ===================++===========================
 | |
|  expenses:personal ||  $50.00 [5% of $1,000.00] 
 | |
|  liabilities       || $-50.00 [5% of $-1000.00] 
 | |
| -------------------++---------------------------
 | |
|                    ||       0 [              0] 
 | |
| 
 | |
| # 17.
 | |
| $ hledger -f- bal --budget -E
 | |
| Budget performance in 2019-01-01..2019-01-03:
 | |
| 
 | |
|                                         ||    2019-01-01..2019-01-03 
 | |
| ========================================++===========================
 | |
|  expenses:personal                      ||  $50.00 [5% of $1,000.00] 
 | |
|  expenses:personal:electronics          ||  $20.00                   
 | |
|  expenses:personal:electronics:upgrades ||  $10.00                   
 | |
|  liabilities                            || $-50.00 [5% of $-1000.00] 
 | |
| ----------------------------------------++---------------------------
 | |
|                                         ||       0 [              0] 
 | |
| 
 | |
| # 18.
 | |
| $ hledger -f- bal --budget --tree
 | |
| Budget performance in 2019-01-01..2019-01-03:
 | |
| 
 | |
|                    ||    2019-01-01..2019-01-03 
 | |
| ===================++===========================
 | |
|  expenses:personal ||  $50.00 [5% of $1,000.00] 
 | |
|  liabilities       || $-50.00 [5% of $-1000.00] 
 | |
| -------------------++---------------------------
 | |
|                    ||       0 [              0] 
 | |
| 
 | |
| # 19.
 | |
| $ hledger -f- bal --budget --tree -E
 | |
| Budget performance in 2019-01-01..2019-01-03:
 | |
| 
 | |
|                    ||    2019-01-01..2019-01-03 
 | |
| ===================++===========================
 | |
|  expenses:personal ||  $50.00 [5% of $1,000.00] 
 | |
|    electronics     ||  $20.00                   
 | |
|      upgrades      ||  $10.00                   
 | |
|  liabilities       || $-50.00 [5% of $-1000.00] 
 | |
| -------------------++---------------------------
 | |
|                    ||       0 [              0] 
 | |
| 
 | |
| # 20. Subaccounts + nested budgets
 | |
| <
 | |
| ~ monthly from 2019/01
 | |
|     expenses:personal             $1,000.00
 | |
|     expenses:personal:electronics  $100.00
 | |
|     liabilities
 | |
| 
 | |
| 2019/01/01 Google home hub and home mini x2
 | |
|     expenses:personal:electronics          $10.00
 | |
|     liabilities                           $-10.00
 | |
| 
 | |
| 2019/01/02 Google Home Hub Permium Subscription
 | |
|     expenses:personal:electronics:upgrades          $10.00
 | |
|     liabilities                           $-10.00
 | |
| 
 | |
| 2019/01/03 Something else
 | |
|     expenses:personal          $30.00
 | |
|     liabilities                           $-30.00
 | |
| 
 | |
| $ hledger -f- bal --budget
 | |
| Budget performance in 2019-01-01..2019-01-03:
 | |
| 
 | |
|                                ||     2019-01-01..2019-01-03 
 | |
| ===============================++============================
 | |
|  expenses:personal             ||  $50.00 [ 5% of  $1100.00] 
 | |
|  expenses:personal:electronics ||  $20.00 [20% of   $100.00] 
 | |
|  liabilities                   || $-50.00 [ 5% of $-1100.00] 
 | |
| -------------------------------++----------------------------
 | |
|                                ||       0 [               0] 
 | |
| 
 | |
| # 21.
 | |
| $ hledger -f- bal --budget -E
 | |
| Budget performance in 2019-01-01..2019-01-03:
 | |
| 
 | |
|                                         ||     2019-01-01..2019-01-03 
 | |
| ========================================++============================
 | |
|  expenses:personal                      ||  $50.00 [ 5% of  $1100.00] 
 | |
|  expenses:personal:electronics          ||  $20.00 [20% of   $100.00] 
 | |
|  expenses:personal:electronics:upgrades ||  $10.00                    
 | |
|  liabilities                            || $-50.00 [ 5% of $-1100.00] 
 | |
| ----------------------------------------++----------------------------
 | |
|                                         ||       0 [               0] 
 | |
| 
 | |
| # 22.
 | |
| $ hledger -f- bal --budget --tree
 | |
| Budget performance in 2019-01-01..2019-01-03:
 | |
| 
 | |
|                    ||     2019-01-01..2019-01-03 
 | |
| ===================++============================
 | |
|  expenses:personal ||  $50.00 [ 5% of  $1100.00] 
 | |
|    electronics     ||  $20.00 [20% of   $100.00] 
 | |
|  liabilities       || $-50.00 [ 5% of $-1100.00] 
 | |
| -------------------++----------------------------
 | |
|                    ||       0 [               0] 
 | |
| 
 | |
| # 23.
 | |
| $ hledger -f- bal --budget --tree -E
 | |
| Budget performance in 2019-01-01..2019-01-03:
 | |
| 
 | |
|                    ||     2019-01-01..2019-01-03 
 | |
| ===================++============================
 | |
|  expenses:personal ||  $50.00 [ 5% of  $1100.00] 
 | |
|    electronics     ||  $20.00 [20% of   $100.00] 
 | |
|      upgrades      ||  $10.00                    
 | |
|  liabilities       || $-50.00 [ 5% of $-1100.00] 
 | |
| -------------------++----------------------------
 | |
|                    ||       0 [               0] 
 | |
| 
 | |
| ## 24. Zero budget == no budget
 | |
| <
 | |
| ~ monthly from 2019-01
 | |
|   expenses:bills     $100  ; bills has a $100 budget of its own, separate from subaccounts
 | |
|   expenses:bills:a    $20  ; a has non-zero budget and non-zero posted amount
 | |
|   expenses:bills:b   $200  ; b's budget is larger than bills'; we can see it's added to, not part of, that
 | |
|   expenses:bills:c    $50  ; c has a budget but no postings
 | |
|   expenses:bills:f     $0  ; f has an explicit zero budget
 | |
|   income:cash              ; cash has a negative $370 budget balancing the above
 | |
| 
 | |
| 2019-01-01 transaction1
 | |
|   income:cash
 | |
|   expenses:bills:a    $10
 | |
|   expenses:bills:b    $40
 | |
|   expenses:bills:d    $20  ; d has postings but no budget
 | |
|   expenses:bills:e    $10  ; e has postings summing to zero, and no budget
 | |
|   expenses:bills:f    $10
 | |
| 
 | |
| 2019-01-02 transaction2
 | |
|   income:cash
 | |
|   expenses:bills:e    -$10
 | |
| 
 | |
| # By default it hides d (because no budget) and e (because zero posted amount).
 | |
| # f is shown though its budget is zero, it probably shouldn't be.
 | |
| $ hledger bal -f- --budget 
 | |
| Budget performance in 2019-01-01..2019-01-02:
 | |
| 
 | |
|                   || 2019-01-01..2019-01-02 
 | |
| ==================++========================
 | |
|  expenses:bills   ||     $80 [22% of  $370] 
 | |
|  expenses:bills:a ||     $10 [50% of   $20] 
 | |
|  expenses:bills:b ||     $40 [20% of  $200] 
 | |
|  expenses:bills:c ||       0 [ 0% of   $50] 
 | |
|  expenses:bills:f ||     $10 [           0] 
 | |
|  income:cash      ||    $-80 [22% of $-370] 
 | |
| ------------------++------------------------
 | |
|                   ||       0 [           0] 
 | |
| 
 | |
| # 25. -E shows d
 | |
| $ hledger bal -f- --budget -E
 | |
| Budget performance in 2019-01-01..2019-01-02:
 | |
| 
 | |
|                   || 2019-01-01..2019-01-02 
 | |
| ==================++========================
 | |
|  expenses:bills   ||     $80 [22% of  $370] 
 | |
|  expenses:bills:a ||     $10 [50% of   $20] 
 | |
|  expenses:bills:b ||     $40 [20% of  $200] 
 | |
|  expenses:bills:c ||       0 [ 0% of   $50] 
 | |
|  expenses:bills:d ||     $20                
 | |
|  expenses:bills:e ||       0                
 | |
|  expenses:bills:f ||     $10 [           0] 
 | |
|  income:cash      ||    $-80 [22% of $-370] 
 | |
| ------------------++------------------------
 | |
|                   ||       0 [           0] 
 | |
| 
 |