refactoring
This commit is contained in:
parent
1524dffbe2
commit
6a55237836
35
Account.hs
35
Account.hs
@ -9,7 +9,8 @@ import EntryTransaction
|
|||||||
import Ledger
|
import Ledger
|
||||||
|
|
||||||
|
|
||||||
-- an Account caches an account's name, balance and transactions for convenience
|
-- an Account caches an account's name, balance (including sub-accounts)
|
||||||
|
-- and transactions (not including sub-accounts)
|
||||||
type Account = (AccountName,[EntryTransaction],Amount)
|
type Account = (AccountName,[EntryTransaction],Amount)
|
||||||
|
|
||||||
aname (a,_,_) = a
|
aname (a,_,_) = a
|
||||||
@ -17,28 +18,24 @@ atransactions (_,ts,_) = ts
|
|||||||
abalance (_,_,b) = b
|
abalance (_,_,b) = b
|
||||||
|
|
||||||
mkAccount :: Ledger -> AccountName -> Account
|
mkAccount :: Ledger -> AccountName -> Account
|
||||||
mkAccount l a = (a, accountNameTransactionsNoSubs l a, accountNameBalance l a)
|
mkAccount l a =
|
||||||
|
(a, transactionsInAccountNamed l a, aggregateBalanceInAccountNamed l a)
|
||||||
|
|
||||||
accountNameBalance :: Ledger -> AccountName -> Amount
|
balanceInAccountNamed :: Ledger -> AccountName -> Amount
|
||||||
accountNameBalance l a = sumEntryTransactions (accountNameTransactions l a)
|
balanceInAccountNamed l a =
|
||||||
|
sumEntryTransactions (transactionsInAccountNamed l a)
|
||||||
|
|
||||||
accountNameTransactions :: Ledger -> AccountName -> [EntryTransaction]
|
aggregateBalanceInAccountNamed :: Ledger -> AccountName -> Amount
|
||||||
accountNameTransactions l a = ledgerTransactionsMatching (["^" ++ a ++ "(:.+)?$"], []) l
|
aggregateBalanceInAccountNamed l a =
|
||||||
|
sumEntryTransactions (aggregateTransactionsInAccountNamed l a)
|
||||||
|
|
||||||
accountNameBalanceNoSubs :: Ledger -> AccountName -> Amount
|
transactionsInAccountNamed :: Ledger -> AccountName -> [EntryTransaction]
|
||||||
accountNameBalanceNoSubs l a = sumEntryTransactions (accountNameTransactionsNoSubs l a)
|
transactionsInAccountNamed l a =
|
||||||
|
ledgerTransactionsMatching (["^" ++ a ++ "$"], []) l
|
||||||
accountNameTransactionsNoSubs :: Ledger -> AccountName -> [EntryTransaction]
|
|
||||||
accountNameTransactionsNoSubs l a = ledgerTransactionsMatching (["^" ++ a ++ "$"], []) l
|
|
||||||
|
|
||||||
-- showAccountNamesWithBalances :: [(AccountName,String)] -> Ledger -> String
|
|
||||||
-- showAccountNamesWithBalances as l =
|
|
||||||
-- unlines $ map (showAccountNameAndBalance l) as
|
|
||||||
|
|
||||||
-- showAccountNameAndBalance :: Ledger -> (AccountName, String) -> String
|
|
||||||
-- showAccountNameAndBalance l (a, adisplay) =
|
|
||||||
-- printf "%20s %s" (showBalance $ accountBalance l a) adisplay
|
|
||||||
|
|
||||||
|
aggregateTransactionsInAccountNamed :: Ledger -> AccountName -> [EntryTransaction]
|
||||||
|
aggregateTransactionsInAccountNamed l a =
|
||||||
|
ledgerTransactionsMatching (["^" ++ a ++ "(:.+)?$"], []) l
|
||||||
|
|
||||||
-- a tree of Accounts
|
-- a tree of Accounts
|
||||||
|
|
||||||
|
|||||||
@ -8,9 +8,9 @@ import Transaction
|
|||||||
|
|
||||||
|
|
||||||
-- We convert Transactions into EntryTransactions, which are (entry,
|
-- We convert Transactions into EntryTransactions, which are (entry,
|
||||||
-- transaction) pairs, since I couldn't easily just have transactions
|
-- transaction) pairs, since I couldn't see how to easily have
|
||||||
-- reference their entry like in OO. These are referred to as just
|
-- transactions reference their entry like in OO. These are referred to
|
||||||
-- "transactions" hereafter.
|
-- as just "transactions" hereafter.
|
||||||
|
|
||||||
type EntryTransaction = (Entry,Transaction)
|
type EntryTransaction = (Entry,Transaction)
|
||||||
|
|
||||||
|
|||||||
14
Models.hs
14
Models.hs
@ -1,16 +1,14 @@
|
|||||||
-- data types & behaviours
|
-- data types & behaviours
|
||||||
module Models (
|
module Models (
|
||||||
module Models,
|
|
||||||
module Account,
|
|
||||||
module Ledger,
|
|
||||||
module EntryTransaction,
|
|
||||||
module Transaction,
|
|
||||||
module Entry,
|
|
||||||
module AccountName,
|
|
||||||
module BasicTypes,
|
module BasicTypes,
|
||||||
|
module AccountName,
|
||||||
|
module Entry,
|
||||||
|
module Transaction,
|
||||||
|
module EntryTransaction,
|
||||||
|
module Ledger,
|
||||||
|
module Account
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
import Utils
|
|
||||||
import BasicTypes
|
import BasicTypes
|
||||||
import AccountName
|
import AccountName
|
||||||
import Entry
|
import Entry
|
||||||
|
|||||||
5
TODO
5
TODO
@ -1,10 +1,7 @@
|
|||||||
cleanup/reorganize
|
|
||||||
Entry/Transaction/EntryTransaction
|
|
||||||
|
|
||||||
basic features
|
basic features
|
||||||
handle mixed amounts and currencies
|
|
||||||
balance
|
balance
|
||||||
elide boring accounts
|
elide boring accounts
|
||||||
|
handle mixed amounts and currencies
|
||||||
print
|
print
|
||||||
entry
|
entry
|
||||||
-j and -J graph data output
|
-j and -J graph data output
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user