| 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 Postings 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.