28 lines
		
	
	
		
			598 B
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			598 B
		
	
	
	
		
			Haskell
		
	
	
	
	
	
{-|
 | 
						|
 | 
						|
A compound data type for efficiency. An 'Account' stores
 | 
						|
 | 
						|
- an 'AccountName',
 | 
						|
 | 
						|
- all 'Posting's in the account, excluding subaccounts
 | 
						|
 | 
						|
- a 'MixedAmount' representing the account balance, including subaccounts.
 | 
						|
 | 
						|
-}
 | 
						|
 | 
						|
module Ledger.Account
 | 
						|
where
 | 
						|
import Ledger.Utils
 | 
						|
import Ledger.Types
 | 
						|
import Ledger.Amount
 | 
						|
 | 
						|
 | 
						|
instance Show Account where
 | 
						|
    show (Account a ts b) = printf "Account %s with %d txns and %s balance" a (length ts) (showMixedAmount b)
 | 
						|
 | 
						|
instance Eq Account where
 | 
						|
    (==) (Account n1 t1 b1) (Account n2 t2 b2) = n1 == n2 && t1 == t2 && b1 == b2
 | 
						|
 | 
						|
nullacct = Account "" [] nullmixedamt
 | 
						|
 |