lib: Use last column of historical balance as total. Use totals for balanceReport.
This commit is contained in:
		
							parent
							
								
									5ffe1d7656
								
							
						
					
					
						commit
						bde4d7e2e4
					
				| @ -18,7 +18,6 @@ module Hledger.Reports.BalanceReport ( | ||||
| where | ||||
| 
 | ||||
| import Data.Time.Calendar | ||||
| import Safe (headDef) | ||||
| 
 | ||||
| import Hledger.Data | ||||
| import Hledger.Read (mamountp') | ||||
| @ -69,12 +68,9 @@ balanceReport ropts q j = (rows, total) | ||||
|     rows = [( prrFullName row | ||||
|             , prrDisplayName row | ||||
|             , prrDepth row - 1  -- BalanceReport uses 0-based account depths | ||||
|             , headAmt row | ||||
|             , prrTotal row | ||||
|             ) | row <- prRows report] | ||||
|     total = headAmt $ prTotals report | ||||
|     headAmt = headDef nullmixedamt . prrAmounts | ||||
| 
 | ||||
| 
 | ||||
|     total = prrTotal $ prTotals report | ||||
| 
 | ||||
| 
 | ||||
| -- tests | ||||
| @ -110,12 +106,12 @@ tests_BalanceReport = tests "BalanceReport" [ | ||||
|           (aitems, atotal) = balanceReport opts (queryFromOpts nulldate opts) journal | ||||
|           showw (acct,acct',indent,amt) = (acct, acct', indent, showMixedAmountDebug amt) | ||||
|       (map showw aitems) @?= (map showw eitems) | ||||
|       (showMixedAmountDebug etotal) @?= (showMixedAmountDebug atotal) | ||||
|       (showMixedAmountDebug atotal) @?= (showMixedAmountDebug etotal) | ||||
|   in | ||||
|     tests "balanceReport" [ | ||||
| 
 | ||||
|      test "no args, null journal" $ | ||||
|      (defreportopts, nulljournal) `gives` ([], Mixed []) | ||||
|      (defreportopts, nulljournal) `gives` ([], 0) | ||||
| 
 | ||||
|     ,test "no args, sample journal" $ | ||||
|      (defreportopts, samplejournal) `gives` | ||||
| @ -165,7 +161,7 @@ tests_BalanceReport = tests "BalanceReport" [ | ||||
| 
 | ||||
|     ,test "with date:" $ | ||||
|      (defreportopts{query_="date:'in 2009'"}, samplejournal2) `gives` | ||||
|       ([], Mixed [num 0]) | ||||
|       ([], 0) | ||||
| 
 | ||||
|     ,test "with date2:" $ | ||||
|      (defreportopts{query_="date2:'in 2009'"}, samplejournal2) `gives` | ||||
| @ -205,7 +201,7 @@ tests_BalanceReport = tests "BalanceReport" [ | ||||
| 
 | ||||
|      ,test "with period on an unpopulated period" $ | ||||
|       (defreportopts{period_= PeriodBetween (fromGregorian 2008 1 2) (fromGregorian 2008 1 3)}, samplejournal) `gives` | ||||
|        ([], Mixed [num 0]) | ||||
|        ([], 0) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -44,7 +44,7 @@ import Data.Semigroup ((<>)) | ||||
| #endif | ||||
| import Data.Semigroup (sconcat) | ||||
| import Data.Time.Calendar (Day, addDays, fromGregorian) | ||||
| import Safe (headMay, lastMay) | ||||
| import Safe (headMay, lastDef, lastMay) | ||||
| import Text.Tabular as T | ||||
| import Text.Tabular.AsciiWide (render) | ||||
| 
 | ||||
| @ -403,7 +403,7 @@ buildReportRows ropts acctvalues = | ||||
|     -- The total and average for the row. | ||||
|     -- These are always simply the sum/average of the displayed row amounts. | ||||
|     -- Total for a cumulative/historical report is always zero. | ||||
|     , let rowtot = if balancetype_ ropts == PeriodChange then sum rowbals else 0 | ||||
|     , let rowtot = if balancetype_ ropts == PeriodChange then sum rowbals else lastDef 0 rowbals | ||||
|     , let rowavg = averageMixedAmounts rowbals | ||||
|     ] | ||||
|   where balance = case accountlistmode_ ropts of ALTree -> aibalance; ALFlat -> aebalance | ||||
| @ -616,8 +616,8 @@ tests_MultiBalanceReport = tests "MultiBalanceReport" [ | ||||
|      ,test "with -H on a populated period"  $ | ||||
|       (defreportopts{period_= PeriodBetween (fromGregorian 2008 1 1) (fromGregorian 2008 1 2), balancetype_=HistoricalBalance}, samplejournal) `gives` | ||||
|        ( | ||||
|         [ PeriodicReportRow (flatDisplayName "assets:bank:checking") [mamountp' "$1.00"]  (Mixed [nullamt]) (Mixed [amt0 {aquantity=1}]) | ||||
|         , PeriodicReportRow (flatDisplayName "income:salary")        [mamountp' "$-1.00"] (Mixed [nullamt]) (Mixed [amt0 {aquantity=(-1)}]) | ||||
|         [ PeriodicReportRow (flatDisplayName "assets:bank:checking") [mamountp' "$1.00"]  (mamountp' "$1.00")  (Mixed [amt0 {aquantity=1}]) | ||||
|         , PeriodicReportRow (flatDisplayName "income:salary")        [mamountp' "$-1.00"] (mamountp' "$-1.00") (Mixed [amt0 {aquantity=(-1)}]) | ||||
|         ], | ||||
|         Mixed [nullamt]) | ||||
| 
 | ||||
|  | ||||
| @ -364,3 +364,14 @@ $ hledger -f- bal -N -S --tree | ||||
|                    1    aa | ||||
|                    2  b | ||||
| >= | ||||
| 
 | ||||
| # 20. Flat mode. --historical (#1287) | ||||
| $ hledger -f- bal -NY --flat --sort-amount --historical | ||||
| Ending balances (historical) in 2020: | ||||
| 
 | ||||
|       || 2020-12-31  | ||||
| ======++============ | ||||
|  a:ab ||          3  | ||||
|  b    ||          2  | ||||
|  a:aa ||          1  | ||||
| >= | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user