;lib: more docs for balanceReport
This commit is contained in:
		
							parent
							
								
									8d7eacd73f
								
							
						
					
					
						commit
						f4b0381043
					
				| @ -72,8 +72,11 @@ balanceReport opts q j = | ||||
|       -- dbg1 = const id -- exclude from debug output | ||||
|       dbg1 s = let p = "balanceReport" in Hledger.Utils.dbg1 (p++" "++s)  -- add prefix in debug output | ||||
| 
 | ||||
|       -- Get all the summed accounts & balances, according to the query, as an account tree. | ||||
|       accts = ledgerRootAccount $ ledgerFromJournal q $ journalSelectingAmountFromOpts opts j | ||||
|       accts' :: [Account] | ||||
| 
 | ||||
|       -- Modify this tree for display - depth limit, boring parents, zeroes - and convert to a list. | ||||
|       displayaccts :: [Account] | ||||
|           | queryDepth q == 0 = | ||||
|                          dbg1 "accts" $ | ||||
|                          take 1 $ clipAccountsAndAggregate (queryDepth q) $ flattenAccounts accts | ||||
| @ -95,22 +98,20 @@ balanceReport opts q j = | ||||
|             prunezeros  = if empty_ opts then id else fromMaybe nullacct . pruneAccounts (isZeroMixedAmount . balance) | ||||
|             markboring  = if no_elide_ opts then id else markBoringParentAccounts | ||||
| 
 | ||||
|       items = dbg1 "items" $ map (balanceReportItem opts q) accts' | ||||
|       -- Make a report row for each account. | ||||
|       items = dbg1 "items" $ map (balanceReportItem opts q) displayaccts | ||||
| 
 | ||||
|       -- now sort items like MultiBalanceReport, except  | ||||
|       -- sorting a tree by amount was more easily done above | ||||
|       -- Sort report rows (except sorting by amount in tree mode, which was done above). | ||||
|       sorteditems  | ||||
|         | sort_amount_ opts && tree_ opts = items | ||||
|         | sort_amount_ opts               = sortFlatBRByAmount items | ||||
|         | otherwise                       = sortBRByAccountDeclaration items | ||||
|        | ||||
|         where     | ||||
|           -- Sort the report rows, representing a flat account list, by row total.  | ||||
|           sortFlatBRByAmount :: [BalanceReportItem] -> [BalanceReportItem] | ||||
|           sortFlatBRByAmount = sortBy (maybeflip $ comparing (normaliseMixedAmountSquashPricesForDisplay . fourth4)) | ||||
|             where | ||||
|               maybeflip = if normalbalance_ opts == Just NormallyNegative then id else flip | ||||
|      | ||||
|           -- Sort the report rows by account declaration order then account name.  | ||||
|           sortBRByAccountDeclaration :: [BalanceReportItem] -> [BalanceReportItem] | ||||
|           sortBRByAccountDeclaration rows = sortedrows | ||||
| @ -120,11 +121,12 @@ balanceReport opts q j = | ||||
|               sortedanames = sortAccountNamesByDeclaration j (tree_ opts) anames | ||||
|               sortedrows = sortAccountItemsLike sortedanames anamesandrows  | ||||
| 
 | ||||
|       -- Calculate the grand total. | ||||
|       total | not (flat_ opts) = dbg1 "total" $ sum [amt | (_,_,indent,amt) <- items, indent == 0] | ||||
|             | otherwise        = dbg1 "total" $ | ||||
|                                  if flatShowsExclusiveBalance | ||||
|                                  then sum $ map fourth4 items | ||||
|                                  else sum $ map aebalance $ clipAccountsAndAggregate 1 accts' | ||||
|                                  else sum $ map aebalance $ clipAccountsAndAggregate 1 displayaccts | ||||
| 
 | ||||
| -- | A sorting helper: sort a list of things (eg report rows) keyed by account name | ||||
| -- to match the provided ordering of those same account names. | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user