lib: new generic PeriodicReport, and some report-related type aliases
This commit is contained in:
parent
d2f5d7101e
commit
4b3c6afe75
@ -10,6 +10,7 @@ javascript, or whatever.
|
|||||||
|
|
||||||
module Hledger.Reports (
|
module Hledger.Reports (
|
||||||
module Hledger.Reports.ReportOptions,
|
module Hledger.Reports.ReportOptions,
|
||||||
|
module Hledger.Reports.ReportTypes,
|
||||||
module Hledger.Reports.EntriesReport,
|
module Hledger.Reports.EntriesReport,
|
||||||
module Hledger.Reports.PostingsReport,
|
module Hledger.Reports.PostingsReport,
|
||||||
module Hledger.Reports.TransactionsReports,
|
module Hledger.Reports.TransactionsReports,
|
||||||
@ -25,6 +26,7 @@ where
|
|||||||
import Test.HUnit
|
import Test.HUnit
|
||||||
|
|
||||||
import Hledger.Reports.ReportOptions
|
import Hledger.Reports.ReportOptions
|
||||||
|
import Hledger.Reports.ReportTypes
|
||||||
import Hledger.Reports.EntriesReport
|
import Hledger.Reports.EntriesReport
|
||||||
import Hledger.Reports.PostingsReport
|
import Hledger.Reports.PostingsReport
|
||||||
import Hledger.Reports.TransactionsReports
|
import Hledger.Reports.TransactionsReports
|
||||||
|
|||||||
40
hledger-lib/Hledger/Reports/ReportTypes.hs
Normal file
40
hledger-lib/Hledger/Reports/ReportTypes.hs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{- |
|
||||||
|
New common report types, used by the BudgetReport for now, perhaps all reports later.
|
||||||
|
-}
|
||||||
|
|
||||||
|
module Hledger.Reports.ReportTypes
|
||||||
|
where
|
||||||
|
|
||||||
|
import Data.Decimal
|
||||||
|
import Hledger.Data
|
||||||
|
|
||||||
|
type Percentage = Decimal
|
||||||
|
|
||||||
|
type Change = MixedAmount -- ^ A change in balance during a certain period.
|
||||||
|
type Balance = MixedAmount -- ^ An ending balance as of some date.
|
||||||
|
type Total = MixedAmount -- ^ The sum of 'Change's in a report or a report row. Does not make sense for 'Balance's.
|
||||||
|
type Average = MixedAmount -- ^ The average of 'Change's or 'Balance's in a report or report row.
|
||||||
|
|
||||||
|
-- | A generic tabular report of some value, where each row corresponds to an account
|
||||||
|
-- and each column is a date period. The column periods are usually consecutive subperiods
|
||||||
|
-- formed by splitting the overall report period by some report interval (daily, weekly, etc.)
|
||||||
|
-- Depending on the value type, this can be a report of balance changes, ending balances,
|
||||||
|
-- budget performance, etc. Successor to MultiBalanceReport.
|
||||||
|
data PeriodicReport a =
|
||||||
|
PeriodicReport
|
||||||
|
( [DateSpan] -- ^ The subperiods formed by spliting the overall report period by the report interval.
|
||||||
|
-- For ending-balance reports, only the end date is significant.
|
||||||
|
-- Usually displayed as report columns.
|
||||||
|
, [PeriodicReportRow a] -- ^ One row per account in the report.
|
||||||
|
, PeriodicReportRow a -- ^ The grand totals row. The account name in this row is always empty.
|
||||||
|
)
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
type PeriodicReportRow a =
|
||||||
|
( AccountName -- ^ A full account name.
|
||||||
|
, AccountName -- ^ Shortened form of the account name to display in tree mode. Usually the leaf name, possibly with parent accounts prefixed.
|
||||||
|
, Int -- ^ Indent level for displaying this account name in tree mode. 0, 1, 2...
|
||||||
|
, [a] -- ^ The data value for each subperiod.
|
||||||
|
, a -- ^ The total of this row's values.
|
||||||
|
, a -- ^ The average of this row's values.
|
||||||
|
)
|
||||||
@ -131,6 +131,8 @@ library
|
|||||||
Hledger.Utils.UTF8IOCompat
|
Hledger.Utils.UTF8IOCompat
|
||||||
Text.Megaparsec.Compat
|
Text.Megaparsec.Compat
|
||||||
other-modules:
|
other-modules:
|
||||||
|
Hledger.Reports.BudgetReport
|
||||||
|
Hledger.Reports.ReportTypes
|
||||||
Paths_hledger_lib
|
Paths_hledger_lib
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
||||||
@ -209,10 +211,12 @@ test-suite doctests
|
|||||||
Hledger.Reports
|
Hledger.Reports
|
||||||
Hledger.Reports.BalanceHistoryReport
|
Hledger.Reports.BalanceHistoryReport
|
||||||
Hledger.Reports.BalanceReport
|
Hledger.Reports.BalanceReport
|
||||||
|
Hledger.Reports.BudgetReport
|
||||||
Hledger.Reports.EntriesReport
|
Hledger.Reports.EntriesReport
|
||||||
Hledger.Reports.MultiBalanceReports
|
Hledger.Reports.MultiBalanceReports
|
||||||
Hledger.Reports.PostingsReport
|
Hledger.Reports.PostingsReport
|
||||||
Hledger.Reports.ReportOptions
|
Hledger.Reports.ReportOptions
|
||||||
|
Hledger.Reports.ReportTypes
|
||||||
Hledger.Reports.TransactionsReports
|
Hledger.Reports.TransactionsReports
|
||||||
Hledger.Utils
|
Hledger.Utils
|
||||||
Hledger.Utils.Color
|
Hledger.Utils.Color
|
||||||
@ -301,10 +305,12 @@ test-suite easytests
|
|||||||
Hledger.Reports
|
Hledger.Reports
|
||||||
Hledger.Reports.BalanceHistoryReport
|
Hledger.Reports.BalanceHistoryReport
|
||||||
Hledger.Reports.BalanceReport
|
Hledger.Reports.BalanceReport
|
||||||
|
Hledger.Reports.BudgetReport
|
||||||
Hledger.Reports.EntriesReport
|
Hledger.Reports.EntriesReport
|
||||||
Hledger.Reports.MultiBalanceReports
|
Hledger.Reports.MultiBalanceReports
|
||||||
Hledger.Reports.PostingsReport
|
Hledger.Reports.PostingsReport
|
||||||
Hledger.Reports.ReportOptions
|
Hledger.Reports.ReportOptions
|
||||||
|
Hledger.Reports.ReportTypes
|
||||||
Hledger.Reports.TransactionsReports
|
Hledger.Reports.TransactionsReports
|
||||||
Hledger.Utils
|
Hledger.Utils
|
||||||
Hledger.Utils.Color
|
Hledger.Utils.Color
|
||||||
@ -394,10 +400,12 @@ test-suite hunittests
|
|||||||
Hledger.Reports
|
Hledger.Reports
|
||||||
Hledger.Reports.BalanceHistoryReport
|
Hledger.Reports.BalanceHistoryReport
|
||||||
Hledger.Reports.BalanceReport
|
Hledger.Reports.BalanceReport
|
||||||
|
Hledger.Reports.BudgetReport
|
||||||
Hledger.Reports.EntriesReport
|
Hledger.Reports.EntriesReport
|
||||||
Hledger.Reports.MultiBalanceReports
|
Hledger.Reports.MultiBalanceReports
|
||||||
Hledger.Reports.PostingsReport
|
Hledger.Reports.PostingsReport
|
||||||
Hledger.Reports.ReportOptions
|
Hledger.Reports.ReportOptions
|
||||||
|
Hledger.Reports.ReportTypes
|
||||||
Hledger.Reports.TransactionsReports
|
Hledger.Reports.TransactionsReports
|
||||||
Hledger.Utils
|
Hledger.Utils
|
||||||
Hledger.Utils.Color
|
Hledger.Utils.Color
|
||||||
|
|||||||
@ -122,8 +122,10 @@ library:
|
|||||||
- Hledger.Read.TimeclockReader
|
- Hledger.Read.TimeclockReader
|
||||||
- Hledger.Reports
|
- Hledger.Reports
|
||||||
- Hledger.Reports.ReportOptions
|
- Hledger.Reports.ReportOptions
|
||||||
|
- Hledger.Reports.ReportTypes
|
||||||
- Hledger.Reports.BalanceHistoryReport
|
- Hledger.Reports.BalanceHistoryReport
|
||||||
- Hledger.Reports.BalanceReport
|
- Hledger.Reports.BalanceReport
|
||||||
|
- Hledger.Reports.BudgetReport
|
||||||
- Hledger.Reports.EntriesReport
|
- Hledger.Reports.EntriesReport
|
||||||
- Hledger.Reports.MultiBalanceReports
|
- Hledger.Reports.MultiBalanceReports
|
||||||
- Hledger.Reports.PostingsReport
|
- Hledger.Reports.PostingsReport
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user