Safe Haskell | None |
---|---|
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
- prrDepth :: Int
- 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
- prNegate :: Num b => PeriodicReport a b -> PeriodicReport a b
- prNormaliseSign :: Num b => NormalSign -> PeriodicReport a b -> PeriodicReport 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
BalanceType
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 PeridicReport
prNegate :: Num b => PeriodicReport a b -> PeriodicReport a b Source #
Flip the sign of all amounts in a PeriodicReport.
prNormaliseSign :: Num b => NormalSign -> PeriodicReport a b -> PeriodicReport a b Source #
Given a PeriodicReport and its normal balance sign, if it is known to be normally negative, convert it to normally positive.