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 | module Main | ||||||
| where | where | ||||||
| import Data.Char | import Data.Char | ||||||
|  | import Data.Decimal | ||||||
| import Data.List | import Data.List | ||||||
| import Data.Time.Calendar | import Data.Time.Calendar | ||||||
| import Data.Time.LocalTime | import Data.Time.LocalTime | ||||||
| @ -30,17 +31,23 @@ main = do | |||||||
|   let d = fromGregorian 2000 1 1 |   let d = fromGregorian 2000 1 1 | ||||||
|   let dates = iterate (addDays 1) d |   let dates = iterate (addDays 1) d | ||||||
|   let accts = pair $ cycle $ take numaccts $ uniqueAccountNames opts acctdepth |   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] |   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))) |   mapM_ (\(d,rate) -> putStr $ showmarketprice d rate) $ take numtxns $ zip dates (cycle $ rates ++ init (tail (reverse rates))) | ||||||
|   return () |   return () | ||||||
| 
 | 
 | ||||||
| showtxn :: Int -> Day -> String -> String -> String | showtxn :: Int -> Day -> String -> String -> Char -> Char -> String | ||||||
| showtxn txnno date acct1 acct2 = | showtxn txnno date acct1 acct2 comm pricecomm = | ||||||
|     printf "%s transaction %d\n  %-40s  %2d A\n  %-40s  %2d A\n\n" d txnno acct1 amt acct2 (-amt) |     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 |     where | ||||||
|       d = show date |       d = show date | ||||||
|       amt = txnno |       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 :: Day -> Double -> String | ||||||
| showmarketprice date rate = printf "P %s A  %.2f B\n" (show date) rate | showmarketprice date rate = printf "P %s A  %.2f B\n" (show date) rate | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user