Commit Graph

1451 Commits

Author SHA1 Message Date
Simon Michael
3b35e0afca ;site: manuals: fix many links that went to a prerelease manual
[ci skip]
2019-09-09 06:24:08 -07:00
Simon Michael
499e20c0b2 lib, cli, ui: start using Control.Monad.Fail, allow base-compat 0.11
fail is moving out of Monad and into it's own MonadFail class.
This will be enforced in GHC 8.8 (I think).

base-compat/base-compat-batteries 0.11.0 have adapted to this,
and are approaching stackage nightly
(https://github.com/commercialhaskell/stackage/issues/4802).

hledger is now ready to build with base-compat-batteries 0.11.0, once
all of our deps do (eg aeson). We are still compatible with the older
0.10.x and GHC 7.10.3 as well.

For now we are using both fails:

- new fail (from Control.Monad.Fail), used in our parsers, imported
  via base-compat-batteries Control.Monad.Fail.Compat to work with
  older GHC versions.

- old fail (from GHC.Base, exported by Prelude, Control.Monad,
  Control.Monad.State.Strict, Prelude.Compat, ...), used in easytest's
  Test, since I couldn't find their existing fail implementation to update.

To reduce (my) confusion, these are imported carefully, consistently,
and qualified everywhere as Fail.fail and Prelude.fail, with clashing
re-exports suppressed, like so:

import Prelude hiding (fail)
import qualified Prelude (fail)
import Control.Monad.State.Strict hiding (fail)
import "base-compat-batteries" Prelude.Compat hiding (fail)
import qualified "base-compat-batteries" Control.Monad.Fail.Compat as Fail
2019-09-08 17:13:47 -07:00
Simon Michael
89c3011df4 ;doc: 1.15.2 changelogs
[ci skip]
2019-09-05 15:35:59 -07:00
Simon Michael
7ae75022bf ;doc: regen manuals 2019-09-05 15:35:44 -07:00
Simon Michael
cd5af48165 lib, cli: bump version to 1.15.2 2019-09-05 15:35:19 -07:00
Simon Michael
ff41603a75 ;doc: valuation: also link to #1083
[ci skip]
2019-09-05 14:23:17 -07:00
Simon Michael
a7f172b085 valuation: -V/-X respects report end date, code/doc cleanups (#1083)
-V (and -X) now respects a report end date set with -e/-p/date: when
choosing the valuation date, similar to hledger 1.14 and Ledger.

This means that -V/-X aren't exactly like either --value=end or
--value=now. The "Effect of --value on reports" doc has been extended
accordingly, and much of it has been reworded and made more accurate.
2019-09-05 13:41:36 -07:00
Simon Michael
e73b7c2635 ;doc: document effect of valuation on reports more thoroughly
A column for -V/-X has been added (it differs in some cases, cf

[ci skip]
2019-09-04 19:16:57 -07:00
Simon Michael
1f3c3723db ;doc: cli: try to clarify valuation docs, note #1083
[ci skip]
2019-09-03 13:32:30 -07:00
Simon Michael
6d4d43dc62 ;lib, cli: fix 1.15.1 changelog heading
[ci skip]
2019-09-02 12:53:51 -07:00
Simon Michael
90e5a5f95b ;lib, cli: don't forget to commit the cabal file 2019-09-02 12:31:06 -07:00
Simon Michael
8148136e71 cli: note command docs omitted from 1.15, bump to 1.15.1 2019-09-02 12:26:48 -07:00
Simon Michael
ebacb20b5e ;doc: regen hledger plaintext manual too
[ci skip]
2019-09-02 11:58:10 -07:00
Simon Michael
16a3c96da0 ;doc: regen manuals
[ci skip]
2019-09-02 11:11:56 -07:00
Simon Michael
3654ac5239 ;doc: cli: clean up -V/-X a little
[ci skip]
2019-09-02 06:27:09 -07:00
Simon Michael
319f0e5224 ;doc: cli: tweak comments to avoid confusing markdown-mode
[ci skip]
2019-09-02 06:19:24 -07:00
Simon Michael
b2710c698c ;doc: cli: add missing commands to manual
commodities, descriptions, diff, notes, payees

[ci skip]
2019-09-02 06:16:52 -07:00
Simon Michael
9664194f20 ;doc: cli: drop obsolete comments
[ci skip]
2019-09-02 06:11:01 -07:00
Simon Michael
6703057050 ;doc: more changelog cleanups
[ci skip]
2019-09-01 09:59:51 -07:00
Simon Michael
ede6a51f08 ;doc: finalise changelogs
[ci skip]
2019-09-01 08:53:06 -07:00
Simon Michael
00f3ad8d3f ;doc: changelogs
[ci skip]
2019-09-01 08:53:06 -07:00
Simon Michael
b1859769ac ;doc: regen man pages
[ci skip]
2019-09-01 08:53:06 -07:00
Simon Michael
29f7654c3a bump versions to 1.15 2019-09-01 08:53:06 -07:00
Simon Michael
9cdbce288c ;descriptions/notes/payees: fix build warning 2019-08-31 18:36:03 -07:00
Simon Michael
c2736be4aa ;doc: changelogs
[ci skip]
2019-08-30 21:26:23 -07:00
Simon Michael
65692b0e36 ;doc: update link for lowercase filename
[ci skip]
2019-08-30 07:28:06 -07:00
Simon Michael
fd5dc7bc18 ;doc: fix some table rendering in the html manuals
[ci skip]
2019-08-26 09:37:03 -07:00
Simon Michael
da6718806a ;doc: don't add page TOCs any more, sphinx has it covered
[ci skip]
2019-08-26 09:37:03 -07:00
Simon Michael
4dc0e359dc help: don't require a journal file 2019-08-22 17:49:50 -07:00
Simon Michael
318a7ce234 reg: show negative amounts in red, like balance and Ledger 2019-08-21 07:11:55 +01:00
Simon Michael
8a7905ac73 ;doc: changelogs
[ci skip]
2019-08-19 12:03:54 +01:00
Simon Michael
5bc1e7746f stats: show count of market prices (P), and the commodities covered 2019-08-19 11:16:09 +01:00
Simon Michael
1cbbe8f43d memoise market valuation, making it fast (#999) 2019-08-19 02:16:39 +01:00
Simon Michael
7c2511aa29 bs: show end date(s) in title, not transactions date span (#1078)
Compound balance reports showing ending balances (eg balancesheet),
now show the ending date (single column) or range of ending
dates (multi column) in their title. ,, (double comma) is used
rather than - (hyphen) to suggest a sequence of discrete dates
rather than a continuous span.
2019-08-15 18:22:23 +01:00
Simon Michael
6796c9a080 cli: add missing extra dep 2019-07-26 23:40:58 +01:00
Simon Michael
8284c1042b ;doc: update command help txt files
[ci skip]
2019-07-26 23:25:52 +01:00
Simon Michael
8cde342432 tags: speedup: replace n^2 nub with n log n nubSort 2019-07-26 23:24:09 +01:00
Simon Michael
0b793bca1b tags: add --values flag 2019-07-26 23:18:21 +01:00
Simon Michael
2aa5bd1653 ;tags: mention pivot trick for listing tag values
[ci skip]
2019-07-26 22:19:27 +01:00
Simon Michael
67404fafe5 ;doc: changelog edit
[ci skip]
2019-07-26 22:19:27 +01:00
Simon Michael
25fa835d9a ;doc: more changelog edits
[ci skip]
2019-07-25 17:29:12 +01:00
Simon Michael
d53fb387be ;doc: more changelog edits, backtick-quote flags
[ci skip]
2019-07-25 12:43:59 +01:00
Simon Michael
c7f9356fd1 ;doc: edit changelogs
[ci skip]
2019-07-25 12:33:58 +01:00
Simon Michael
030a409dd3 ;doc: update changelogs
[ci skip]
2019-07-25 08:48:01 +01:00
Caleb Maclennan
11d9e5eb6a code: Strip extraneous trailing whitespace from Haskell sources 2019-07-15 16:40:49 +01:00
Caleb Maclennan
e68e558761 payees: Split command into descriptions, payees, and notes 2019-07-15 08:22:16 +01:00
Caleb Maclennan
5d42578137 payees: Output sorted results as in other similar commands 2019-07-15 08:22:16 +01:00
Simon Michael
f49a76e051 payees: get basic command working 2019-07-15 08:22:16 +01:00
Caleb Maclennan
e6b709cb01 payees: Add a module for handling payees command 2019-07-15 08:22:16 +01:00
Simon Michael
7d5f33441e ;doc: draft changelogs
[ci skip]
2019-07-12 23:24:10 +01:00
Simon Michael
a6e9b11a54 ;cabal: bump tested-with, regen cabal files
[ci skip]
2019-07-12 23:24:10 +01:00
Simon Michael
6c2398e4d7 close: preserve transaction prices (costs) accurately (#1035)
Transaction prices were being collapsed/misreported after close/open;
this is fixed. Now each separately-priced amount gets its own posting,
and only the last of these (for each commodity) gets a balance
assertion. Also the equity posting's amount is now always shown
explicitly, which in multicommodity situations means that multiple
equity postings are shown. The upshot is that a balance -B report
will be unchanged after closing & opening transactions.
2019-07-09 11:21:22 +01:00
Jakob Schöttl
8569b39771 Refactoring: qualified call to process function 2019-06-30 10:38:06 +02:00
Jakob Schöttl
2b01312004 Fix and update documentation on date options 2019-06-30 10:38:06 +02:00
Simon Michael
27c01e82b5 add: doc: mention the windows trailing-dot file path issue 2019-06-26 18:47:11 +01:00
Simon Michael
33d03284c3 ;valuation: more tests; document default amount style issue
[ci skip]
2019-06-17 08:19:23 -07:00
Simon Michael
5cb334514c ;lib: rename setMinimalPrecision -> setNaturalPrecision 2019-06-14 19:04:09 -07:00
Simon Michael
dd5afbb6fe ;doc, debug output tweaks (#131) 2019-06-13 15:50:01 -07:00
Simon Michael
ce0354ddbe lib: -X/--exchange now supports indirect price chains (#131)
Adds fgl as a dependency.
2019-06-13 15:50:01 -07:00
Simon Michael
692620180e ;lib: refactor: change AmountPrice to a Maybe
I've wanted to do this for a long time; now that prices are in flux,
seems a good time.
2019-06-13 15:50:01 -07:00
Simon Michael
adb6ee40eb lib: clarify price types (#131)
dropped journalPrices

renamed Price to AmountPrice,  AKA "transaction price"

renamed MarketPrice to PriceDirective.

added new MarketPrice (more pure form of PriceDirective without the amount style information)

Prices is now a more efficient data structure, but not used yet.
2019-06-13 15:50:01 -07:00
Simon Michael
e24c6292d0 lib: support -X/--exchange (direct/reverse prices only) (#131) 2019-06-13 15:50:01 -07:00
Simon Michael
50a52dd467 lib: --value can select commodity (via direct/reverse prices) (#131) 2019-06-13 15:50:01 -07:00
Simon Michael
289891cacf ;prices: note
[ci skip]
2019-06-02 08:48:41 -07:00
Simon Michael
faf85d91e3 cli: restore --aux-date and --effective as --date2 aliases (#1034)
These Ledger-ish spellings were dropped over the years, to improve
--help's layout. Now they work again, but are considered hidden flags
so --help doesn't show them automatically (but I decided to mention
them manually in --date2's description).
2019-06-02 08:48:41 -07:00
Simon Michael
4b004c2332 ; doc tweak
[ci skip]
2019-05-24 10:46:29 -07:00
Simon Michael
aa99743096 make -V do --value=end in multiperiod reports (#329) 2019-05-24 10:30:35 -07:00
Simon Michael
c95907cb78 ;doc: fix useful value report examples (#329)
[ci skip]
2019-05-23 22:39:05 -07:00
Simon Michael
5e54920160 ;regen embedded manuals 2019-05-23 22:26:43 -07:00
Simon Michael
9977739c76 bal etc.: replace --value=transaction with --value=cost (#329) 2019-05-23 21:55:18 -07:00
Simon Michael
2325ff4e08 ;doc: update --value docs (#329) 2019-05-23 21:55:17 -07:00
Simon Michael
f999bf78e6 opts: new -B/--cost, -V/--market, --value flags (#329) 2019-05-23 13:11:20 -07:00
Simon Michael
0b67df2d31 opts: shorten csv separator arg template 2019-05-23 00:36:59 -07:00
Simon Michael
e21afc466a bal/bs/bse: -H or --cumulative now disables -T (#329)
To reduce confusion, multiperiod balance reports using -H/--historical
or --cumulative, which show end balances, no longer show a Totals
column since summing end balances generally doesn't make sense.
Also the underlying MultiBalanceReport now returns zero for those
totals when in cumulative or historical mode.
2019-05-11 20:43:28 -07:00
Simon Michael
76342a3fd0 bal/bs/cf/is: mention valuation type in report title 2019-05-09 15:39:43 -07:00
Simon Michael
2e44d09fdb ;doc: tweak --value-at table
[ci skip]
2019-05-09 12:26:30 -07:00
Simon Michael
fb18019212 bal: document and test --value-at with --budget (#329) 2019-05-09 12:23:51 -07:00
Simon Michael
82104e580b ;doc: improve --value-at docs
[ci skip]
2019-05-09 08:49:51 -07:00
Simon Michael
a63e582aca ;doc: improve --value-at docs
[ci skip]
2019-05-07 16:20:19 -07:00
Simon Michael
5e2f5cf511 ;doc: rewrite: consistent literal block styling
[ci skip]
2019-05-07 16:11:35 -07:00
Simon Michael
5744d7679d ;doc: options: definition lists + bullets don't work in man pages
[ci skip]
2019-05-07 16:11:33 -07:00
Simon Michael
72214a5747 reg: fix --value-at=transaction with -M (#329) 2019-05-06 08:07:16 -07:00
Simon Michael
30a35230d2 ;doc: update --value-at support, add more report details (#329) 2019-05-05 17:48:20 -07:00
Simon Michael
4c56baf842 ;doc:options:update --value-at support 2019-05-05 11:12:01 -07:00
Simon Michael
8d7eacd73f bal: support --value-at=p/t with multiperiod reports (#329) 2019-05-05 09:30:01 -07:00
Simon Michael
3a79e300c9 ;bal: cleanup 2019-05-04 12:22:00 -07:00
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
cca0b7aec6 ;update changelogs 2019-05-04 12:21:54 -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
4fd09bedfc doc: options: value-at: help fix
[ci skip]
2019-04-26 12:22:21 -07:00
Simon Michael
696e3098c8 reg: support --value-at in register reports; cleanups, tests 2019-04-26 12:08:46 -07:00
Simon Michael
00975fb226 bal*: support --value-at in multicolumn balance reports 2019-04-26 12:08:31 -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
a08140b073 doc: options: argument files: link to main site, not github 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