tools: Include more commodities and prices in generated journals.
This commit is contained in:
		
							parent
							
								
									2aae54a02c
								
							
						
					
					
						commit
						baab33b58d
					
				| @ -13,6 +13,7 @@ with --mixed it uses both. | ||||
| module Main | ||||
| where | ||||
| import Data.Char | ||||
| import Data.Decimal | ||||
| import Data.List | ||||
| import Data.Time.Calendar | ||||
| import Data.Time.LocalTime | ||||
| @ -30,17 +31,23 @@ main = do | ||||
|   let d = fromGregorian 2000 1 1 | ||||
|   let dates = iterate (addDays 1) d | ||||
|   let accts = pair $ cycle $ take numaccts $ uniqueAccountNames opts acctdepth | ||||
|   mapM_ (\(n,d,(a,b)) -> putStr $ showtxn n d a b) $ take numtxns $ zip3 [1..] dates accts | ||||
|   let comms  = cycle ['A'..'Z'] | ||||
|   let rates = [0.70, 0.71 .. 1.3] | ||||
|   mapM_ (\(n,d,(a,b),c,p) -> putStr $ showtxn n d a b c p) $ take numtxns $ zip5 [1..] dates accts comms (drop 1 comms) | ||||
|   mapM_ (\(d,rate) -> putStr $ showmarketprice d rate) $ take numtxns $ zip dates (cycle $ rates ++ init (tail (reverse rates))) | ||||
|   return () | ||||
| 
 | ||||
| showtxn :: Int -> Day -> String -> String -> String | ||||
| showtxn txnno date acct1 acct2 = | ||||
|     printf "%s transaction %d\n  %-40s  %2d A\n  %-40s  %2d A\n\n" d txnno acct1 amt acct2 (-amt) | ||||
| showtxn :: Int -> Day -> String -> String -> Char -> Char -> String | ||||
| showtxn txnno date acct1 acct2 comm pricecomm = | ||||
|     printf "%s transaction %d\n  %-40s  %2d %c%s\n  %-40s  %s %c\n\n" d txnno acct1 amt comm pricesymbol acct2 (show amt2) amt2comm | ||||
|     where | ||||
|       d = show date | ||||
|       amt = txnno | ||||
|       (amt2, amt2comm, pricesymbol) | ||||
|         | txnno `rem` 3 == 0 = (fromIntegral (-amt) :: Decimal, comm, "") | ||||
|         | txnno `rem` 3 == 1 = (fromIntegral (-amt) * rate, pricecomm, printf " @ %s %c" (show rate) pricecomm) | ||||
|         | otherwise         = (fromIntegral (-amt), pricecomm, printf " @@ %s %c" (show amt) pricecomm) | ||||
|       rate = 0.70 + 0.01 * fromIntegral (txnno `rem` 60) :: Decimal | ||||
| 
 | ||||
| showmarketprice :: Day -> Double -> String | ||||
| showmarketprice date rate = printf "P %s A  %.2f B\n" (show date) rate | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user