Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
New common report types, used by the BudgetReport for now, perhaps all reports later.
Synopsis
- data PeriodicReport a b = PeriodicReport {
- prDates :: [DateSpan]
- prRows :: [PeriodicReportRow a b]
- prTotals :: PeriodicReportRow () b
- data PeriodicReportRow a b = PeriodicReportRow {
- prrName :: a
- prrAmounts :: [b]
- prrTotal :: b
- prrAverage :: b
- type Percentage = Decimal
- type Change = MixedAmount
- type Balance = MixedAmount
- type Total = MixedAmount
- type Average = MixedAmount
- periodicReportSpan :: PeriodicReport a b -> DateSpan
- prMapName :: (a -> b) -> PeriodicReport a c -> PeriodicReport b c
- prMapMaybeName :: (a -> Maybe b) -> PeriodicReport a c -> PeriodicReport b c
- data CompoundPeriodicReport a b = CompoundPeriodicReport {
- cbrTitle :: Text
- cbrDates :: [DateSpan]
- cbrSubreports :: [(Text, PeriodicReport a b, Bool)]
- cbrTotals :: PeriodicReportRow () b
- data CBCSubreportSpec a = CBCSubreportSpec {}
- data DisplayName = DisplayName {
- displayFull :: AccountName
- displayName :: AccountName
- displayIndent :: NumberOfIndents
- flatDisplayName :: AccountName -> DisplayName
- treeDisplayName :: AccountName -> DisplayName
- prrShowDebug :: PeriodicReportRow DisplayName MixedAmount -> String
- prrFullName :: PeriodicReportRow DisplayName a -> AccountName
- prrDisplayName :: PeriodicReportRow DisplayName a -> AccountName
- prrIndent :: PeriodicReportRow DisplayName a -> Int
- prrAdd :: Semigroup b => PeriodicReportRow a b -> PeriodicReportRow a b -> PeriodicReportRow a b
Documentation
data PeriodicReport a b Source #
A periodic report is a generic tabular report, where each row corresponds to some label (usually an account name) and each column to a date period. The column periods are usually consecutive subperiods formed by splitting the overall report period by some report interval (daily, weekly, etc.). It has:
- a list of each column's period (date span)
- a list of rows, each containing:
- an account label
- the account's depth
- A list of amounts, one for each column. Depending on the value type,
these can represent balance changes, ending balances, budget
performance, etc. (for example, see
BalanceAccumulation
and Hledger.Cli.Commands.Balance). - the total of the row's amounts for a periodic report, or zero for cumulative/historical reports (since summing end balances generally doesn't make sense).
- the average of the row's amounts
- the column totals, and the overall grand total (or zero for cumulative/historical reports) and grand average.
PeriodicReport | |
|
Instances
data PeriodicReportRow a b Source #
PeriodicReportRow | |
|
Instances
type Percentage = Decimal Source #
= MixedAmount | A change in balance during a certain period. |
= MixedAmount | An ending balance as of some date. |
= MixedAmount | The sum of |
periodicReportSpan :: PeriodicReport a b -> DateSpan Source #
Figure out the overall date span of a PeriodicReport
prMapName :: (a -> b) -> PeriodicReport a c -> PeriodicReport b c Source #
Map a function over the row names.
prMapMaybeName :: (a -> Maybe b) -> PeriodicReport a c -> PeriodicReport b c Source #
Map a function over the row names, possibly discarding some.
data CompoundPeriodicReport a b Source #
A compound balance report has:
- an overall title
- the period (date span) of each column
- one or more named, normal-positive multi balance reports, with columns corresponding to the above, and a flag indicating whether they increased or decreased the overall totals
- a list of overall totals for each column, and their grand total and average
It is used in compound balance report commands like balancesheet, cashflow and incomestatement.
CompoundPeriodicReport | |
|
Instances
data CBCSubreportSpec a Source #
Description of one subreport within a compound balance report. Part of a CompoundBalanceCommandSpec, but also used in hledger-lib.
CBCSubreportSpec | |
|
data DisplayName Source #
A full name, display name, and indent level for an account.
DisplayName | |
|
Instances
ToJSON DisplayName Source # | |
Defined in Hledger.Reports.ReportTypes toJSON :: DisplayName -> Value # toEncoding :: DisplayName -> Encoding # toJSONList :: [DisplayName] -> Value # toEncodingList :: [DisplayName] -> Encoding # omitField :: DisplayName -> Bool # | |
Show DisplayName Source # | |
Defined in Hledger.Reports.ReportTypes showsPrec :: Int -> DisplayName -> ShowS # show :: DisplayName -> String # showList :: [DisplayName] -> ShowS # | |
Eq DisplayName Source # | |
Defined in Hledger.Reports.ReportTypes (==) :: DisplayName -> DisplayName -> Bool # (/=) :: DisplayName -> DisplayName -> Bool # | |
Ord DisplayName Source # | |
Defined in Hledger.Reports.ReportTypes compare :: DisplayName -> DisplayName -> Ordering # (<) :: DisplayName -> DisplayName -> Bool # (<=) :: DisplayName -> DisplayName -> Bool # (>) :: DisplayName -> DisplayName -> Bool # (>=) :: DisplayName -> DisplayName -> Bool # max :: DisplayName -> DisplayName -> DisplayName # min :: DisplayName -> DisplayName -> DisplayName # |
flatDisplayName :: AccountName -> DisplayName Source #
Construct a display name for a list report, where full names are shown unindented.
treeDisplayName :: AccountName -> DisplayName Source #
Construct a display name for a tree report, where leaf names (possibly prefixed by boring parents) are shown indented).
prrFullName :: PeriodicReportRow DisplayName a -> AccountName Source #
Get the full canonical account name from a PeriodicReportRow containing a DisplayName.
prrDisplayName :: PeriodicReportRow DisplayName a -> AccountName Source #
Get the account display name from a PeriodicReportRow containing a DisplayName.
prrIndent :: PeriodicReportRow DisplayName a -> Int Source #
Get the indent level from a PeriodicReportRow containing a DisplayName.
prrAdd :: Semigroup b => PeriodicReportRow a b -> PeriodicReportRow a b -> PeriodicReportRow a b Source #
Add two PeriodicReportRows
, preserving the name of the first.