diff --git a/hledger/Hledger/Cli/Commands/Balance.hs b/hledger/Hledger/Cli/Commands/Balance.hs index 5be0b3ba9..fdf636576 100644 --- a/hledger/Hledger/Cli/Commands/Balance.hs +++ b/hledger/Hledger/Cli/Commands/Balance.hs @@ -259,7 +259,7 @@ module Hledger.Cli.Commands.Balance ( ) where import Data.Default (def) -import Data.List (transpose, foldl', transpose) +import Data.List (transpose, transpose) import qualified Data.Set as S import Data.Maybe (fromMaybe) import qualified Data.Text as T @@ -456,7 +456,7 @@ balanceReportAsText' opts ((items, total)) = , Cell TopLeft (fmap wbFromText cs) , Cell TopLeft (replicate (length damts - 1) mempty ++ [wbFromText dispname]) ] 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 damts = showMixedAmountLinesB dopts amt lines = fmap render items @@ -703,14 +703,14 @@ balanceReportAsTable opts@ReportOpts{average_, row_total_, balanceaccum_} multiBalanceRowAsWbs :: AmountDisplayOpts -> ReportOpts -> [DateSpan] -> PeriodicReportRow a MixedAmount -> [[WideBuilder]] multiBalanceRowAsWbs bopts ReportOpts{..} colspans (PeriodicReportRow _ as rowtot rowavg) = case layout_ of - LayoutWide width -> [fmap (showMixedAmountB bopts{displayMaxWidth=width}) all] + LayoutWide width -> [fmap (showMixedAmountB bopts{displayMaxWidth=width}) allamts] LayoutTall -> paddedTranspose mempty . fmap (showMixedAmountLinesB bopts{displayMaxWidth=Nothing}) - $ all + $ allamts LayoutBare -> zipWith (:) (fmap wbFromText cs) -- add symbols . transpose -- each row becomes a list of Text quantities . fmap (showMixedAmountLinesB bopts{displayOrder=Just cs, displayMinWidth=Nothing}) - $ all + $ allamts LayoutTidy -> concat . zipWith (map . addDateColumns) colspans . 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 where totalscolumn = row_total_ && balanceaccum_ `notElem` [Cumulative, Historical] - cs = S.toList . foldl' S.union mempty $ fmap maCommodities all - all = as - ++ [rowtot | totalscolumn && not (null as)] - ++ [rowavg | average_ && not (null as)] + cs = if all mixedAmountLooksZero allamts then [""] else S.toList $ foldMap maCommodities allamts + allamts = as ++ [rowtot | totalscolumn && not (null as)] ++ [rowavg | average_ && not (null as)] addDateColumns span@(DateSpan s e) = (wbFromText (showDateSpan span) :) . (wbFromText (maybe "" showDate s) :) . (wbFromText (maybe "" (showDate . addDays (-1)) e) :) diff --git a/hledger/test/balance/layout.test b/hledger/test/balance/layout.test index f39c22620..1be112d6d 100644 --- a/hledger/test/balance/layout.test +++ b/hledger/test/balance/layout.test @@ -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","VHT","294.00" >=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