This commit is contained in:
		
							parent
							
								
									a57c1bde08
								
							
						
					
					
						commit
						1866d2375d
					
				| @ -26,7 +26,8 @@ module Hledger.Reports.BalanceReport ( | ||||
| ) | ||||
| where | ||||
| 
 | ||||
| import Data.List (sort) | ||||
| import Data.List | ||||
| import Data.Ord | ||||
| import Data.Maybe | ||||
| import Data.Time.Calendar | ||||
| import Test.HUnit | ||||
| @ -169,17 +170,23 @@ amountValue j d a = | ||||
|                 } | ||||
|     Nothing -> a | ||||
| 
 | ||||
| -- | Find the market value, if known, of one unit of this commodity on | ||||
| -- the given date, in the commodity in which it has most recently been | ||||
| -- market-priced (ie the commodity mentioned in the most recent | ||||
| -- applicable market price directive before this date). | ||||
| -- | Find the market value, if known, of one unit of this commodity (A) on | ||||
| -- the given valuation date, in the commodity (B) mentioned in the latest | ||||
| -- applicable market price. The latest applicable market price is the market | ||||
| -- price directive for commodity A with the latest date that is on or before | ||||
| -- the valuation date; or if there are multiple such prices with the same date, | ||||
| -- the last parsed. | ||||
| commodityValue :: Journal -> Day -> CommoditySymbol -> Maybe Amount | ||||
| commodityValue j d c | ||||
| commodityValue j valuationdate c | ||||
|     | null applicableprices = dbg Nothing | ||||
|     | otherwise             = dbg $ Just $ mpamount $ last applicableprices | ||||
|   where | ||||
|     applicableprices = [p | p <- sort $ jmarketprices j, mpcommodity p == c, mpdate p <= d] | ||||
|     dbg = dbg8 ("using market price for "++T.unpack c) | ||||
|     applicableprices = | ||||
|       [p | p <- sortBy (comparing mpdate) $ jmarketprices j | ||||
|       , mpcommodity p == c | ||||
|       , mpdate p <= valuationdate | ||||
|       ] | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user