Safe Haskell | None |
---|---|
Language | Haskell2010 |
Hledger.Data.Transaction
Description
A Transaction
represents a movement of some commodity(ies) between two
or more accounts. It consists of multiple account Posting
s which balance
to zero, a date, and optional extras like description, cleared status, and
tags.
- nullsourcepos :: GenericSourcePos
- nulltransaction :: Transaction
- txnTieKnot :: Transaction -> Transaction
- txnUntieKnot :: Transaction -> Transaction
- showAccountName :: Maybe Int -> PostingType -> AccountName -> String
- hasRealPostings :: Transaction -> Bool
- realPostings :: Transaction -> [Posting]
- virtualPostings :: Transaction -> [Posting]
- balancedVirtualPostings :: Transaction -> [Posting]
- transactionsPostings :: [Transaction] -> [Posting]
- isTransactionBalanced :: Maybe (Map CommoditySymbol AmountStyle) -> Transaction -> Bool
- transactionDate2 :: Transaction -> Day
- transactionPostingBalances :: Transaction -> (MixedAmount, MixedAmount, MixedAmount)
- balanceTransaction :: Maybe (Map CommoditySymbol AmountStyle) -> Transaction -> Either String Transaction
- showTransaction :: Transaction -> String
- showTransactionUnelided :: Transaction -> String
- showTransactionUnelidedOneLineAmounts :: Transaction -> String
- showPostingLine :: Posting -> String
- tests_Hledger_Data_Transaction :: Test
Transaction
txnTieKnot :: Transaction -> Transaction Source #
Ensure a transaction's postings refer back to it, so that eg relatedPostings works right.
txnUntieKnot :: Transaction -> Transaction Source #
Ensure a transaction's postings do not refer back to it, so that eg recursiveSize and GHCI's :sprint work right.
operations
showAccountName :: Maybe Int -> PostingType -> AccountName -> String Source #
Show an account name, clipped to the given width if any, and appropriately bracketed/parenthesised for the given posting type.
hasRealPostings :: Transaction -> Bool Source #
realPostings :: Transaction -> [Posting] Source #
virtualPostings :: Transaction -> [Posting] Source #
balancedVirtualPostings :: Transaction -> [Posting] Source #
transactionsPostings :: [Transaction] -> [Posting] Source #
isTransactionBalanced :: Maybe (Map CommoditySymbol AmountStyle) -> Transaction -> Bool Source #
Is this transaction balanced ? A balanced transaction's real (non-virtual) postings sum to 0, and any balanced virtual postings also sum to 0.
date operations
transactionDate2 :: Transaction -> Day Source #
arithmetic
transactionPostingBalances :: Transaction -> (MixedAmount, MixedAmount, MixedAmount) Source #
Get the sums of a transaction's real, virtual, and balanced virtual postings.
balanceTransaction :: Maybe (Map CommoditySymbol AmountStyle) -> Transaction -> Either String Transaction Source #
Ensure this transaction is balanced, possibly inferring a missing amount or conversion price(s), or return an error message. Balancing is affected by commodity display precisions, so those can (optionally) be provided.
rendering
showTransaction :: Transaction -> String Source #
Show a journal transaction, formatted for the print command. ledger 2.x's standard format looks like this:
yyyymmdd[ *][ CODE] description......... [ ; comment...............] account name 1..................... ...$amount1[ ; comment...............] account name 2..................... ..$-amount1[ ; comment...............] pcodewidth = no limit -- 10 -- mimicking ledger layout. pdescwidth = no limit -- 20 -- I don't remember what these mean, pacctwidth = 35 minimum, no maximum -- they were important at the time. pamtwidth = 11 pcommentwidth = no limit -- 22
showPostingLine :: Posting -> String Source #