35 lines
		
	
	
		
			973 B
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			973 B
		
	
	
	
		
			Haskell
		
	
	
	
	
	
{-# LANGUAGE RecordWildCards, DeriveDataTypeable, FlexibleInstances #-}
 | 
						|
{-|
 | 
						|
 | 
						|
Account balance history report.
 | 
						|
 | 
						|
-}
 | 
						|
 | 
						|
module Hledger.Reports.BalanceHistoryReport (
 | 
						|
  accountBalanceHistory
 | 
						|
 | 
						|
  -- -- * Tests
 | 
						|
  -- tests_Hledger_Reports_BalanceReport
 | 
						|
)
 | 
						|
where
 | 
						|
 | 
						|
import Data.Time.Calendar
 | 
						|
-- import Test.HUnit
 | 
						|
 | 
						|
import Hledger.Data
 | 
						|
import Hledger.Query
 | 
						|
import Hledger.Reports.ReportOptions
 | 
						|
import Hledger.Reports.TransactionsReports
 | 
						|
 | 
						|
 | 
						|
-- | Get the historical running inclusive balance of a particular account,
 | 
						|
-- from earliest to latest posting date.
 | 
						|
accountBalanceHistory :: ReportOpts -> Journal -> Account -> [(Day, MixedAmount)]
 | 
						|
accountBalanceHistory ropts j a = [(getdate t, bal) | (t,_,_,_,_,bal) <- items]
 | 
						|
  where
 | 
						|
    (_,items) = journalTransactionsReport ropts j acctquery
 | 
						|
    inclusivebal = True
 | 
						|
    acctquery = Acct $ (if inclusivebal then accountNameToAccountRegex else accountNameToAccountOnlyRegex) $ aname a
 | 
						|
    getdate = if date2_ ropts then transactionDate2 else tdate
 | 
						|
 |