journal: fix error when P directive has a zero price (#1373)
This commit is contained in:
		
							parent
							
								
									4388ce72f6
								
							
						
					
					
						commit
						08ee311875
					
				| @ -44,6 +44,7 @@ import Safe (headMay) | ||||
| import Hledger.Utils | ||||
| import Hledger.Data.Types | ||||
| import Hledger.Data.Amount | ||||
| import Hledger.Data.Dates (nulldate) | ||||
| 
 | ||||
| 
 | ||||
| ------------------------------------------------------------------------------ | ||||
| @ -380,7 +381,8 @@ effectiveMarketPrices declaredprices inferredprices = | ||||
|     & nubSortBy (compare `on` (\(MarketPrice{..})->(mpfrom,mpto))) | ||||
| 
 | ||||
| marketPriceReverse :: MarketPrice -> MarketPrice | ||||
| marketPriceReverse mp@MarketPrice{..} = mp{mpfrom=mpto, mpto=mpfrom, mprate=1/mprate} | ||||
| marketPriceReverse mp@MarketPrice{..} =  | ||||
|   mp{mpfrom=mpto, mpto=mpfrom, mprate=if mprate==0 then 0 else 1/mprate}  -- PARTIAL: / | ||||
| 
 | ||||
| ------------------------------------------------------------------------------ | ||||
| -- fgl helpers | ||||
| @ -407,8 +409,21 @@ pathEdges p = [(f,t) | f:t:_ <- tails p] | ||||
| nodesEdgeLabel :: Ord b => Gr a b -> (Node, Node) -> Maybe b | ||||
| nodesEdgeLabel g (from,to) = headMay $ sort [l | (_,t,l) <- out g from, t==to] | ||||
| 
 | ||||
| nullmarketprice :: MarketPrice | ||||
| nullmarketprice = MarketPrice { | ||||
|    mpdate=nulldate | ||||
|   ,mpfrom="" | ||||
|   ,mpto="" | ||||
|   ,mprate=0 | ||||
|   } | ||||
| 
 | ||||
| ------------------------------------------------------------------------------ | ||||
| 
 | ||||
| tests_Valuation = tests "Valuation" [ | ||||
|    tests_priceLookup | ||||
|   ,test "marketPriceReverse" $ do | ||||
|     marketPriceReverse nullmarketprice{mprate=2} @?= nullmarketprice{mprate=0.5} | ||||
|     marketPriceReverse nullmarketprice @?= nullmarketprice  -- the reverse of a 0 price is a 0 price | ||||
| 
 | ||||
| 
 | ||||
|   ] | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user