Simon Michael
e090e0f949
add lower bound needed for aeson, to help cabal ( #1268 )
2020-06-23 14:55:42 -07:00
Stephen Morgan
b3cd865786
lib: Add fortnightly as a synonym for biweekly.
2020-06-23 06:48:20 -07:00
Simon Michael
e0fab4f882
Merge pull request #1256 from Xitian9/balanceReport
...
SMorgan:
This PR aims to accomplish two major goals:
- Get boring parent ellision working for multiBalanceReport
- Remove the special BalanceReport code, and just use multiBalanceReport
I believe it does both, with the following additional benefits:
A refactor of multiBalanceReportWith, to make the structure easier to follow, and with a clearer division of responsibilities
All decisions for how an account name is to be displayed are now made in multiBalanceReport, rather than scattered around the code base
Some miscellaneous improvements in account name rendering, including --drop now working with MultiBalanceReports, and addressing some of #373
Algorithmic changes:
- Using HashMap AccountName (Map DateSpan Account) instead of [[MixedAmount]] is new. I admit I didn't profile this change (though given the nubs and lookups, I thought it was appropriate), so I'm glad it produces a speedup.
- Producing the starting balances no longer calls the whole balanceReport, just the first few functions to get what it needs.
- displayedAccounts is completely rewritten. Perhaps one subtle thing to note is that in tree mode it no longer excludes nodes with zero inclusive balance unless they also have zero exclusive balance.
SMichael:
I'll mark the passing of the old multiBalanceReport, into which I poured many an hour :). It is in a way the heart (brain ?) of hledger - the key feature of ledgerlikes (balance report) and a key improvement introduced by hledger (tabular multiperiod balance reports). You have split that 300-line though well documented function into modular parts, which could be a little harder to understand in detail but are easier to understand in the large and more amenable to further refactoring. Then you fixed some old limitations (boring parent eliding in multi period balance reports, --drop with tree mode reports), allowing us to drop the old balanceReport and focus on just the new multiBalanceReport. And for representing the tabular data you replaced the semantically correct but inefficient list of lists with a map of maps, speeding up many-columned balance reports significantly (~40%). Last and not least you made it really easy to review. Thanks @Xitian9, great work.
2020-06-23 06:42:22 -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
7a74fc4f21
lib: Elide account if more components are dropped than exist.
2020-06-22 13:41:22 -07:00
Simon Michael
176011905e
;changelogs
2020-06-22 12:24:01 -07:00
Simon Michael
368297102d
;regen manuals
2020-06-22 12:20:14 -07:00
Dmitry Astapov
21349c161e
lib: only memoize in csv reader when there are more than 15 cond. blocks
2020-06-22 12:10:47 -07:00
Dmitry Astapov
8844ef1b5f
lib: put conditionalblockp pasrser first as it is a more common case
2020-06-22 12:10:47 -07:00
Dmitry Astapov
ed01e57b23
lib: tabular rules separator cannot be space
2020-06-22 12:10:47 -07:00
Dmitry Astapov
c397b90b5b
lib: memoize "if blocks that assign filed f" for 50% CSV reader speedup
2020-06-22 12:10:47 -07:00
Dmitry Astapov
834e9ec104
lib: condition tables in csv rules + tests
2020-06-22 12:10:47 -07: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
ce4de7aeb9
;doc: regen manuals
...
[ci skip]
2020-06-21 10:36:21 -07:00
Simon Michael
24996caaeb
bump to dev version
2020-06-21 10:35:52 -07:00
Simon Michael
6216258b41
;doc: finalise 1.18.1 changelogs
2020-06-21 10:22:53 -07:00
Simon Michael
128836f6f8
;changelogs
2020-06-20 18:24:15 -07:00
Simon Michael
6bfbecf662
journal: doc: document recursive wildcards
2020-06-20 17:12:30 -07:00
Simon Michael
e3cae4aadc
valuation: implement new --infer-value flag & semantics ( #1239 , #1253 )
2020-06-19 14:40:20 -07:00
Simon Michael
467210c796
;valuation: refactor, update, clean up
2020-06-19 14:40:20 -07:00
Simon Michael
122309ced7
;lib: Debug comment
2020-06-19 14:39:32 -07:00
Simon Michael
06d5014f5f
;lib: multibalancereport: apply debug output policy
2020-06-16 21:00:08 -07:00
Simon Michael
873bd57bcf
;regen manuals
2020-06-16 19:34:27 -07:00
Martin Michlmayr
7310951178
doc: fix typos
2020-06-16 19:13:18 -07:00
Simon Michael
562480efea
;lib: debug doc
2020-06-14 17:27:15 -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
Simon Michael
6e36ede9aa
;valuation: refactor
2020-06-14 15:48:16 -07:00
Simon Michael
c8773854f0
;doc: valuation: more cleanup
2020-06-13 12:41:02 -07:00
Simon Michael
6211a59144
;journal: doc: fix market prices link
2020-06-13 11:40:01 -07:00
Simon Michael
4bf4c62181
journal: default valuation commodity from P only, take 2 ( #1239 , #1253 )
2020-06-13 09:50:36 -07:00
Simon Michael
03b4b2dedc
journal: default valuation commodity comes from P directives only ( #1239 , #1253 )
2020-06-12 21:25:38 -07:00
Simon Michael
729e87066f
;cabal files
2020-06-07 13:00:40 -07:00
Simon Michael
aee6b49d36
;bump date in changelogs, installer
2020-06-07 12:45:55 -07:00
Simon Michael
b389ee98dd
;update tested-with
2020-06-07 11:59:36 -07:00
Simon Michael
e8e27821d9
;finalise changelogs
2020-06-07 11:51:40 -07:00
Simon Michael
09b6d44562
;manuals
2020-06-06 17:21:18 -07:00
Simon Michael
a54376e204
;regen cabal files
2020-06-06 17:20:13 -07:00
Simon Michael
19020939c9
;bump versions to 1.18
2020-06-06 17:18:15 -07:00
Simon Michael
fa077415d4
;edit changelogs
2020-06-06 16:53:41 -07:00
Simon Michael
c59565ca5b
;fix Json.hs with old GHCs
2020-06-06 15:33:04 -07:00
Simon Michael
b50c3a694c
;lib: note issue with Journal's JSON
2020-06-06 12:54:58 -07:00
Simon Michael
b86ced5ee9
lib: replace jsonPrettyText with toJsonText in Hledger.Data.Json
2020-06-06 12:54:58 -07:00
Simon Michael
d68650b2c1
;csv: doc: link to balance-type
2020-06-05 18:02:06 -07:00
Simon Michael
5757c386d8
;draft changelogs
2020-06-05 15:18:23 -07:00
Simon Michael
e5a0bddbe6
;regen manuals
2020-06-05 14:44:37 -07:00
Stephen Morgan
be25fe360e
lib: Parser now accepts .. as a synonym for to in date ranges.
2020-06-04 19:30:42 -07:00
Stephen Morgan
2f71da8838
lib: More consistent period formatting.
2020-06-04 19:30:42 -07:00
Simon Michael
057b79558c
;journal: edit the forecasting section ( #1250 )
2020-06-04 19:22:04 -07:00
Simon Michael
d963944c99
lib: add jsonPrettyText helper, depend on aeson-pretty
2020-06-04 15:12:57 -07:00
Simon Michael
00e9e844ac
journal: the include directive now accepts a file format prefix
...
This works with glob patterns too, applying the prefix to each path.
This can be useful when included files don't have the standard file
extension, eg:
include timedot:2020*.md
2020-06-04 13:59:26 -07:00
Dmitry Astapov
b7413edf22
lib: --forecast=PERIODICEXPR. Fixes #835 , #1236
2020-06-03 15:53:00 -07:00
Dmitry Astapov
cbf4029b8b
lib: test for issue with sign checking code + fix
2020-06-01 15:17:15 -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
Simon Michael
1087e790cf
;lib: refactor transactionCheckBalanced
2020-05-29 17:57:10 -07:00
Simon Michael
7bcc205622
lib: drop transactionPostingBalances
2020-05-29 17:33:53 -07:00
Simon Michael
0a5fa33f9d
split more long transaction balancing errors into lines; refactor
2020-05-29 16:31:15 -07:00
Simon Michael
924ec1c98d
journal: clearer transaction balancing errors; refactor
...
As mentioned by netvor on IRC, the unbalanced transaction error was
not too clear when postings all have the same sign.
Some other wording has been clarified, and the main error message is
now shown on multiple lines for readability (at the cost of
predictability/grepability..)
There's also a probably unnoticeable change: selecting which parts of
the error to show is now based on display precisions (reusing the
balanced check logic), rather than original precisions.
2020-05-29 16:07:58 -07:00
Simon Michael
61264cfdc0
lib: isNegativeMixedAmount handles all-negative multi-comm. amounts
2020-05-29 13:07:02 -07:00
Simon Michael
e6f9f09b41
;lib: refactor, consolidate, add transactionCheckBalanced
2020-05-29 11:57:48 -07:00
Henning Thielemann
ec27eb6b17
;web: maintain query when choosing a different 'inacct' account on the sidebar
2020-05-27 04:59:55 -07:00
Simon Michael
9417ee625e
;regen manuals
2020-05-25 17:49:01 -07:00
Simon Michael
93154e9251
update and clean up valuation docs ( #1239 )
2020-05-25 17:45:31 -07:00
Simon Michael
e1ddfc3a1b
lib: also infer market prices from transactions, like Ledger ( #1239 ) (WIP)
2020-05-25 17:45:31 -07:00
Dmitry Astapov
cbacef21eb
lib: multiBalanceReport derives query from ReportOpts
2020-05-25 15:50:14 -07:00
Simon Michael
40c296a446
lib: rename finaliseJournal -> journalFinalise
2020-05-23 09:45:35 -07:00
Simon Michael
2c1cbb7956
;csv: remove a comment breaking doctests
2020-05-12 18:01:05 -07:00
Simon Michael
f167c223a2
;csv: emphasize regular expressions features and doc
2020-05-10 13:03:09 -07:00
Simon Michael
6b2dfad98c
;csv: clarify that whitespace is not stripped when matching
2020-05-09 15:43:44 -07:00
Simon Michael
3919f0945a
;csv: correction, that field equality trick was just a fluke
2020-05-09 15:37:11 -07:00
Simon Michael
8f1b2a32fa
;csv: start regexp examples section, show field equality testing
2020-05-09 13:35:45 -07:00
Simon Michael
3ef2fc9567
show a clearer error message on encountering a malformed regexp
2020-05-07 17:33:05 -07:00
Simon Michael
647a77225d
;journal: doc: tweak
2020-05-05 10:37:51 -07:00
Simon Michael
4999827eaf
;journal: doc: mention blank/unindented lines in transactions
2020-05-05 10:26:50 -07:00
Simon Michael
6935c46b2c
;regen cabal files with latest stack/hpack (2.3.1/0.33.0)
2020-05-02 17:31:35 -07:00
Vladimir Sorokin
5b88bfb834
csv: Increase maximum number of postings in CSV reader from 9 to 99.
...
The ordering of journalfieldnames is changed in order to comply with the requirement stated in the comment:
"Names must precede any other name they contain, for the parser".
If left unchanged, "account1" would precede "account11", "account12", and so on, which would break the parsing.
With the new ordering, "account11" precedes "account1".
2020-04-26 14:52:02 -07:00
Simon Michael
df92c36679
;changelogs
2020-04-19 14:45:07 -07:00
Simon Michael
784d882e01
csv: combine amount assignments better, fix 1.17.1 regression ( #1226 )
2020-04-16 19:04:36 -07:00
Simon Michael
b149c0ba0c
;csv: tweak the too-many-amounts error more
2020-04-16 12:59:19 -07:00