bs/is: don't let an empty subreport disable the grand totals (fixes #588)

This commit is contained in:
Simon Michael 2017-07-25 09:17:54 -07:00
parent 083df72582
commit c89bec0e17
3 changed files with 35 additions and 3 deletions

View File

@ -140,8 +140,14 @@ compoundBalanceCommand CompoundBalanceCommandSpec{..} CliOpts{command_=cmd, repo
row "Total" overalltotals'
where
overalltotals = case subreporttotals of
a1:as -> foldl' (zipWith (+)) a1 as
[] -> []
ts -> foldl' (zipWith (+)) zeros ts'
where
-- A subreport might be empty and have no subtotals, count those as zeroes (#588).
-- Varying-length subtotals rows are handled similarly, though that is not expected to happen.
len = maximum $ map length ts
ts' = [take len $ as ++ repeat nullmixedamt | as <- ts]
zeros = replicate len nullmixedamt
overalltotals'
| null overalltotals = []
| otherwise = overalltotals

View File

@ -174,3 +174,29 @@ Total:
>>>2
>>>=0
# 8. An empty section is does not disrupt the overall totals, #588
hledger -f- balancesheet -YTA
<<<
2017/1/1
(assets) $1
>>>
Balance Sheet
|| 2017/12/31 Total Average
=============++===============================
Assets ||
-------------++-------------------------------
assets || $1 $1 $1
-------------++-------------------------------
|| $1 $1 $1
=============++===============================
Liabilities ||
-------------++-------------------------------
-------------++-------------------------------
||
=============++===============================
Total || $1 $1 $1
>>>2
>>>=0

View File

@ -20,7 +20,7 @@ Balance Sheet
─────────────╫─────────────
═════════════╬═════════════
Total ║
Total ║ 1
>>>2