hledger-lib-1.2: Core data types, parsers and functionality for the hledger accounting tools

Safe Haskell | None
Language | Haskell2010

Hledger.Data.Transaction

Contents

- Transaction
- operations
- date operations
- arithmetic
- rendering
- GenericSourcePos
- misc.
- Orphan instances

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

- nullsourcepos :: GenericSourcePos
- nulltransaction :: Transaction
- txnTieKnot :: Transaction -> Transaction
- txnUntieKnot :: Transaction -> Transaction
- showAccountName :: Maybe Int -> PostingType -> AccountName -> String
- hasRealPostings :: Transaction -> Bool
- realPostings :: Transaction -> [Posting]
- assignmentPostings :: 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
- balanceTransactionUpdate :: MonadError String m => (AccountName -> MixedAmount -> m ()) -> Maybe (Map CommoditySymbol AmountStyle) -> Transaction -> m Transaction
- showTransaction :: Transaction -> String
- showTransactionUnelided :: Transaction -> String
- showTransactionUnelidedOneLineAmounts :: Transaction -> String
- showPostingLine :: Posting -> String
- showPostingLines :: Posting -> [String]
- sourceFilePath :: GenericSourcePos -> FilePath
- sourceFirstLine :: GenericSourcePos -> Int
- showGenericSourcePos :: GenericSourcePos -> String
- tests_Hledger_Data_Transaction :: Test

# Transaction

nullsourcepos :: GenericSourcePos Source #

nulltransaction :: Transaction Source #

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 #

assignmentPostings :: 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.

this fails for example, if there are several missing amounts (possibly with balance assignments)

balanceTransactionUpdate Source #

Arguments

:: MonadError String m |
=> (AccountName -> MixedAmount -> m ()) | update function
-> Maybe (Map CommoditySymbol AmountStyle) |
-> Transaction |
-> m Transaction |

More general version of `balanceTransaction` that takes an update function

# 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

showTransactionUnelided :: Transaction -> String Source #

showTransactionUnelidedOneLineAmounts :: Transaction -> String Source #

showPostingLine :: Posting -> String Source #

showPostingLines :: Posting -> [String] Source #

Produce posting line with all comment lines associated with it

# GenericSourcePos

sourceFilePath :: GenericSourcePos -> FilePath Source #

sourceFirstLine :: GenericSourcePos -> Int Source #

showGenericSourcePos :: GenericSourcePos -> String Source #

# misc.

tests_Hledger_Data_Transaction :: Test Source #

# Orphan instances

Show PeriodicTransaction Source # |
Methods showsPrec :: Int -> PeriodicTransaction -> ShowS # show :: PeriodicTransaction -> String # showList :: [PeriodicTransaction] -> ShowS #
Show ModifierTransaction Source # |
Methods showsPrec :: Int -> ModifierTransaction -> ShowS # show :: ModifierTransaction -> String # showList :: [ModifierTransaction] -> ShowS #
Show Transaction Source # |
Methods showsPrec :: Int -> Transaction -> ShowS # show :: Transaction -> String # showList :: [Transaction] -> ShowS #