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.
Synopsis
- nulltransaction :: Transaction
- transaction :: Day -> [Posting] -> Transaction
- txnTieKnot :: Transaction -> Transaction
- txnUntieKnot :: Transaction -> Transaction
- hasRealPostings :: Transaction -> Bool
- realPostings :: Transaction -> [Posting]
- assignmentPostings :: Transaction -> [Posting]
- virtualPostings :: Transaction -> [Posting]
- balancedVirtualPostings :: Transaction -> [Posting]
- transactionsPostings :: [Transaction] -> [Posting]
- transactionTransformPostings :: (Posting -> Posting) -> Transaction -> Transaction
- transactionApplyValuation :: PriceOracle -> Map CommoditySymbol AmountStyle -> Day -> Day -> ValuationType -> Transaction -> Transaction
- transactionToCost :: Map CommoditySymbol AmountStyle -> Transaction -> Transaction
- transactionApplyAliases :: [AccountAlias] -> Transaction -> Either RegexError Transaction
- transactionMapPostings :: (Posting -> Posting) -> Transaction -> Transaction
- transactionMapPostingAmounts :: (MixedAmount -> MixedAmount) -> Transaction -> Transaction
- transactionDate2 :: Transaction -> Day
- transactionDateOrDate2 :: WhichDate -> Transaction -> Day
- transactionPayee :: Transaction -> Text
- transactionNote :: Transaction -> Text
- showTransaction :: Transaction -> Text
- showTransactionOneLineAmounts :: Transaction -> Text
- transactionFile :: Transaction -> FilePath
- tests_Transaction :: TestTree
Transaction
transaction :: Day -> [Posting] -> Transaction Source #
Make a simple transaction with the given date and postings.
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
hasRealPostings :: Transaction -> Bool Source #
realPostings :: Transaction -> [Posting] Source #
assignmentPostings :: Transaction -> [Posting] Source #
virtualPostings :: Transaction -> [Posting] Source #
balancedVirtualPostings :: Transaction -> [Posting] Source #
transactionsPostings :: [Transaction] -> [Posting] Source #
transactionTransformPostings :: (Posting -> Posting) -> Transaction -> Transaction Source #
Apply a transform function to this transaction's amounts.
transactionApplyValuation :: PriceOracle -> Map CommoditySymbol AmountStyle -> Day -> Day -> ValuationType -> Transaction -> Transaction Source #
Apply a specified valuation to this transaction's amounts, using the provided price oracle, commodity styles, and reference dates. See amountApplyValuation.
transactionToCost :: Map CommoditySymbol AmountStyle -> Transaction -> Transaction Source #
Convert this transaction's amounts to cost, and apply the appropriate amount styles.
transactionApplyAliases :: [AccountAlias] -> Transaction -> Either RegexError Transaction Source #
Apply some account aliases to all posting account names in the transaction, as described by accountNameApplyAliases. This can fail due to a bad replacement pattern in a regular expression alias.
transactionMapPostings :: (Posting -> Posting) -> Transaction -> Transaction Source #
Apply a transformation to a transaction's postings.
transactionMapPostingAmounts :: (MixedAmount -> MixedAmount) -> Transaction -> Transaction Source #
Apply a transformation to a transaction's posting amounts.
date operations
transactionDate2 :: Transaction -> Day Source #
transactionDateOrDate2 :: WhichDate -> Transaction -> Day Source #
transaction description parts
transactionPayee :: Transaction -> Text Source #
transactionNote :: Transaction -> Text Source #
rendering
showTransaction :: Transaction -> Text Source #
Render a journal transaction as text similar to the style of Ledger's print command.
Adapted from Ledger 2.x and 3.x standard format:
yyyy-mm-dd[ *][ 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
The output will be parseable journal syntax. To facilitate this, postings with explicit multi-commodity amounts are displayed as multiple similar postings, one per commodity. (Normally does not happen with this function).
showTransactionOneLineAmounts :: Transaction -> Text Source #
Like showTransaction, but explicit multi-commodity amounts are shown on one line, comma-separated. In this case the output will not be parseable journal syntax.
transactionFile :: Transaction -> FilePath Source #
The file path from which this transaction was parsed.