roi: check valuation on dates we have price directives for
This commit is contained in:
		
							parent
							
								
									8013d650f3
								
							
						
					
					
						commit
						0fa51482c6
					
				| @ -60,8 +60,8 @@ roi CliOpts{rawopts_=rawopts, reportspec_=rspec@ReportSpec{rsOpts=ReportOpts{..} | |||||||
|   d <- getCurrentDay |   d <- getCurrentDay | ||||||
|   -- We may be converting posting amounts to value, per hledger_options.m4.md "Effect of --value on reports". |   -- We may be converting posting amounts to value, per hledger_options.m4.md "Effect of --value on reports". | ||||||
|   let |   let | ||||||
|     priceOracle = (journalPriceOracle infer_value_ j) |     priceOracle = journalPriceOracle infer_value_ j | ||||||
|     styles = (journalCommodityStyles j) |     styles = journalCommodityStyles j | ||||||
|     today = rsToday rspec |     today = rsToday rspec | ||||||
|     mixedAmountValue periodlast date = mixedAmountApplyCostValuation priceOracle styles periodlast today date cost_ value_ |     mixedAmountValue periodlast date = mixedAmountApplyCostValuation priceOracle styles periodlast today date cost_ value_ | ||||||
|   let |   let | ||||||
| @ -85,7 +85,7 @@ roi CliOpts{rawopts_=rawopts, reportspec_=rspec@ReportSpec{rsOpts=ReportOpts{..} | |||||||
|     requestedSpan = periodAsDateSpan period_ |     requestedSpan = periodAsDateSpan period_ | ||||||
|     requestedInterval = interval_ |     requestedInterval = interval_ | ||||||
| 
 | 
 | ||||||
|     wholeSpan = spanDefaultsFrom requestedSpan journalSpan |     wholeSpan = dbg3 "wholeSpan" $ spanDefaultsFrom requestedSpan journalSpan | ||||||
| 
 | 
 | ||||||
|   when (null trans) $ do |   when (null trans) $ do | ||||||
|     putStrLn "No relevant transactions found. Check your investments query" |     putStrLn "No relevant transactions found. Check your investments query" | ||||||
| @ -96,7 +96,9 @@ roi CliOpts{rawopts_=rawopts, reportspec_=rspec@ReportSpec{rsOpts=ReportOpts{..} | |||||||
|         interval -> |         interval -> | ||||||
|             splitSpan interval wholeSpan |             splitSpan interval wholeSpan | ||||||
| 
 | 
 | ||||||
|   tableBody <- forM spans $ \(DateSpan (Just spanBegin) (Just spanEnd)) -> do |   let priceDirectiveDates = dbg3 "priceDirectiveDates" $ map pddate $ jpricedirectives j | ||||||
|  | 
 | ||||||
|  |   tableBody <- forM spans $ \span@(DateSpan (Just spanBegin) (Just spanEnd)) -> do | ||||||
|     -- Spans are [spanBegin,spanEnd), and spanEnd is 1 day after then actual end date we are interested in |     -- Spans are [spanBegin,spanEnd), and spanEnd is 1 day after then actual end date we are interested in | ||||||
|     let |     let | ||||||
|       cashFlowApplyCostValue = map (\(d,amt) -> (d,mixedAmountValue spanEnd d amt)) |       cashFlowApplyCostValue = map (\(d,amt) -> (d,mixedAmountValue spanEnd d amt)) | ||||||
| @ -111,17 +113,20 @@ roi CliOpts{rawopts_=rawopts, reportspec_=rspec@ReportSpec{rsOpts=ReportOpts{..} | |||||||
|         total trans (And [investmentsQuery |         total trans (And [investmentsQuery | ||||||
|                          , Date (DateSpan Nothing (Just spanEnd))]) |                          , Date (DateSpan Nothing (Just spanEnd))]) | ||||||
| 
 | 
 | ||||||
|  |       priceDates = dbg3 "priceDates" $ nub $ filter (spanContainsDate span) priceDirectiveDates | ||||||
|       cashFlow = |       cashFlow = | ||||||
|  |         ((map (\d -> (d,0)) priceDates)++) $ | ||||||
|         cashFlowApplyCostValue $ |         cashFlowApplyCostValue $ | ||||||
|         calculateCashFlow trans (And [ Not investmentsQuery |         calculateCashFlow trans (And [ Not investmentsQuery | ||||||
|                                      , Not pnlQuery |                                      , Not pnlQuery | ||||||
|                                      , Date (DateSpan (Just spanBegin) (Just spanEnd)) ] ) |                                      , Date span ] ) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|       pnl = |       pnl = | ||||||
|         cashFlowApplyCostValue $ |         cashFlowApplyCostValue $ | ||||||
|         calculateCashFlow trans (And [ Not investmentsQuery |         calculateCashFlow trans (And [ Not investmentsQuery | ||||||
|                                      , pnlQuery |                                      , pnlQuery | ||||||
|                                      , Date (DateSpan (Just spanBegin) (Just spanEnd)) ] ) |                                      , Date span ] ) | ||||||
| 
 | 
 | ||||||
|       thisSpan = dbg3 "processing span" $ |       thisSpan = dbg3 "processing span" $ | ||||||
|                  OneSpan spanBegin spanEnd valueBefore valueAfter cashFlow pnl |                  OneSpan spanBegin spanEnd valueBefore valueAfter cashFlow pnl | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user