hledger-lib-0.26: Core data types, parsers and utilities for the hledger accounting tool.

Safe HaskellNone
LanguageHaskell2010

Hledger.Data.Transaction

Contents

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

Transaction

txnTieKnot :: Transaction -> Transaction Source

Ensure a transaction's postings refer back to it, so that eg relatedPostings works 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.

isTransactionBalanced :: Maybe (Map Commodity 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

arithmetic

transactionPostingBalances :: Transaction -> (MixedAmount, MixedAmount, MixedAmount) Source

Get the sums of a transaction's real, virtual, and balanced virtual postings.

balanceTransaction :: Maybe (Map Commodity 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

misc.