Stephen Morgan
db97fae348
lib: Add documentation for CBCSubreportSpec.
2020-10-23 16:15:41 -07:00
Stephen Morgan
795134777c
lib: Add Functor instance for CompoundPeriodicReport.
2020-10-23 16:15:41 -07:00
Stephen Morgan
affc8d10f2
lib: Generalise CBCSubreportSpec to allow more subreport control.
2020-10-23 16:15:41 -07:00
Stephen Morgan
6e65d4e071
lib: Export some MultiBalanceReport helper functions.
2020-10-23 16:15:41 -07:00
Stephen Morgan
c5abefc72f
lib: Add documentation for ReportSpec.
2020-10-23 14:14:11 -07:00
Stephen Morgan
260283e2f1
lib,cli,ui,web: Introduce ReportSpec, which holds ReportOpts, the day of
...
the report, and the parsed Query.
2020-10-23 14:14:11 -07:00
Stephen Morgan
19ab222599
lib,cli: Remove old impure ReportOpts date functions.
2020-10-23 14:14:11 -07:00
Stephen Morgan
ff0c5bc743
lib,ui: Store the original query string in ReportOpts, provide a function for regenerating ReportOpts.
2020-10-23 14:14:11 -07:00
Stephen Morgan
64e3e5c54d
lib: Improve documentation for StringFormat, remove type alias for Valuation.
2020-10-23 14:14:11 -07:00
Stephen Morgan
1171c23eee
lib,cli,ui: Ensure ReportOpts always has today_ set.
2020-10-23 14:14:11 -07:00
Stephen Morgan
efc9758f82
lib: Make sure reportspan doesn't interfere with correctly determining valuation date.
2020-10-23 14:14:11 -07:00
Stephen Morgan
c45663d41d
lib,cli: Store parsed Query in ReportOpts, rather than an unparsed
...
String.
2020-10-23 14:14:11 -07:00
Stephen Morgan
103308e795
lib,cli: Store StringFormat in ReportOpts, rather than unparsed String.
...
StringFormat now also takes an optional overline width, which is
currently only used by defaultBalanceLineFormat.
2020-10-23 14:14:11 -07:00
Stephen Morgan
f76cdc4317
lib: Remove checkReportOpts and checkRawOpts.
...
checkRawOpts has been a no-op for at least four years, and
checkReportOpts only makes sure that depth_ is positive, which is taken
care of by the maybeposintopt parser.
2020-10-23 14:14:11 -07:00
Simon Michael
58f989715a
Replace our stringly Regex with a safer compiled Regexp type
...
This PR #1330 , addressing #1312 (parseQuery is partial) and #1245
(internal server error).
User-visible changes:
- hledger-web now handles malformed regular expressions
(eg, a query consisting of the single character `?`) gracefully,
showing a tidy error message instead "internal server error".
API/internal changes:
- The Regex type alias has been replaced by the Regexp ADT, which
contains both the compiled regular expression (so is guaranteed to
be usable at runtime) and the original string (so can be serialised,
printed, compared, etc.) A Regexp also knows whether is it case
sensitive or case insensitive. The Hledger.Utils.Regex api has changed.
- Typeable and Data instances are no longer derived for hledger's
data types; they were redundant/no longer needed
- NFData instances are no longer derived for hledger's data types.
This speeds up a full build by roughly 7%. But it means we can't
deep-evaluate hledger values, or time hledger code with Criterion.
https://github.com/simonmichael/hledger/pull/1330#issuecomment-684075129
has some ideas on this.
- Query no longer has a custom Show instance
- Some internal use of regexps was replaced by text replacement or
parsers.
- Hledger.Utils.String: quoteIfNeeded now actually escapes quotes in
strings; dropped escapeQuotes
- Hledger.Utils.Tree: dropped some old utilities
- dropped some obsolete code for the old --display option
Merge branch 'regexp' into master
2020-09-01 10:33:33 -07:00
Stephen Morgan
5b647902c9
lib: Filter starting balances by subreport query in compoundBalanceReportWith.
2020-08-31 09:07:11 -07:00
Stephen Morgan
20b39a5dd0
lib: Remove unused --display code.
...
This was dropped back in 2014, and getting rid of this removes a use of
regular expressions.
2020-08-31 20:45:37 +10:00
Stephen Morgan
af31d6e140
lib,cli,ui: Remove redundant Typeable and Data instances.
...
Also add some explicit import lists.
2020-08-31 15:41:30 +10:00
Stephen Morgan
e5371d5a6a
lib,cli,ui,web: Make Regexp a wrapper for Regex.
2020-08-31 12:04:45 +10:00
Stephen Morgan
f6fa76bba7
lib,cli: Get rid of magic values for asprecision, use a sum type instead.
2020-08-30 23:00:35 +10:00
Stephen Morgan
371b349b2e
lib,cli: Replace parsedate and mkdatespan with direct applications of fromGregorian, transaction now takes Day instead of a date string.
2020-08-29 15:08:28 -07:00
Stephen Morgan
32e184f9a8
lib: Elide boring parents in tree mode even when using --empty.
2020-08-11 17:24:50 -07:00
Simon Michael
3f55c23603
;review, tag all error calls with an easier to find PARTIAL: comment ( #1312 )
2020-08-05 16:08:33 -07:00
Simon Michael
242c05fc9a
lib, journal: parseQuery, modifyTransactions are now total ( #1312 )
...
modifyTransactions now also requires a reference date, for parsing queries.
Relative dates are now permitted in auto posting rules.
2020-08-05 13:44:04 -07:00
Simon Michael
d738ca8c60
;lib: cleanups
2020-07-19 06:13:38 -07:00
Simon Michael
e057857c04
;lib: CBCSubreportSpec note
2020-07-17 10:02:14 -07:00
Stephen Morgan
30f02b0882
lib: account name clipping takes Maybe Int as depth.
2020-07-17 07:41:27 -07:00
Stephen Morgan
51ea6d9f25
lib: Make queryDepth return Maybe Int.
2020-07-16 10:05:53 -07:00
Simon Michael
3452270241
cli: --color/--colour option; smart emacs, windows autodetection ( #1296 )
2020-07-14 12:08:36 -07:00
Simon Michael
9198449ee3
areg: an account transaction register like the ones in ui/web ( #1294 )
...
;areg: debug output
;areg: show a title indicating which account was picked
This might be a bit of a pain for scripting, but otherwise it can be
quite confusing if your argument matches an account you didn't expect.
;areg: improve CSV headings
;areg: show at most two commodities per amount
2020-07-14 10:24:57 -07:00
Simon Michael
3f86bd545f
lib, ui, web: stricter accountTransactionsReport filtering
...
accountTransactionsReport now filters transactions more thoroughly, so
eg transactions dated outside the report period will not be shown.
Previously the transaction would be shown if it had any posting dated
inside the report period. Possibly some other filter criteria now get
applied that didn't before. I think on balance this will give slightly
preferable results.
2020-07-14 10:22:14 -07:00
Simon Michael
febd8bb457
lib: postingsReport: follow debug levels policy
2020-07-13 11:53:05 -07:00
Stephen Morgan
463eee7bf4
lib: Replace {pr,prr}Negate with fmap negate.
2020-07-10 09:08:03 -07:00
Simon Michael
f518da747c
balcmds: avoid short month names in multi-year monthly reports
2020-07-09 12:56:46 -07:00
Simon Michael
f4991d05b4
lib: list exports of Hledger.Reports.BudgetReport
2020-07-09 12:55:04 -07:00
Simon Michael
23bef9a01b
;refactor: extracted reportPeriodName for making report headings
2020-07-09 12:54:20 -07:00
Simon Michael
a89a4e1b42
bal --budget: show end-date column headings when appropriate
...
bal --budget was always showing the period as column heading,
as if for a change report. With --cumulative or --historical
it should show the end date, like other balance reports. Cf
https://hledger.org/hledger.html#multicolumn-balance-report .
2020-07-09 11:49:19 -07:00
Stephen Morgan
f5e1fb2625
lib: Refactor BudgetReport to re-use MultiBalanceReport code.
2020-07-07 18:46:34 -07:00
Stephen Morgan
bfda10ff20
lib: Refactor MultiBalanceReport row sorting, make sure totals are calculated after pruning.
2020-07-07 18:46:34 -07:00
Stephen Morgan
bde4d7e2e4
lib: Use last column of historical balance as total. Use totals for balanceReport.
2020-07-07 17:56:38 -07:00
Stephen Morgan
1425301a8c
lib, cli: Use --flat as the default mode for all reports.
2020-07-07 15:49:08 -07:00
Stephen Morgan
df84a417d7
doc: Remove references to old limitations of boring parent ellision.
2020-07-07 15:49:08 -07:00
Simon Michael
25c15d4bab
bal --budget: elide multicommodity amounts
2020-07-05 06:59:16 -07:00
Simon Michael
44c3eb1904
add a color argument to most amount show helpers, drop cshow variants
...
This is an API change, but it seems better than having additional
colour-supporting variants and trying to avoid duplicated code.
I stopped short of changing showAmount, so cshowAmount still exists.
2020-07-05 06:59:16 -07:00
Stephen Morgan
c811ea4c7b
lib, cli, ui, web: intopt and friends now make sure their arguments fit
...
inside bounds.
2020-07-03 12:35:51 -07:00
Stephen Morgan
c96947284e
lib: Minor refactor.
2020-07-03 12:35:51 -07:00
Stephen Morgan
4fc72328d2
lib, cli: Introduce convienience function compoundBalanceReport.
2020-06-28 07:29:49 -07:00
Stephen Morgan
604868cea5
lib, cli: Move CompoundBalanceReport into ReportTypes, compoundReportWith into MultiBalanceReport, share postings amongst subreports.
2020-06-28 07:29:49 -07:00
Stephen Morgan
d09a90b38b
lib: Refactor multiBalanceReportWith into getPostingsbyColumn and generateMultiBalanceReport.
2020-06-28 07:29:49 -07:00
Stephen Morgan
e089358758
lib: Using --drop in tree mode with boring parent ellision no longer considers all parents boring. Add tests to check this fact.
2020-06-25 18:05:50 -07:00
Stephen Morgan
015492553e
lib: Move unifyMixedAmount to Hledger.Data.Amount, make it return Maybe Amount, export it.
2020-06-24 10:24:11 -07:00
Stephen Morgan
ded4f42218
lib: multiBalanceReport: Accounts with no subaccounts are never interesting parents, even if no_elide_ is set.
2020-06-23 13:19:52 +10:00
Stephen Morgan
826faa18c2
lib: Tweaks to work with stack-8.2.
2020-06-22 23:08:22 +10:00
Stephen Morgan
5168d136ed
lib: multiBalanceReport: Enable --drop for tree mode.
2020-06-22 22:28:08 +10:00
Stephen Morgan
fcaec1540a
lib: multiBalanceReport: Remove unnecessary addition of parent accounts.
2020-06-22 22:27:11 +10:00
Stephen Morgan
e079c8b808
lib: multiBalanceReport: Remove old balanceReport code, update some tests.
2020-06-22 22:27:09 +10:00
Stephen Morgan
edb28d51c5
lib: multiBalanceReport: Get boring parent ellision working for multiBalanceReport.
2020-06-22 22:25:23 +10:00
Stephen Morgan
cd41404fd4
lib: multiBalanceReport: Get --drop working with multiBalanceReports.
2020-06-22 22:21:31 +10:00
Stephen Morgan
6467c252c7
lib: multiBalanceReport: Move responsibility for display name into displayedAccounts
2020-06-22 22:21:30 +10:00
Stephen Morgan
5f0918217a
multibalanceReport: Move responsibility for determining displayed name in multiBalanceReportWith, not at point of consumption.
2020-06-22 22:20:09 +10:00
Stephen Morgan
0dedcfbe15
lib: multiBalanceReport: Miscellaneous simplifications.
2020-06-22 22:11:54 +10:00
Stephen Morgan
1e7e80504f
lib: multiBalanceReport: Keep Account around longer so we can use both aibalance and aebalance.
2020-06-22 22:10:24 +10:00
Stephen Morgan
0e89a389d6
lib: multiBalanceReport: Split displayedAccounts, calculateReportQuery into separate functions.
2020-06-22 22:07:55 +10:00
Stephen Morgan
b106850391
lib: multiBalanceReport: Split postprocessReport and calculateTotalsRow into separate functions.
2020-06-22 21:59:15 +10:00
Stephen Morgan
baa5844d4e
lib: multiBalanceReport: Change indentation.
2020-06-22 21:54:38 +10:00
Stephen Morgan
0b30b2f9fb
lib: multiBalanceReport: Split sortRows into a separate function.
2020-06-22 21:51:38 +10:00
Stephen Morgan
7a9bf998e5
lib: multiBalanceReport: Split buildReportRows into a separate function, remove unnecessary query and valuation.
2020-06-22 21:50:27 +10:00
Stephen Morgan
a81c6d0397
lib: multiBalanceReport: Split accumValueAmounts into a separate function.
2020-06-22 21:48:20 +10:00
Stephen Morgan
b2bed03b4c
lib: multiBalanceReport: Don't import BalanceReport in MultiBalanceReport.
2020-06-22 21:45:42 +10:00
Stephen Morgan
0dcfddd201
lib: multiBalanceReport: Break calculateAccountChanges and acctChangesFromPostings separate functions.
2020-06-22 21:43:30 +10:00
Stephen Morgan
a72c4f285b
lib: multiBalanceReport: Break calculateColumns into a separate function.
2020-06-22 21:39:41 +10:00
Stephen Morgan
fc6a30b234
lib: multiBalanceReport: Break calculateColSpans into a separate function.
2020-06-22 21:38:16 +10:00
Stephen Morgan
44dcd613e8
lib: multiBalanceReport: Break getPostings and makeReportQuery into separate functions.
2020-06-22 21:36:30 +10:00
Stephen Morgan
f21bf53610
lib: multiBalanceReport: Break startingBalances into separate function.
2020-06-22 21:33:16 +10:00
Simon Michael
e3cae4aadc
valuation: implement new --infer-value flag & semantics ( #1239 , #1253 )
2020-06-19 14:40:20 -07:00
Simon Michael
06d5014f5f
;lib: multibalancereport: apply debug output policy
2020-06-16 21:00:08 -07:00
Simon Michael
684cb45e1a
tweak debug levels, document some guidelines
...
Beginnings of a project-wide policy for what output to show at
each debug level, for now. Later we'll want more flexibility,
eg filtering by topic.
2020-06-14 17:17:09 -07:00
Dmitry Astapov
b7413edf22
lib: --forecast=PERIODICEXPR. Fixes #835 , #1236
2020-06-03 15:53:00 -07:00
Simon Michael
97f2235bca
;lib: refactor amount cost functions
...
Rename costOfAmount -> amountCost, costOfMixedAmount -> mixedAmountCost,
drop amountToCost, mixedAmountToCost.
2020-05-31 15:48:08 -07:00
Simon Michael
660ba7e1d9
lib: clarify zero-checking function names
...
isZeroAmount -> amountLooksZero
isReallyZeroAmount -> amountIsZero
isZeroMixedAmount -> mixedAmountLooksZero
isReallyZeroMixedAmount -> mixedAmountIsZero
isReallyZeroMixedAmountCost dropped
2020-05-29 18:57:22 -07:00
Dmitry Astapov
cbacef21eb
lib: multiBalanceReport derives query from ReportOpts
2020-05-25 15:50:14 -07:00
Simon Michael
2a5f7819af
bs,cf,is,bal,print,reg: support json output format
2020-02-24 17:49:53 -08:00
Simon Michael
7f16d23898
;refactor: extract --value=then error message
2020-02-24 17:49:53 -08:00
Simon Michael
ae9d8d6e56
;add then and t to --value's error message
...
[ci skip]
2020-02-10 12:40:02 -08:00
Simon Michael
aa96b41efe
print, register: add --value=then, valuing at each posting's date
...
Currently this will give an error with other kinds of report.
2020-02-10 08:20:39 -08:00
Stephen Morgan
228edf6ba6
Don't store leaf name in PeriodReport.
...
Calculate at the point of consumption instead.
2020-01-04 21:15:42 -08:00
Stephen Morgan
2e20d0717f
lib: Generalise PeriodicReport to be polymorphic in the account labels.
2020-01-04 17:23:17 -08:00
Stephen Morgan
88dc619257
lib: Use records instead of tuples in PeriodicReport.
2020-01-04 17:23:17 -08:00
Stephen Morgan
beb8b6d7c8
lib: Use PeriodicReport in place of MultiBalanceReport.
2020-01-04 17:23:17 -08:00
Stephen Morgan
74778efcf5
Use nubSort instead of nub . sort.
2020-01-04 08:31:10 -08:00
Stephen Morgan
38904372b2
Calculate MultiReportBalance columns more efficiently.
...
Only calculate posting date once for each posting, and calculate their
columns instead of checking each DateSpan separately.
2020-01-03 16:11:46 -08:00
Simon Michael
47567cd770
;fix some warnings with GHC 8.10 alpha
...
hledger is GHC 8.10 ready!
2019-12-14 17:30:19 -08:00
Simon Michael
2b2a0b3cf8
;tests: use "test" alias for testCase everywhere
...
Easier to type and read, and a little clearer to my eyes;
"testCase" implies a single case, but it can contain many assertions.
2019-11-28 15:33:33 -08:00
Simon Michael
b36f6df110
tests: port all unit tests to tasty, second pass ( #1090 )
...
Hledger.Util.Tests helpers have been cleaned up, and test names are
now shown.
Tests have been cleaned up a bit. Some groups of unnamed tests have
been collapsed into a single named test containing a sequence of
assertions. The test command counts named tests, not assertions, so
the reported unit test count has dropped from 199 to 188.
2019-11-27 13:17:34 -08:00
Simon Michael
13a3542464
tests: port all unit tests to tasty, first cut ( #1090 )
...
easytest is not actively maintained and requires an old version of
hedgehog which does not support base-compat 0.11 & ghc 8.8.
This is still using the old easytest helpers, and not displaying test
names properly.
2019-11-27 12:43:43 -08:00
Simon Michael
332624f9fa
ui: B and V keys toggle display of cost, value
2019-11-21 17:33:04 -08:00
Mykola Orliuk
5287fe671b
;all: hide RawOpts internals
...
This way we can ensure we always use only functions from RawOptions.
2019-11-18 17:38:39 -08:00
Simon Michael
4cb2a03f7f
;lib: more docs for unifyMixedAmount
...
[ci skip]
2019-11-18 17:22:42 -08:00
Michael Kainer
79ca4a767e
cli: Add -% to compound balance commands
...
This commit introduces the commandline argument -%/--percent to show
percentages of the column's total instead of the absolute amounts for
each account in reports. The signs of the values are preserved.
This option is especially useful for the balance and incomestatement
commands.
If there are multiple commodities involved in a report hledger bails
with an error message. This can be avoided by using --cost. Also note
that if one uses -% with the balance command the chances are high that
all numbers are 0. This is due to the fact that by default balance sums
up to zero. If one wants to use -% in a meaningful way with balance one
has to add a query.
In order to keep the implementation as simple as possible --tree has no
influence over how the percentages are calculated, i.e., the percentages
always represent the fraction of the columns total. If one wants to know
the percentages relative to a parent account, one has to use a query to
narrow down the accounts.
2019-11-18 17:10:59 -08:00
Simon Michael
2e3b51c03f
;lib: journalConvertAmountsToCost -> journalToCost
2019-10-19 19:58:27 -07:00