hledger-0.3: A ledger-compatible text-based accounting tool.

Ledger.Ledger

Description

A Ledger stores, for efficiency, a RawLedger plus its tree of account names, and a map from account names to Accounts. It may also have had uninteresting Entrys and Transactions filtered out. It also stores the complete ledger file text for the ui command.

Synopsis

Documentation

cacheLedger :: [String] -> RawLedger -> LedgerSource

Convert a raw ledger to a more efficient cached type, described above.

groupTransactions :: [Transaction] -> (Tree AccountName, AccountName -> [Transaction], AccountName -> MixedAmount, AccountName -> MixedAmount)Source

Given a list of transactions, return an account name tree and three query functions that fetch transactions, balance, and subaccount-including balance by account name. This is to factor out common logic from cacheLedger and summariseTransactionsInDateSpan.

calculateBalances :: Tree AccountName -> (AccountName -> [Transaction]) -> Tree (AccountName, (MixedAmount, MixedAmount))Source

Add subaccount-excluding and subaccount-including balances to a tree of account names somewhat efficiently, given a function that looks up transactions by account name.

transactionsByAccount :: [Transaction] -> Map AccountName [Transaction]Source

Convert a list of transactions to a map from account name to the list of all transactions in that account.

accountnames :: Ledger -> [AccountName]Source

List a ledger's account names.

ledgerAccount :: Ledger -> AccountName -> AccountSource

Get the named account from a ledger.

accounts :: Ledger -> [Account]Source

List a ledger's accounts, in tree order

topAccounts :: Ledger -> [Account]Source

List a ledger's top-level accounts, in tree order

accountsMatching :: [String] -> Ledger -> [Account]Source

Accounts in ledger whose name matches the pattern, in tree order.

subAccounts :: Ledger -> Account -> [Account]Source

List a ledger account's immediate subaccounts

ledgerTransactions :: Ledger -> [Transaction]Source

List a ledger's transactions.

ledgerAccountTree :: Int -> Ledger -> Tree AccountSource

Get a ledger's tree of accounts to the specified depth.

ledgerAccountTreeAt :: Ledger -> Account -> Maybe (Tree Account)Source

Get a ledger's tree of accounts rooted at the specified account.