packages feed

hledger-lib 0.21 → 0.21.1

raw patch · 3 files changed

+20/−11 lines, 3 files

Files

Hledger/Read/JournalReader.hs view
@@ -52,9 +52,7 @@ import Data.Time.LocalTime import Safe (headDef, lastDef) #ifdef TESTS-import Test.HUnit-import Test.Framework.HUnitWrapper--- import Test.Framework+import Test.Framework import Text.Parsec.Error #endif import Text.ParserCombinators.Parsec hiding (parse)
Hledger/Reports.hs view
@@ -34,6 +34,7 @@   TransactionsReport,   TransactionsReportItem,   triDate,+  triBalance,   triSimpleBalance,   transactionsReportByCommodity,   journalTransactionsReport,@@ -437,6 +438,7 @@  triDate (t,_,_,_,_,_) = tdate t triAmount (_,_,_,_,a,_) = a+triBalance (_,_,_,_,_,a) = a triSimpleBalance (_,_,_,_,_,Mixed a) = case a of [] -> "0"                                                  (Amount{aquantity=q}):_ -> show q @@ -449,25 +451,34 @@     transactionsReportCommodities (_,items) =       nub $ sort $ map acommodity $ concatMap (amounts . triAmount) items --- Remove transaction report items and item amount components that--- don't involve the specified commodity. Other item fields like the--- running balance and the transaction are left unchanged.+-- Remove transaction report items and item amount (and running+-- balance amount) components that don't involve the specified+-- commodity. Other item fields such as the transaction are left unchanged. filterTransactionsReportByCommodity :: Commodity -> TransactionsReport -> TransactionsReport filterTransactionsReportByCommodity c (label,items) =   (label, fixTransactionsReportItemBalances $ concat [filterTransactionsReportItemByCommodity c i | i <- items])   where-    filterTransactionsReportItemByCommodity c (t,t2,s,o,Mixed as,bal)+    filterTransactionsReportItemByCommodity c (t,t2,s,o,a,bal)       | c `elem` cs = [item']       | otherwise   = []       where         cs = map acommodity as-        item' = (t,t2,s,o,Mixed as',bal)-        as' = filter ((==c).acommodity) as-    fixTransactionsReportItemBalances is = reverse $ go nullmixedamt $ reverse is+        item' = (t,t2,s,o,a',bal)+        a' = filterMixedAmountByCommodity c a++    fixTransactionsReportItemBalances [] = []+    fixTransactionsReportItemBalances [i] = [i]+    fixTransactionsReportItemBalances items = reverse $ i:(go startbal is)       where+        i:is = reverse items+        startbal = filterMixedAmountByCommodity c $ triBalance i         go _ [] = []         go bal ((t,t2,s,o,amt,_):is) = (t,t2,s,o,amt,bal'):go bal' is           where bal' = bal + amt++-- | Filter out all but the specified commodity from this amount.+filterMixedAmountByCommodity :: Commodity -> MixedAmount -> MixedAmount+filterMixedAmountByCommodity c (Mixed as) = Mixed $ filter ((==c). acommodity) as  -- | Select transactions from the whole journal for a transactions report, -- with no \"current\" account. The end result is similar to
hledger-lib.cabal view
@@ -1,5 +1,5 @@ name:           hledger-lib-version: 0.21+version: 0.21.1 category:       Finance synopsis:       Core data types, parsers and utilities for the hledger accounting tool. description: