fix: layout: Commodity symbols should be omitted in --layout=bare when
all amounts are zero. (#1789)
This commit is contained in:
		
							parent
							
								
									55a022a941
								
							
						
					
					
						commit
						2a51b6e9a4
					
				| @ -259,7 +259,7 @@ module Hledger.Cli.Commands.Balance ( | |||||||
| ) where | ) where | ||||||
| 
 | 
 | ||||||
| import Data.Default (def) | import Data.Default (def) | ||||||
| import Data.List (transpose, foldl', transpose) | import Data.List (transpose, transpose) | ||||||
| import qualified Data.Set as S | import qualified Data.Set as S | ||||||
| import Data.Maybe (fromMaybe) | import Data.Maybe (fromMaybe) | ||||||
| import qualified Data.Text as T | import qualified Data.Text as T | ||||||
| @ -456,7 +456,7 @@ balanceReportAsText' opts ((items, total)) = | |||||||
|         , Cell TopLeft (fmap wbFromText cs) |         , Cell TopLeft (fmap wbFromText cs) | ||||||
|         , Cell TopLeft (replicate (length damts - 1) mempty ++ [wbFromText dispname]) ] |         , Cell TopLeft (replicate (length damts - 1) mempty ++ [wbFromText dispname]) ] | ||||||
|       where dopts = oneLine{displayColour=color_ opts, displayOrder=Just cs} |       where dopts = oneLine{displayColour=color_ opts, displayOrder=Just cs} | ||||||
|             cs    = S.toList $ maCommodities amt |             cs    = if mixedAmountLooksZero amt then [""] else S.toList $ maCommodities amt | ||||||
|             dispname = T.replicate ((depth - 1) * 2) " " <> acctname |             dispname = T.replicate ((depth - 1) * 2) " " <> acctname | ||||||
|             damts = showMixedAmountLinesB dopts amt |             damts = showMixedAmountLinesB dopts amt | ||||||
|     lines = fmap render items |     lines = fmap render items | ||||||
| @ -703,14 +703,14 @@ balanceReportAsTable opts@ReportOpts{average_, row_total_, balanceaccum_} | |||||||
| multiBalanceRowAsWbs :: AmountDisplayOpts -> ReportOpts -> [DateSpan] -> PeriodicReportRow a MixedAmount -> [[WideBuilder]] | multiBalanceRowAsWbs :: AmountDisplayOpts -> ReportOpts -> [DateSpan] -> PeriodicReportRow a MixedAmount -> [[WideBuilder]] | ||||||
| multiBalanceRowAsWbs bopts ReportOpts{..} colspans (PeriodicReportRow _ as rowtot rowavg) = | multiBalanceRowAsWbs bopts ReportOpts{..} colspans (PeriodicReportRow _ as rowtot rowavg) = | ||||||
|     case layout_ of |     case layout_ of | ||||||
|       LayoutWide width -> [fmap (showMixedAmountB bopts{displayMaxWidth=width}) all] |       LayoutWide width -> [fmap (showMixedAmountB bopts{displayMaxWidth=width}) allamts] | ||||||
|       LayoutTall       -> paddedTranspose mempty |       LayoutTall       -> paddedTranspose mempty | ||||||
|                            . fmap (showMixedAmountLinesB bopts{displayMaxWidth=Nothing}) |                            . fmap (showMixedAmountLinesB bopts{displayMaxWidth=Nothing}) | ||||||
|                            $ all |                            $ allamts | ||||||
|       LayoutBare       -> zipWith (:) (fmap wbFromText cs)  -- add symbols |       LayoutBare       -> zipWith (:) (fmap wbFromText cs)  -- add symbols | ||||||
|                            . transpose                         -- each row becomes a list of Text quantities |                            . transpose                         -- each row becomes a list of Text quantities | ||||||
|                            . fmap (showMixedAmountLinesB bopts{displayOrder=Just cs, displayMinWidth=Nothing}) |                            . fmap (showMixedAmountLinesB bopts{displayOrder=Just cs, displayMinWidth=Nothing}) | ||||||
|                            $ all |                            $ allamts | ||||||
|       LayoutTidy       -> concat |       LayoutTidy       -> concat | ||||||
|                            . zipWith (map . addDateColumns) colspans |                            . zipWith (map . addDateColumns) colspans | ||||||
|                            . fmap ( zipWith (\c a -> [wbFromText c, a]) cs |                            . fmap ( zipWith (\c a -> [wbFromText c, a]) cs | ||||||
| @ -719,10 +719,8 @@ multiBalanceRowAsWbs bopts ReportOpts{..} colspans (PeriodicReportRow _ as rowto | |||||||
|                                  -- complicates the data representation and can be easily calculated |                                  -- complicates the data representation and can be easily calculated | ||||||
|   where |   where | ||||||
|     totalscolumn = row_total_ && balanceaccum_ `notElem` [Cumulative, Historical] |     totalscolumn = row_total_ && balanceaccum_ `notElem` [Cumulative, Historical] | ||||||
|     cs = S.toList . foldl' S.union mempty $ fmap maCommodities all |     cs = if all mixedAmountLooksZero allamts then [""] else S.toList $ foldMap maCommodities allamts | ||||||
|     all = as |     allamts = as ++ [rowtot | totalscolumn && not (null as)] ++ [rowavg | average_ && not (null as)] | ||||||
|         ++ [rowtot | totalscolumn && not (null as)] |  | ||||||
|         ++ [rowavg | average_     && not (null as)] |  | ||||||
|     addDateColumns span@(DateSpan s e) = (wbFromText (showDateSpan span) :) |     addDateColumns span@(DateSpan s e) = (wbFromText (showDateSpan span) :) | ||||||
|                                        . (wbFromText (maybe "" showDate s) :) |                                        . (wbFromText (maybe "" showDate s) :) | ||||||
|                                        . (wbFromText (maybe "" (showDate . addDays (-1)) e) :) |                                        . (wbFromText (maybe "" (showDate . addDays (-1)) e) :) | ||||||
|  | |||||||
| @ -267,3 +267,28 @@ $ hledger -f bcexample.hledger bal -T assets.*etrade -3 -O csv --layout=tidy | |||||||
| "Assets:US:ETrade","2012-01-01..2014-10-11","2012-01-01","2014-10-11","VEA","36.00" | "Assets:US:ETrade","2012-01-01..2014-10-11","2012-01-01","2014-10-11","VEA","36.00" | ||||||
| "Assets:US:ETrade","2012-01-01..2014-10-11","2012-01-01","2014-10-11","VHT","294.00" | "Assets:US:ETrade","2012-01-01..2014-10-11","2012-01-01","2014-10-11","VHT","294.00" | ||||||
| >=0 | >=0 | ||||||
|  | 
 | ||||||
|  | < | ||||||
|  | 2021-01-01 Test | ||||||
|  |     Assets:Bank           INR 1.00 | ||||||
|  |     Equity:Opening       INR -1.00 | ||||||
|  | 
 | ||||||
|  | # 15. Should omit commodity from totals row when the sum is zero with --layout=bare. (#1789) | ||||||
|  | $ hledger -f - bal --layout=bare | ||||||
|  |   1.00  INR  Assets:Bank     | ||||||
|  |  -1.00  INR  Equity:Opening  | ||||||
|  |  -----  | ||||||
|  |      0                       | ||||||
|  | >=0 | ||||||
|  | 
 | ||||||
|  | # 16. The same with -M. (#1789) | ||||||
|  | $ hledger -f - bal --layout=bare -M | ||||||
|  | Balance changes in 2021-01: | ||||||
|  | 
 | ||||||
|  |                 || Commodity    Jan  | ||||||
|  | ================++================== | ||||||
|  |  Assets:Bank    || INR         1.00  | ||||||
|  |  Equity:Opening || INR        -1.00  | ||||||
|  | ----------------++------------------ | ||||||
|  |                 ||                0  | ||||||
|  | >=0 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user