hledger-lib-0.12: Core types and utilities for working with hledger (or c++ ledger) data.

Hledger.Data.Types

Description

Most data types are defined here to avoid import cycles. Here is an overview of the hledger data model:

 Journal                  -- a journal is derived from one or more data files. It contains..
  [Transaction]           -- journal transactions, which have date, status, code, description and..
   [Posting]              -- multiple account postings (entries), which have account name and amount.
  [HistoricalPrice]       -- historical commodity prices

 Ledger                   -- a ledger is derived from a journal, by applying a filter specification and doing some further processing. It contains..
  Journal                 -- the filtered journal, containing only the transactions and postings we are interested in
  Tree AccountName        -- account names referenced in the journal's transactions, as a tree
  Map AccountName Account -- per-account postings and balances from the journal's transactions, as a  map from account name to account info

For more detailed documentation on each type, see the corresponding modules.

Evolution of transaction/entry/posting terminology:

  • ledger 2: entries contain transactions
  • hledger 0.4: Entrys contain RawTransactions (which are flattened to Transactions)
  • ledger 3: transactions contain postings
  • hledger 0.5: LedgerTransactions contain Postings (which are flattened to Transactions)
  • hledger 0.8: Transactions contain Postings (referencing Transactions..)

Synopsis

Documentation

data Side Source

Constructors

L 
R 

Instances

data Commodity Source

Constructors

Commodity 

Fields

symbol :: String

the commodity's symbol display preferences for amounts of this commodity

side :: Side

should the symbol appear on the left or the right

spaced :: Bool

should there be a space between symbol and quantity

comma :: Bool

should thousands be comma-separated

precision :: Int

number of decimal places to display

data Amount Source

Constructors

Amount 

Fields

commodity :: Commodity
 
quantity :: Double
 
price :: Maybe MixedAmount

unit price/conversion rate for this amount at posting time

data Posting Source

Constructors

Posting 

Fields

pstatus :: Bool
 
paccount :: AccountName
 
pamount :: MixedAmount
 
pcomment :: String
 
ptype :: PostingType
 
ptransaction :: Maybe Transaction

this posting's parent transaction (co-recursive types). Tying this knot gets tedious, Maybe makes it easier/optional.

Instances

data Transaction Source

Constructors

Transaction 

Fields

tdate :: Day
 
teffectivedate :: Maybe Day
 
tstatus :: Bool
 
tcode :: String
 
tdescription :: String
 
tcomment :: String
 
tpostings :: [Posting]

this transaction's postings (co-recursive types).

tpreceding_comment_lines :: String
 

data Account Source

Constructors

Account 

Fields

aname :: AccountName
 
apostings :: [Posting]

postings in this account

abalance :: MixedAmount

sum of postings in this account and subaccounts

Instances

data FilterSpec Source

A generic, pure specification of how to filter transactions and postings.

Constructors

FilterSpec 

Fields

datespan :: DateSpan

only include if in this date span

cleared :: Maybe Bool

only include if cleared/uncleared/don't care

real :: Bool

only include if real/don't care

empty :: Bool

include if empty (ie amount is zero)

costbasis :: Bool

convert all amounts to cost basis

acctpats :: [String]

only include if matching these account patterns

descpats :: [String]

only include if matching these description patterns

whichdate :: WhichDate

which dates to use (actual or effective)

depth :: Maybe Int
 

Instances