Also adds a postingDate argument to amountApplyValuation, and re-orders the ValuationType and (Transaction/Posting) arguments to (transaction/posting)ApplyValuation, to be consistent with amountApplyValuation.
		
			
				
	
	
		
			636 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			636 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # http://hledger.org/journal.html#market-prices
 | |
| # http://hledger.org/hledger.html#market-value
 | |
| 
 | |
| # 1. Market prices are ignored by -B.
 | |
| <
 | |
| P 2011/01/01 € $1.35
 | |
| 
 | |
| 2011/01/01
 | |
|     expenses:foreign       €100
 | |
|     assets
 | |
| 
 | |
| $ hledger -f- bal -NB
 | |
|                €-100  assets
 | |
|                 €100  expenses:foreign
 | |
| 
 | |
| 
 | |
| # 2. Market prices are used by bal -V.
 | |
| # Market prices for other commodities are not used.
 | |
| # Nor are transaction prices.
 | |
| <
 | |
| P 2011/01/01 € $1.35
 | |
| P 2011/01/01 GBP $1.35
 | |
| 
 | |
| 2011/01/01
 | |
|     (expenses:foreign)       €100 @ $1.20
 | |
| 
 | |
| $ hledger -f- bal -N -V
 | |
|              $135.00  expenses:foreign
 | |
| 
 | |
| 
 | |
| # 3. The location of price directives does not matter.
 | |
| # If multiple directives have the same date, the last parsed is used.
 | |
| <
 | |
| 3000/01/01
 | |
|   (a)    $100
 | |
| 
 | |
| P 2000/1/1 $ €1.35
 | |
| 
 | |
| 3000/03/03
 | |
|   (b)    $100
 | |
| 
 | |
| P 2000/1/1 $ €1.30
 | |
| 
 | |
| $ hledger -f- bal -N -V a
 | |
|              €130.00  a
 | |
| 
 | |
| 
 | |
| # 4. Market prices in the future are ignored when the valuation date
 | |
| # is today. #453, #683
 | |
| <
 | |
| P 2000/1/1 $ €1.20
 | |
| P 3000/1/1 $ €1.30
 | |
| 
 | |
| 3000/01/01
 | |
|   (a)    $100
 | |
| 
 | |
| $ hledger -f- bal -N --value=now
 | |
|              €120.00  a
 | |
| 
 | |
| 
 | |
| # 5. Market prices in the future are not ignored when they are before
 | |
| # the valuation date set with an explicit report end date, as in 
 | |
| # hledger 1.14 and older, and Ledger. See also valuation2.test, #1083
 | |
| <
 | |
| P 3000/1/1 $ €1.10
 | |
| 
 | |
| 3000/01/01
 | |
|   (a)    $100
 | |
| 
 | |
| $ hledger -f- bal -N -V -e 3000/2
 | |
|              €110.00  a
 | |
| 
 | |
| 
 | |
| # 6. Market prices interact with D directives and with amount style canonicalisation. #131
 | |
| <
 | |
| 
 | |
| D 1000.00 H                ; declare a default commodity named H
 | |
| 
 | |
| P 2015/08/15 EEEE  41.66   ; default commodity H is used for these market prices
 | |
| P 2015/08/15 FFFF  74.62
 | |
| P 2015/08/15 GGGG  32.39
 | |
| 
 | |
| 2015/08/15
 | |
|     a  2.4120 EEEE @@ 100  ; default commodity H is used for these transaction prices
 | |
|     a  0.3350 FFFF @@ 25
 | |
|     a  0.7718 GGGG @@ 25
 | |
|     b                      ; implicit balancing amount is in the cost commodity, H
 | |
| 
 | |
| $ hledger -f- balance -V
 | |
|             150.48 H  a
 | |
|            -150.00 H  b
 | |
| --------------------
 | |
|               0.48 H  
 | |
| 
 | |
| 
 | |
| # 7. register -V affects posting amounts and total.
 | |
| <
 | |
| P 2000/1/1 $ €1.20
 | |
| 2000/1/1
 | |
|   (a)    $100
 | |
| 
 | |
| $ hledger -f- reg -V
 | |
| 2000-01-01                      (a)                        €120.00       €120.00
 | |
| 
 | |
| 
 | |
| # 8. print -V affects posting amounts but not balance assertions.
 | |
| <
 | |
| P 2000/1/1 $ €1.20
 | |
| 2000/1/1
 | |
|   (a)    $100 = $100
 | |
| 
 | |
| $ hledger -f- print -V
 | |
| 2000-01-01
 | |
|     (a)         €120.00 = $100
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # --value tests
 | |
| 
 | |
| <
 | |
| P 2000/01/01 A  1 B
 | |
| P 2000/01/15 A  5 B
 | |
| P 2000/02/01 A  2 B
 | |
| P 2000/03/01 A  3 B
 | |
| P 2000/04/01 A  4 B
 | |
| 
 | |
| 2000/01/01
 | |
|   (a)      1 A @ 6 B
 | |
| 
 | |
| 2000/02/01
 | |
|   (a)      1 A @ 7 B
 | |
| 
 | |
| 2000/03/01
 | |
|   (a)      1 A @ 8 B
 | |
| 
 | |
| # print
 | |
| 
 | |
| # 9. print costs using transaction prices
 | |
| $ hledger -f- print --value=cost
 | |
| 2000-01-01
 | |
|     (a)             6 B
 | |
| 
 | |
| 2000-02-01
 | |
|     (a)             7 B
 | |
| 
 | |
| 2000-03-01
 | |
|     (a)             8 B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 10. print value using market prices on each transaction's (posting's) date
 | |
| $ hledger -f- print --value=then
 | |
| 2000-01-01
 | |
|     (a)             1 B
 | |
| 
 | |
| 2000-02-01
 | |
|     (a)             2 B
 | |
| 
 | |
| 2000-03-01
 | |
|     (a)             3 B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 11. print value using prices on last day of report period (2000-02-29)
 | |
| $ hledger -f- print --value=end date:2000/01-2000/03
 | |
| 2000-01-01
 | |
|     (a)             2 B
 | |
| 
 | |
| 2000-02-01
 | |
|     (a)             2 B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 12. print value using prices on last day of report period (no period specified)
 | |
| # specified - uses last day of journal, noting that price directives are included (2000-04-01)
 | |
| $ hledger -f- print --value=end
 | |
| 2000-01-01
 | |
|     (a)             4 B
 | |
| 
 | |
| 2000-02-01
 | |
|     (a)             4 B
 | |
| 
 | |
| 2000-03-01
 | |
|     (a)             4 B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 13. print value using prices on a specified date
 | |
| $ hledger -f- print --value=2000-01-15
 | |
| 2000-01-01
 | |
|     (a)             5 B
 | |
| 
 | |
| 2000-02-01
 | |
|     (a)             5 B
 | |
| 
 | |
| 2000-03-01
 | |
|     (a)             5 B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # 14. print value using prices today
 | |
| # (assuming today's date is >= 2000-04-01)
 | |
| $ hledger -f- print --value=now
 | |
| 2000-01-01
 | |
|     (a)             4 B
 | |
| 
 | |
| 2000-02-01
 | |
|     (a)             4 B
 | |
| 
 | |
| 2000-03-01
 | |
|     (a)             4 B
 | |
| 
 | |
| >=0
 | |
| 
 | |
| # register
 | |
| 
 | |
| # 15. register report valued at cost.
 | |
| $ hledger -f- reg --value=cost
 | |
| 2000-01-01                      (a)                            6 B           6 B
 | |
| 2000-02-01                      (a)                            7 B          13 B
 | |
| 2000-03-01                      (a)                            8 B          21 B
 | |
|  
 | |
| # 16. register report valued at posting dates
 | |
| $ hledger -f- reg --value=then
 | |
| 2000-01-01                      (a)                            1 B           1 B
 | |
| 2000-02-01                      (a)                            2 B           3 B
 | |
| 2000-03-01                      (a)                            3 B           6 B
 | |
| 
 | |
| # 17. register report valued at period end (including price directives)
 | |
| $ hledger -f- reg --value=end
 | |
| 2000-01-01                      (a)                            4 B           4 B
 | |
| 2000-02-01                      (a)                            4 B           8 B
 | |
| 2000-03-01                      (a)                            4 B          12 B
 | |
| 
 | |
| # 18. register report valued at specified date
 | |
| $ hledger -f- reg --value=2000-01-15
 | |
| 2000-01-01                      (a)                            5 B           5 B
 | |
| 2000-02-01                      (a)                            5 B          10 B
 | |
| 2000-03-01                      (a)                            5 B          15 B
 | |
| 
 | |
| # 19. register report valued today
 | |
| $ hledger -f- reg --value=now
 | |
| 2000-01-01                      (a)                            4 B           4 B
 | |
| 2000-02-01                      (a)                            4 B           8 B
 | |
| 2000-03-01                      (a)                            4 B          12 B
 | |
| 
 | |
| # 20. single-period register report valued at default date (same as --value=now)
 | |
| $ hledger -f- reg -V
 | |
| 2000-01-01                      (a)                            4 B           4 B
 | |
| 2000-02-01                      (a)                            4 B           8 B
 | |
| 2000-03-01                      (a)                            4 B          12 B
 | |
| 
 | |
| # register with -H (starting balance)
 | |
| 
 | |
| # 21. register with starting balance, valued at cost.
 | |
| $ hledger -f- reg --value=cost -b 200002 -H
 | |
| 2000-02-01                      (a)                            7 B          13 B
 | |
| 2000-03-01                      (a)                            8 B          21 B
 | |
| 
 | |
| # 22. register with starting balance, valued at period end.
 | |
| # That is unspecified so the last posting date (or price directive date) is used,
 | |
| # ie 2000/4/1, so the price is 4 B.
 | |
| # Starting balance is 5 B as above.
 | |
| $ hledger -f- reg --value=end -b 200002 -H
 | |
| 2000-02-01                      (a)                            4 B           9 B
 | |
| 2000-03-01                      (a)                            4 B          13 B
 | |
| 
 | |
| # 23. register with starting balance, valued at specified date (when the price is 5 B).
 | |
| # Starting balance is 5 B as above.
 | |
| $ hledger -f- reg --value=2000-01-15 -b 200002 -H
 | |
| 2000-02-01                      (a)                            5 B          10 B
 | |
| 2000-03-01                      (a)                            5 B          15 B
 | |
| 
 | |
| # register, periodic
 | |
| 
 | |
| # 24. periodic register report valued at cost.
 | |
| # The total for january is 6 B (1 A valued at 1/1, price 1 B, and 1 A
 | |
| # valued at 1/20, price 5 B).
 | |
| # Need an extra transaction for this test:
 | |
| <
 | |
| P 2000/01/01 A  1 B
 | |
| P 2000/01/15 A  5 B
 | |
| P 2000/02/01 A  2 B
 | |
| P 2000/03/01 A  3 B
 | |
| P 2000/04/01 A  4 B
 | |
| 
 | |
| 2000/01/01
 | |
|   (a)      1 A @ 6 B
 | |
| 
 | |
| 2000/01/20
 | |
|   (a)      1 A @ 7 B
 | |
| 
 | |
| 2000/02/01
 | |
|   (a)      1 A @ 8 B
 | |
| 
 | |
| 2000/03/01
 | |
|   (a)      1 A @ 9 B
 | |
| 
 | |
| $ hledger -f- reg --value=cost -M
 | |
| 2000-01                 a                                     13 B          13 B
 | |
| 2000-02                 a                                      8 B          21 B
 | |
| 2000-03                 a                                      9 B          30 B
 | |
| 
 | |
| # back to the original test journal:
 | |
| <
 | |
| P 2000/01/01 A  1 B
 | |
| P 2000/01/15 A  5 B
 | |
| P 2000/02/01 A  2 B
 | |
| P 2000/03/01 A  3 B
 | |
| P 2000/04/01 A  4 B
 | |
| 
 | |
| 2000/01/01
 | |
|   (a)      1 A @ 6 B
 | |
| 
 | |
| 2000/02/01
 | |
|   (a)      1 A @ 7 B
 | |
| 
 | |
| 2000/03/01
 | |
|   (a)      1 A @ 8 B
 | |
| 
 | |
| # 25. periodic register report valued at period end
 | |
| $ hledger -f- reg --value=end -M
 | |
| 2000-01                 a                                      5 B           5 B
 | |
| 2000-02                 a                                      2 B           7 B
 | |
| 2000-03                 a                                      3 B          10 B
 | |
| 
 | |
| # 26. periodic register report valued at specified date
 | |
| $ hledger -f- reg --value=2000-01-15 -M
 | |
| 2000-01                 a                                      5 B           5 B
 | |
| 2000-02                 a                                      5 B          10 B
 | |
| 2000-03                 a                                      5 B          15 B
 | |
| 
 | |
| # 27. periodic register report valued today
 | |
| $ hledger -f- reg --value=now -M
 | |
| 2000-01                 a                                      4 B           4 B
 | |
| 2000-02                 a                                      4 B           8 B
 | |
| 2000-03                 a                                      4 B          12 B
 | |
| 
 | |
| # 28. periodic register report valued at default date (same as --value=end)
 | |
| $ hledger -f- reg -V -M
 | |
| 2000-01                 a                                      5 B           5 B
 | |
| 2000-02                 a                                      2 B           7 B
 | |
| 2000-03                 a                                      3 B          10 B
 | |
| 
 | |
| # balance
 | |
| 
 | |
| # 29. single column balance report valued at cost
 | |
| $ hledger -f- bal -N --value=cost
 | |
|                 21 B  a
 | |
| 
 | |
| # 30. single column balance report valued at period end (which includes market price declarations, see #1405)
 | |
| $ hledger -f- bal -N --value=end
 | |
|                 12 B  a
 | |
| 
 | |
| # 31. single column balance report valued at specified date
 | |
| $ hledger -f- bal -N --value=2000-01-15
 | |
|                 15 B  a
 | |
| 
 | |
| # 32. single column balance report valued today
 | |
| $ hledger -f- bal -N --value=now
 | |
|                 12 B  a
 | |
| 
 | |
| # 33. single column balance report valued at default date (same as --value=end)
 | |
| $ hledger -f- bal -N -V
 | |
|                 12 B  a
 | |
| 
 | |
| # balance, periodic
 | |
| 
 | |
| # 34. multicolumn balance report valued at cost
 | |
| $ hledger -f- bal -MTA --value=cost
 | |
| Balance changes in 2000-01-01..2000-04-30, valued at cost:
 | |
| 
 | |
|    || Jan  Feb  Mar  Apr    Total  Average 
 | |
| ===++======================================
 | |
|  a || 6 B  7 B  8 B    0     21 B      5 B 
 | |
| ---++--------------------------------------
 | |
|    || 6 B  7 B  8 B    0     21 B      5 B 
 | |
| 
 | |
| # 35. multicolumn balance report showing changes in period-end values
 | |
| $ hledger -f- bal -M --value=end
 | |
| Period-end value changes in 2000-01-01..2000-04-30:
 | |
| 
 | |
|    || Jan   Feb  Mar  Apr 
 | |
| ===++=====================
 | |
|  a || 5 B  -1 B  5 B  3 B 
 | |
| ---++---------------------
 | |
|    || 5 B  -1 B  5 B  3 B 
 | |
| 
 | |
| # 36. multicolumn balance report showing changes in period-end values with -T or -A
 | |
| $ hledger -f- bal -MTA --value=end
 | |
| Period-end value changes in 2000-01-01..2000-04-30:
 | |
| 
 | |
|    || Jan   Feb  Mar  Apr    Total  Average 
 | |
| ===++=======================================
 | |
|  a || 5 B  -1 B  5 B  3 B     12 B      3 B 
 | |
| ---++---------------------------------------
 | |
|    || 5 B  -1 B  5 B  3 B     12 B      3 B 
 | |
| 
 | |
| # 37. multicolumn balance report valued at other date
 | |
| $ hledger -f- bal -MTA --value=2000-01-15
 | |
| Balance changes in 2000-01-01..2000-04-30, valued at 2000-01-15:
 | |
| 
 | |
|    || Jan  Feb  Mar  Apr    Total  Average 
 | |
| ===++======================================
 | |
|  a || 5 B  5 B  5 B    0     15 B      4 B 
 | |
| ---++--------------------------------------
 | |
|    || 5 B  5 B  5 B    0     15 B      4 B 
 | |
| 
 | |
| # 38. multicolumn balance report valued today (with today >= 2000-04-01)
 | |
| $ hledger -f- bal -M --value=now
 | |
| Balance changes in 2000-01-01..2000-04-30, current value:
 | |
| 
 | |
|    || Jan  Feb  Mar  Apr 
 | |
| ===++====================
 | |
|  a || 4 B  4 B  4 B    0 
 | |
| ---++--------------------
 | |
|    || 4 B  4 B  4 B    0 
 | |
| 
 | |
| # 39. multicolumn balance report showing changes in period-end values (same as --value=end)
 | |
| $ hledger -f- bal -M -V
 | |
| Period-end value changes in 2000-01-01..2000-04-30:
 | |
| 
 | |
|    || Jan   Feb  Mar  Apr 
 | |
| ===++=====================
 | |
|  a || 5 B  -1 B  5 B  3 B 
 | |
| ---++---------------------
 | |
|    || 5 B  -1 B  5 B  3 B 
 | |
| 
 | |
| # balance, periodic, with -H (starting balance and accumulating across periods)
 | |
| 
 | |
| # 40. multicolumn balance report with -H, valued at cost.
 | |
| # The starting balance on 2000/01/01 is 6 B (cost of the first 2 A).
 | |
| # February adds 1 A costing 7 B, making 13 B.
 | |
| # March adds 1 A costing 8 B, making 21 B.
 | |
| $ hledger -f- bal -M -H -b 200002 --value=cost
 | |
| Ending balances (historical) in 2000-02-01..2000-04-30, valued at cost:
 | |
| 
 | |
|    || 2000-02-29  2000-03-31  2000-04-30 
 | |
| ===++====================================
 | |
|  a ||       13 B        21 B        21 B 
 | |
| ---++------------------------------------
 | |
|    ||       13 B        21 B        21 B 
 | |
| 
 | |
| # 41. multicolumn balance report with -H valued at period end.
 | |
| # The starting balance is 1 A.
 | |
| # February adds 1 A making 2 A, which is valued at 2000/02/29 as 4 B.
 | |
| # March adds 1 A making 3 A, which is valued at 2000/03/31 as 9 B.
 | |
| # April adds 0 A making 3 A, which is valued at 2000/04/31 as 12 B.
 | |
| $ hledger -f- bal -MA -H -b 200002 --value=end
 | |
| Ending balances (historical) in 2000-02-01..2000-04-30, valued at period ends:
 | |
| 
 | |
|    || 2000-02-29  2000-03-31  2000-04-30  Average 
 | |
| ===++=============================================
 | |
|  a ||        4 B         9 B        12 B      8 B 
 | |
| ---++---------------------------------------------
 | |
|    ||        4 B         9 B        12 B      8 B 
 | |
| 
 | |
| # 42. multicolumn balance report with -H valued at other date.
 | |
| # The starting balance is 5 B (1 A valued at 2000/1/15).
 | |
| $ hledger -f- bal -M -H -b 200002 --value=2000-01-15
 | |
| Ending balances (historical) in 2000-02-01..2000-04-30, valued at 2000-01-15:
 | |
| 
 | |
|    || 2000-02-29  2000-03-31  2000-04-30 
 | |
| ===++====================================
 | |
|  a ||       10 B        15 B        15 B 
 | |
| ---++------------------------------------
 | |
|    ||       10 B        15 B        15 B 
 | |
| 
 | |
| # 43. multicolumn balance report with -H, valuing each period's carried-over balances at cost.
 | |
| <
 | |
| P 2000/01/01 A  1 B
 | |
| P 2000/01/15 A  5 B
 | |
| P 2000/02/01 A  2 B
 | |
| P 2000/03/01 A  3 B
 | |
| P 2000/04/01 A  4 B
 | |
| 
 | |
| 2000/01/01
 | |
|   (a)      1 A @ 6 B
 | |
| 
 | |
| $ hledger -f- bal -ME -H -p200001-200004 --value=c
 | |
| Ending balances (historical) in 2000Q1, valued at cost:
 | |
| 
 | |
|    || 2000-01-31  2000-02-29  2000-03-31 
 | |
| ===++====================================
 | |
|  a ||        6 B         6 B         6 B 
 | |
| ---++------------------------------------
 | |
|    ||        6 B         6 B         6 B 
 | |
| 
 | |
| # 44. multicolumn balance report with -H, valuing each period's carried-over balances at period end.
 | |
| # Unrelated, also -H always disables -T.
 | |
| $ hledger -f- bal -META -H -p200001-200004 --value=e
 | |
| Ending balances (historical) in 2000Q1, valued at period ends:
 | |
| 
 | |
|    || 2000-01-31  2000-02-29  2000-03-31  Average 
 | |
| ===++=============================================
 | |
|  a ||        5 B         2 B         3 B      3 B 
 | |
| ---++---------------------------------------------
 | |
|    ||        5 B         2 B         3 B      3 B 
 | |
| 
 | |
| # 45. multicolumn balance report with -H, valuing each period's carried-over balances at other date.
 | |
| $ hledger -f- bal -ME -H -p200001-200004 --value=2000-01-15
 | |
| Ending balances (historical) in 2000Q1, valued at 2000-01-15:
 | |
| 
 | |
|    || 2000-01-31  2000-02-29  2000-03-31 
 | |
| ===++====================================
 | |
|  a ||        5 B         5 B         5 B 
 | |
| ---++------------------------------------
 | |
|    ||        5 B         5 B         5 B 
 | |
| 
 | |
| # balance --budget. The periodic transactions setting budget amounts
 | |
| # are valued in the same way as ordinary transactions.
 | |
| 
 | |
| <
 | |
| P 2000/01/01 A  1 B
 | |
| P 2000/01/15 A  5 B
 | |
| P 2000/02/01 A  2 B
 | |
| P 2000/03/01 A  3 B
 | |
| P 2000/04/01 A  4 B
 | |
| 
 | |
| ~ monthly
 | |
|   (a)  2 A @ 1 B
 | |
| 
 | |
| 2000/01/01
 | |
|   (a)      1 A @ 6 B
 | |
| 
 | |
| 2000/02/01
 | |
|   (a)      1 A @ 7 B
 | |
| 
 | |
| 2000/03/01
 | |
|   (a)      1 A @ 8 B
 | |
| 
 | |
| # 46. budget report, unvalued (for reference).
 | |
| $ hledger -f- bal -M --budget
 | |
| Budget performance in 2000-01-01..2000-04-30:
 | |
| 
 | |
|    ||              Jan               Feb               Mar            Apr 
 | |
| ===++=====================================================================
 | |
|  a || 1 A [50% of 2 A]  1 A [50% of 2 A]  1 A [50% of 2 A]  0 [0% of 2 A] 
 | |
| ---++---------------------------------------------------------------------
 | |
|    || 1 A [50% of 2 A]  1 A [50% of 2 A]  1 A [50% of 2 A]  0 [0% of 2 A] 
 | |
| 
 | |
| # 47. budget report, valued at cost.
 | |
| $ hledger -f- bal -MTA --budget --value=c
 | |
| Budget performance in 2000-01-01..2000-04-30, valued at cost:
 | |
| 
 | |
|    ||               Jan                Feb                Mar            Apr               Total            Average 
 | |
| ===++===============================================================================================================
 | |
|  a || 6 B [300% of 2 B]  7 B [350% of 2 B]  8 B [400% of 2 B]  0 [0% of 2 B]  21 B [262% of 8 B]  5 B [262% of 2 B] 
 | |
| ---++---------------------------------------------------------------------------------------------------------------
 | |
|    || 6 B [300% of 2 B]  7 B [350% of 2 B]  8 B [400% of 2 B]  0 [0% of 2 B]  21 B [262% of 8 B]  5 B [262% of 2 B] 
 | |
| 
 | |
| # 48. budget report, showing changes in period-end values.
 | |
| $ hledger -f- bal -MTA --budget --value=e
 | |
| Budget performance in 2000-01-01..2000-04-30, valued at period ends:
 | |
| 
 | |
|    ||               Jan                 Feb                Mar                Apr               Total           Average 
 | |
| ===++===================================================================================================================
 | |
|  a || 5 B [50% of 10 B]  -1 B [50% of -2 B]  5 B [50% of 10 B]  3 B [21% of 14 B]  12 B [38% of 32 B]  3 B [38% of 8 B] 
 | |
| ---++-------------------------------------------------------------------------------------------------------------------
 | |
|    || 5 B [50% of 10 B]  -1 B [50% of -2 B]  5 B [50% of 10 B]  3 B [21% of 14 B]  12 B [38% of 32 B]  3 B [38% of 8 B] 
 | |
| 
 | |
| # 49. budget report, valued at other date.
 | |
| $ hledger -f- bal -MTA --budget --value=2000-01-15
 | |
| Budget performance in 2000-01-01..2000-04-30, valued at 2000-01-15:
 | |
| 
 | |
|    ||               Jan                Feb                Mar             Apr               Total            Average 
 | |
| ===++================================================================================================================
 | |
|  a || 5 B [50% of 10 B]  5 B [50% of 10 B]  5 B [50% of 10 B]  0 [0% of 10 B]  15 B [38% of 40 B]  4 B [38% of 10 B] 
 | |
| ---++----------------------------------------------------------------------------------------------------------------
 | |
|    || 5 B [50% of 10 B]  5 B [50% of 10 B]  5 B [50% of 10 B]  0 [0% of 10 B]  15 B [38% of 40 B]  4 B [38% of 10 B] 
 | |
| 
 | |
| # 50. --value=then with --historical. The starting total is valued individually for each posting at its posting time.
 | |
| <
 | |
| P 2020-01-01 A 1 B
 | |
| P 2020-02-01 A 2 B
 | |
| P 2020-03-01 A 3 B
 | |
| P 2020-04-01 A 4 B
 | |
| 
 | |
| 2020-01-01
 | |
|    (a)  1 A
 | |
| 
 | |
| 2020-02-01
 | |
|    (a)  1 A
 | |
| 
 | |
| 2020-03-01
 | |
|    (a)  1 A
 | |
| 
 | |
| 2020-04-01
 | |
|    (a)  1 A
 | |
| 
 | |
| $ hledger -f- reg --value=then -b 2020-03 -H
 | |
| 2020-03-01                      (a)                            3 B           6 B
 | |
| 2020-04-01                      (a)                            4 B          10 B
 | |
| >=0
 | |
| 
 | |
| # 51. --value=then with a report interval. How are the summary amounts valued ?
 | |
| # Currently each interval's unvalued sum is valued on its first day.
 | |
| <
 | |
| P 2020-01-01 A 1 B
 | |
| P 2020-02-01 A 2 B
 | |
| P 2020-03-01 A 3 B
 | |
| P 2020-04-01 A 4 B
 | |
| 
 | |
| 2020-01-01
 | |
|    (a)  1 A
 | |
| 
 | |
| 2020-02-01
 | |
|    (a)  1 A
 | |
| 
 | |
| 2020-03-01
 | |
|    (a)  1 A
 | |
| 
 | |
| 2020-04-01
 | |
|    (a)  1 A
 | |
| 
 | |
| $ hledger -f- reg --value=then -Q
 | |
| 2020Q1                  a                                      3 B           3 B
 | |
| 2020Q2                  a                                      4 B           7 B
 | |
| >=0
 | |
| 
 | |
| # 52. print --value should affect all postings, including when there's an implicit transaction price
 | |
| <
 | |
| P 2020-01-01 A 1 C
 | |
| P 2020-01-01 B 1 C
 | |
| 
 | |
| 2020-01-01
 | |
|    a   1 A
 | |
|    b  -1 B
 | |
| 
 | |
| $ hledger -f- print -V
 | |
| 2020-01-01
 | |
|     a             1 C
 | |
|     b            -1 C
 | |
| 
 | |
| >=0
 |