cli: compoundbalancecommand keeps zero-balance accounts with children
This commit is contained in:
		
							parent
							
								
									a6a73e36e3
								
							
						
					
					
						commit
						15c666702b
					
				| @ -14,7 +14,7 @@ module Hledger.Cli.CompoundBalanceCommand ( | |||||||
| ) where | ) where | ||||||
| 
 | 
 | ||||||
| import Data.List (foldl') | import Data.List (foldl') | ||||||
| import Data.Maybe (fromMaybe) | import Data.Maybe (fromMaybe,catMaybes) | ||||||
| import qualified Data.Text as TS | import qualified Data.Text as TS | ||||||
| import qualified Data.Text.Lazy as TL | import qualified Data.Text.Lazy as TL | ||||||
| import System.Console.CmdArgs.Explicit as C | import System.Console.CmdArgs.Explicit as C | ||||||
| @ -218,13 +218,19 @@ compoundBalanceSubreport ropts userq j subreportqfn subreportnormalsign = r' | |||||||
|     -- run the report |     -- run the report | ||||||
|     q = And [subreportqfn j, userq] |     q = And [subreportqfn j, userq] | ||||||
|     r@(MultiBalanceReport (dates, rows, totals)) = multiBalanceReport ropts' q j |     r@(MultiBalanceReport (dates, rows, totals)) = multiBalanceReport ropts' q j | ||||||
|     -- if user didn't specify --empty, now remove the all-zero rows |     -- if user didn't specify --empty, now remove the all-zero rows, unless they have non-zero subaccounts | ||||||
|  |     -- in this report | ||||||
|     r' | empty_ ropts = r |     r' | empty_ ropts = r | ||||||
|        | otherwise    = MultiBalanceReport (dates, rows', totals)  |        | otherwise    = MultiBalanceReport (dates, rows', totals)  | ||||||
|           where |           where | ||||||
|  |             nonzeroaccounts = | ||||||
|  |               dbg1 "nonzeroaccounts" $ | ||||||
|  |               catMaybes $ map (\(act,_,_,amts,_,_) -> | ||||||
|  |                             if not (all isZeroMixedAmount amts) then Just act else Nothing) rows  | ||||||
|             rows' = filter (not . emptyRow) rows |             rows' = filter (not . emptyRow) rows | ||||||
|               where |               where | ||||||
|                 emptyRow (_,_,_,amts,_,_) = all isZeroMixedAmount amts |                 emptyRow (act,_,_,amts,_,_) = | ||||||
|  |                   all isZeroMixedAmount amts && all (not . (act `isAccountNamePrefixOf`)) nonzeroaccounts | ||||||
| 
 | 
 | ||||||
| -- | Render a compound balance report as plain text suitable for console output. | -- | Render a compound balance report as plain text suitable for console output. | ||||||
| {- Eg: | {- Eg: | ||||||
|  | |||||||
| @ -241,3 +241,44 @@ Balance Sheet 2016/01/01 | |||||||
|  Net:        ║          1  |  Net:        ║          1  | ||||||
| >>>2 | >>>2 | ||||||
| >>>= 0 | >>>= 0 | ||||||
|  | 
 | ||||||
|  | # 10. Check that accounts brought to zero by subaccount balances | ||||||
|  | # are not erased from balancesheet | ||||||
|  | hledger -f - balancesheet | ||||||
|  | <<< | ||||||
|  | 2018-10-01 | ||||||
|  |    income:whatever | ||||||
|  |    assets:bank      $100 | ||||||
|  |    assets:bank:subaccount  $10 | ||||||
|  |    assets:bank:this subaccount should disappear  $10 | ||||||
|  | 
 | ||||||
|  | 2018-10-02 | ||||||
|  |    assets:bank:this subaccount should disappear  -$10 | ||||||
|  |    assets:bank | ||||||
|  | 
 | ||||||
|  | 2018-10-03 | ||||||
|  |    assets:this account should not disappear:subaccount   -$10 | ||||||
|  |    assets:this account should not disappear | ||||||
|  | >>> | ||||||
|  | Balance Sheet 2018/10/01-2018/10/03 | ||||||
|  | 
 | ||||||
|  |                                      || 2018/10/03  | ||||||
|  | =====================================++============ | ||||||
|  |  Assets                              ||             | ||||||
|  | -------------------------------------++------------ | ||||||
|  |  assets                              ||       $120  | ||||||
|  |    bank                              ||       $120  | ||||||
|  |      subaccount                      ||        $10  | ||||||
|  |    this account should not disappear ||          0  | ||||||
|  |      subaccount                      ||       $-10  | ||||||
|  | -------------------------------------++------------ | ||||||
|  |                                      ||       $120  | ||||||
|  | =====================================++============ | ||||||
|  |  Liabilities                         ||             | ||||||
|  | -------------------------------------++------------ | ||||||
|  | -------------------------------------++------------ | ||||||
|  |                                      ||             | ||||||
|  | =====================================++============ | ||||||
|  |  Net:                                ||       $120  | ||||||
|  | >>>2 | ||||||
|  | >>>= 0 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user