lib: multiBalanceReport: Break calculateColSpans into a separate function.
This commit is contained in:
		
							parent
							
								
									44dcd613e8
								
							
						
					
					
						commit
						fc6a30b234
					
				@ -116,14 +116,6 @@ multiBalanceReportWith ropts@ReportOpts{..} q j priceoracle =
 | 
				
			|||||||
      -- handles the hledger-ui+future txns case above).
 | 
					      -- handles the hledger-ui+future txns case above).
 | 
				
			||||||
      reportq = dbg "reportq" $ makeReportQuery ropts reportspan q
 | 
					      reportq = dbg "reportq" $ makeReportQuery ropts reportspan q
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      -- The date spans to be included as report columns.
 | 
					 | 
				
			||||||
      colspans :: [DateSpan] = dbg "colspans" $ splitSpan interval_ displayspan
 | 
					 | 
				
			||||||
        where
 | 
					 | 
				
			||||||
          displayspan
 | 
					 | 
				
			||||||
            | empty_    = dbg "displayspan (-E)" reportspan                              -- all the requested intervals
 | 
					 | 
				
			||||||
            | otherwise = dbg "displayspan" $ requestedspan `spanIntersect` matchedspan  -- exclude leading/trailing empty intervals
 | 
					 | 
				
			||||||
          matchedspan = dbg "matchedspan" . daysSpan $ map snd ps
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      -- If doing cost valuation, convert amounts to cost.
 | 
					      -- If doing cost valuation, convert amounts to cost.
 | 
				
			||||||
      j' = journalSelectingAmountFromOpts ropts j
 | 
					      j' = journalSelectingAmountFromOpts ropts j
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -141,6 +133,10 @@ multiBalanceReportWith ropts@ReportOpts{..} q j priceoracle =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      -- Postings matching the query within the report period.
 | 
					      -- Postings matching the query within the report period.
 | 
				
			||||||
      ps :: [(Posting, Day)] = dbg'' "ps" $ getPostings ropts reportq j'
 | 
					      ps :: [(Posting, Day)] = dbg'' "ps" $ getPostings ropts reportq j'
 | 
				
			||||||
 | 
					      days = map snd ps
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      -- The date spans to be included as report columns.
 | 
				
			||||||
 | 
					      colspans = dbg "colspans" $ calculateColSpans ropts reportspan days
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      -- Group postings into their columns, with the column end dates.
 | 
					      -- Group postings into their columns, with the column end dates.
 | 
				
			||||||
      colps :: [([Posting], Maybe Day)] =
 | 
					      colps :: [([Posting], Maybe Day)] =
 | 
				
			||||||
@ -367,7 +363,7 @@ getPostings ropts q =
 | 
				
			|||||||
        PrimaryDate   -> postingDate
 | 
					        PrimaryDate   -> postingDate
 | 
				
			||||||
        SecondaryDate -> postingDate2
 | 
					        SecondaryDate -> postingDate2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- | Remove any date queries and insert queries from the report span
 | 
					-- | Remove any date queries and insert queries from the report span.
 | 
				
			||||||
makeReportQuery :: ReportOpts -> DateSpan -> Query -> Query
 | 
					makeReportQuery :: ReportOpts -> DateSpan -> Query -> Query
 | 
				
			||||||
makeReportQuery ropts reportspan q
 | 
					makeReportQuery ropts reportspan q
 | 
				
			||||||
    | reportspan == nulldatespan = depthlessq
 | 
					    | reportspan == nulldatespan = depthlessq
 | 
				
			||||||
@ -378,6 +374,17 @@ makeReportQuery ropts reportspan q
 | 
				
			|||||||
    dateless   = dbg1 "dateless" . filterQuery (not . queryIsDateOrDate2)
 | 
					    dateless   = dbg1 "dateless" . filterQuery (not . queryIsDateOrDate2)
 | 
				
			||||||
    dateqcons  = if date2_ ropts then Date2 else Date
 | 
					    dateqcons  = if date2_ ropts then Date2 else Date
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- | Calculate the DateSpans to be used for the columns of the report.
 | 
				
			||||||
 | 
					calculateColSpans :: ReportOpts -> DateSpan -> [Day] -> [DateSpan]
 | 
				
			||||||
 | 
					calculateColSpans ropts reportspan days =
 | 
				
			||||||
 | 
					    splitSpan (interval_ ropts) displayspan
 | 
				
			||||||
 | 
					  where
 | 
				
			||||||
 | 
					    displayspan
 | 
				
			||||||
 | 
					      | empty_ ropts = dbg "displayspan (-E)" reportspan                        -- all the requested intervals
 | 
				
			||||||
 | 
					      | otherwise = dbg "displayspan" $ reportspan `spanIntersect` matchedspan  -- exclude leading/trailing empty intervals
 | 
				
			||||||
 | 
					    matchedspan = dbg "matchedspan" $ daysSpan days
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- | Generates a simple non-columnar BalanceReport, but using multiBalanceReport,
 | 
					-- | Generates a simple non-columnar BalanceReport, but using multiBalanceReport,
 | 
				
			||||||
-- in order to support --historical. Does not support tree-mode boring parent eliding.
 | 
					-- in order to support --historical. Does not support tree-mode boring parent eliding.
 | 
				
			||||||
-- If the normalbalance_ option is set, it adjusts the sorting and sign of amounts
 | 
					-- If the normalbalance_ option is set, it adjusts the sorting and sign of amounts
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user