Commit Graph

798 Commits

Author SHA1 Message Date
Simon Michael
ec1b98434c reg: support --value-at=period with periodic reports (#329) 2019-05-04 12:22:00 -07:00
Simon Michael
dd8c403c81 ;cli: option help tweaks 2019-05-04 12:22:00 -07:00
Simon Michael
ebf5ed93f2 valuation: more thorough --value-at; document status (#329, #999)
This feature turns out to be quite involved, as valuation interacts
with the many report variations. Various bugs/specs have been
fixed/clarified relating to register's running total, balance totals
etc. Eg register's total should now be the sum of the posting amount
values, not the values of the original sums. Current level of support
has been documented.

When valuing at transaction date, we once again do early valuation of
all posting amounts, to get more correct results. variants. This means
--value-at=t can be slower than other valuation modes when there are
many transactions and many prices. This could be revisited for
optimisation when things are more settled.
2019-05-03 12:24:02 -07:00
Simon Michael
040f2ba1bf doc: cli: consistent examples styling
[ci skip]
2019-05-03 11:29:43 -07:00
Simon Michael
65934958f9 rename --value-date -> --value-at; --value-at implies -V 2019-04-26 12:08:31 -07:00
Simon Michael
9adae02973 print: add --value-date general option; implement for print -V 2019-04-26 12:08:31 -07:00
Simon Michael
c23fc8b671 speed up -V/--value by converting reports, not the journal (#999)
Instead of converting all journal amounts to value early on, we now
convert just the report amounts to value, before rendering.

This was basically how it originally worked (for the balance command),
but now it's built in to the four basic reports used by print,
register, balance and their variants - Entries, Postings, Balance,
MultiBalance - each of which now has its own xxValue helper.

This should mostly fix -V's performance when there are many
transactions and prices (the price lookups could still be optimised),
and allow more flexibility for report-specific value calculations.

+------------------------------------------++-----------------+-------------------+--------------------------+
|                                          || hledger.999.pre | hledger.999.1sort | hledger.999.after-report |
+==========================================++=================+===================+==========================+
| -f examples/1000x1000x10.journal bal -V  ||            1.08 |              0.96 |                     0.76 |
| -f examples/2000x1000x10.journal bal -V  ||            1.65 |              1.05 |                     0.73 |
| -f examples/3000x1000x10.journal bal -V  ||            2.43 |              1.58 |                     0.84 |
| -f examples/4000x1000x10.journal bal -V  ||            4.39 |              1.96 |                     0.93 |
| -f examples/5000x1000x10.journal bal -V  ||            7.75 |              2.99 |                     1.07 |
| -f examples/6000x1000x10.journal bal -V  ||           11.21 |              3.72 |                     1.16 |
| -f examples/7000x1000x10.journal bal -V  ||           16.91 |              4.72 |                     1.19 |
| -f examples/8000x1000x10.journal bal -V  ||           27.10 |              9.83 |                     1.40 |
| -f examples/9000x1000x10.journal bal -V  ||           39.73 |             15.00 |                     1.51 |
| -f examples/10000x1000x10.journal bal -V ||           50.72 |             25.61 |                     2.15 |
+------------------------------------------++-----------------+-------------------+--------------------------+

There's one new limitation, not yet resolved: -V once again can pick a
valuation date in the future, if no report end date is specified and
the journal has future-dated transactions. We prefer to avoid that,
but reports currently are pure and don't have access to today's date.
2019-04-23 17:39:01 -07:00
Simon Michael
1cacfcea28 lib: fix journalApplyValue test (#999) 2019-04-23 07:20:10 -07:00
Simon Michael
08d226aaf5 lib: add a test for journalApplyValue that times itself (#999)
This test prints the time elapsed (before the OK message).
Mainly to support current performance tuning
(make ghcid-test-Hledger.Cli.Utils.journalApplyValue),
but also for future reference.
2019-04-22 16:40:58 -07:00
Simon Michael
76b933641d rejigger Hledger.Cli tests to have correct prefix, add Cli.Utils 2019-04-22 12:47:28 -07:00
Simon Michael
028303acd7 lib: speed up -V by sorting market prices just once (#999)
-V is still quite a bit slower than no -V, but not as much as before:

+===========================================================++=======+
| hledger.999.pre -f examples/10000x10000x10.journal bal    ||  5.20 |
| hledger.999.pre -f examples/10000x10000x10.journal bal -V || 57.20 |
| hledger.999 -f examples/10000x10000x10.journal bal        ||  5.34 |
| hledger.999 -f examples/10000x10000x10.journal bal -V     || 17.50 |
+-----------------------------------------------------------++-------+
2019-04-20 13:12:53 -07:00
Simon Michael
6f4009d589 import: doc tweaks
[ci skip]
2019-04-19 15:44:06 -07:00
Simon Michael
ca79981f8d doc: regen command help
[ci skip]
2019-04-19 11:19:24 -07:00
Simon Michael
eb576ba5be import: document a problem with balance assignments
[ci skip]
2019-04-19 11:18:33 -07:00
Simon Michael
ab93eb4258 close: doc: fix typo
[ci skip]
2019-03-26 16:40:03 -07:00
Simon Michael
6c841a266d diff: help tweaks (cf #981) 2019-03-09 09:45:30 -08:00
Simon Michael
e57bf4a9f2 diff: make it show in commands list; export it (#981) 2019-03-04 12:01:34 -08:00
Gabriel Ebner
ceb193f85e cli: add diff command
This merges the external hledger-diff addon, which is now deprecated.
https://github.com/gebner/hledger-diff/
2019-03-04 11:39:11 -08:00
Jakub Zárybnický
6becbc78f3 cli, web, ui: Replace withJournalDo* variants 2019-03-01 05:42:30 -08:00
Simon Michael
a3ae68020f regen manuals
[ci skip]
2019-02-26 10:13:50 -08:00
Simon Michael
3dbd1378de bal: doc: clarify budget report differences; drop sorting limitation
[ci skip]
2019-02-24 21:09:59 -08:00
Simon Michael
0bc16d4af6 lib, cli, web: rename porigin -> poriginal 2019-02-20 20:23:54 -08:00
Jakob Schöttl
49f286dc70 Fix CLI help text 2019-02-17 06:55:01 -08:00
Simon Michael
03877057fb refactor: cli: commands: hlint clean 2019-02-14 05:15:49 -08:00
Simon Michael
17c4a47a85 regen cli help, manuals
[ci skip]
2019-02-14 05:15:49 -08:00
Simon Michael
d7a815fc08 commodities: add commodities command 2019-02-14 05:15:48 -08:00
Jakob Schöttl
ba1abae7c9 Add doc on --invert 2019-02-09 15:55:41 -08:00
Jakob Schöttl
161ca660dc Support register --invert option to negate amounts 2019-02-09 15:55:41 -08:00
Jakob Schöttl
98d7c073c7 Reduce simple lambda 2019-02-09 12:47:24 -08:00
Simon Michael
e89c3752c4 stats: tweak -o help, output format is not supported here
[ci skip]
2019-02-03 13:05:48 -08:00
Simon Michael
c959e555ad print, reg: restore -o, -O flags dropped during refactor (#967) 2019-02-03 13:04:59 -08:00
Simon Michael
86d5652e53 stop depending on here due to slow haskell-src-meta/stackage issues
Using file-embed or ordinary literals instead, for now.
2019-02-02 16:34:10 -08:00
Simon Michael
33d82fb657 fix: --forecast shouldn't force --auto on (#953, #959) 2019-02-01 11:43:24 -08:00
Simon Michael
d6e075dacd refactor journalModifyTransactions, modifyTransactions
API changes:

Hledger.Data.TransactionModifier
-transactionModifierToFunction
+modifyTransactions

Hledger.Read.Common.applyTransactionModifiers -> Hledger.Data.Journal.journalModifyTransactions
2019-02-01 11:31:04 -08:00
Simon Michael
4a9fa5cd38 internals: append rather than prepend forecasted txns 2019-02-01 11:29:22 -08:00
Simon Michael
5435150d39 doc: don't use sed; fix accidental dedenting of some lists (#961)
The sed code was showing an error message, not too precise.
Pandoc's lua filters to the rescue!

[ci skip]
2019-01-31 08:34:49 -08:00
Simon Michael
3474cb08bd cli: commands list: mention budgets
[ci skip]
2019-01-31 08:33:40 -08:00
Simon Michael
59739d1cd3 doc: command docs readme -> .md
[ci skip]
2019-01-30 17:59:42 -08:00
Simon Michael
845fdf8302 doc: update command docs readme 2019-01-30 17:58:23 -08:00
Simon Michael
c8246e7323 cli: command help: reduce width, line wrapping
cmdargs wraps any lines longer than 78 characters.  To (mostly) avoid
this, we now display verbatim blocks unindented, and some of
register's examples have been altered to make them fit.
2019-01-30 17:58:13 -08:00
Simon Michael
36246e4976 cli: commands list: reorder help lines
[ci skip]
2019-01-30 12:54:22 -08:00
Simon Michael
4c5ac4dd06 cli: fix command help, really render as plain text
pandoc thinks .txt is a markdown file apparently
2019-01-30 12:44:10 -08:00
Simon Michael
3baad5d729 cli: render command help as plain text, hiding markup
This means committing a bunch more generated files, but it's probably
worthwhile, so we can have both rich hyperlinked/styled command docs
and clean readable command help.
2019-01-30 10:41:39 -08:00
Simon Michael
88ef2abfff refactor: Commands 2019-01-30 09:09:52 -08:00
Simon Michael
8d6b5cc4f3 cli: commands list: fix addons being shown twice 2019-01-30 09:09:52 -08:00
Simon Michael
2442b4f46f refactor: hledgerCommandMode 2019-01-30 09:09:52 -08:00
Simon Michael
a23f391d7e cli: commands list: reorganise
[ci skip]
2019-01-28 12:48:15 -08:00
Simon Michael
469b715352 cli: commands list: update command descriptions 2019-01-28 10:23:39 -08:00
Simon Michael
a9eb84a451 cli: commands list: show addons prefixed with + 2019-01-28 10:07:18 -08:00
Simon Michael
b92aa4b89e refactor: Commands 2019-01-28 09:33:21 -08:00