Commit Graph

2018 Commits

Author SHA1 Message Date
Simon Michael
7ffe38677a ;lib: parseAndFinaliseJournal: note txns order issue (#1091) 2019-09-25 23:07:22 -10:00
Simon Michael
6037d701b6 ;lib: document RawNumber, AmbiguousNumber, DigitGrp (#1091) 2019-09-25 21:26:06 -10:00
Simon Michael
24ce2686f4 drop GHC 7.10/base 4.8 support, finally, due to MonadFail hassles
in JournalReader.hs. If you still need this, feel free to work on
those errors. But hopefully not, because dropping base 4.8 should
permit some code cleanups.
2019-09-14 03:45:37 -07:00
Simon Michael
977d4f009e lib, cli: disable hledger-lib test suites, hledger benchmark suite
by default. hledger-lib's doctests and easytests test suites (each ?)
require an additional slow rebuild of hledger-lib and are not worth
the time, energy and carbon. hledger's test suite runs those same
easytest tests (but not the doctests).
2019-09-14 03:45:37 -07:00
Simon Michael
180f4baedb ;lib: csv: note cause of #1087
[ci skip]
2019-09-14 03:45:37 -07:00
Simon Michael
f92b2fe6ef ;lib: csv: refactor: clarify, get rid of some IO/ExceptT
Rule parsing doesn't need IO (since we are doing expandIncludes as a
pre-parsing step).
2019-09-14 03:45:37 -07:00
Simon Michael
3c05662ce2 ;lib: csv: clarify confusing imports 2019-09-13 18:11:40 -07:00
Simon Michael
46caa1d4ef ;lib: csv: rename error-prone default rules 2019-09-13 17:51:14 -07:00
Simon Michael
a0deb88796 ;doc: regen manuals
[ci skip]
2019-09-13 11:00:03 -07:00
Simon Michael
f65fc47185 ;bump version to 1.15.99
[ci skip]
2019-09-13 08:43:33 -07:00
Simon Michael
e851bdf834 ;doc: changelogs
[ci skip]
2019-09-13 08:43:33 -07:00
Simon Michael
af21ae6eb6 ;doc: regen manuals
Wrapping and hyphenation has changed again, which I thought would
be more stable now with same tool versions on laptop and server.
Who knows.
2019-09-13 08:43:33 -07:00
Dmitry Astapov
568cb32677 lib: more runPeriodicTransaction tests (lifted from #1085 and spanIntervalIntersect) 2019-09-11 16:09:28 -07:00
Dmitry Astapov
e9d300bef3 lib: dont raise when there is neither budget nor transactions in the report period 2019-09-11 16:09:28 -07:00
Dmitry Astapov
cf74972148 bin: improve debug output for budger report (show budget txns) 2019-09-11 16:09:28 -07:00
Dmitry Astapov
cf4029a5ed lib: fix generation of periodic transactions with days/months/... repeat 2019-09-11 16:09:28 -07:00
Simon Michael
acd7010e5a ;doc: "curses-style interface" -> "terminal interface"
[ci skip]
2019-09-10 18:14:16 -07:00
Simon Michael
ef04907484 ;doc: fix broken manual links in manuals source
[ci skip]
2019-09-10 17:02:56 -07:00
Simon Michael
85d48a6b0e ;doc: regen manuals (on server)
Usually done on my laptop, but the toolchain on both machines should
produce the same result these days..

[ci skip]
2019-09-09 08:04:26 -07:00
Simon Michael
fb521e248b ;doc: journal: periodic transactions: more tweaks
[ci skip]
2019-09-09 08:02:22 -07:00
Simon Michael
94d3eb1cfb ;doc: journal: periodic transactions: more fixes, clarifications
[ci skip]
2019-09-09 07:45:09 -07:00
Simon Michael
901e5174d7 ;doc: journal: highlight some gotchas with periodic transactions
[ci skip]
2019-09-09 07:10:26 -07:00
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
c7746131fc ;lib: clarify parser monad transformers a little
[ci skip]
2019-09-08 10:40: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
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
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
08e011af37 lib: note doctests fix (omitted from 1.15), bump to 1.15.1 2019-09-02 12:25:29 -07:00
Simon Michael
16a3c96da0 ;doc: regen manuals
[ci skip]
2019-09-02 11:11:56 -07:00
Simon Michael
e9c28fd9a3 ;doc: journal: drop unused file
[ci skip]
2019-09-02 06:10:22 -07:00
Simon Michael
b919c92892 ;doc: journal: change some comments to avoid confusing markdown-mode
[ci skip]
2019-09-02 06:09:35 -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
095badd7f9 ;fix doctests 2019-08-31 17:15:48 -07:00
Simon Michael
c2736be4aa ;doc: changelogs
[ci skip]
2019-08-30 21:26:23 -07:00
Simon Michael
f55985eb9b ;site: stop using pandoc's fenced_code_attributes
[ci skip]
2019-08-26 18:41:33 -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
5925808108 lib, web: unhide exports, fix build 2019-08-19 12:30:54 +01:00
Simon Michael
8a7905ac73 ;doc: changelogs
[ci skip]
2019-08-19 12:03:54 +01:00
Simon Michael
11519744d8 ;lib: Valuation: hide some exports 2019-08-19 11:59:32 +01:00
Simon Michael
62e96b1b20 ;lib: move PriceGraph, PriceOracle, ValuationType to Valuation.hs 2019-08-19 02:21:30 +01:00
Simon Michael
1cbbe8f43d memoise market valuation, making it fast (#999) 2019-08-19 02:16:39 +01:00
Simon Michael
4beb416070 lib: currying helpers 2019-08-19 02:09:27 +01:00
Simon Michael
7177f533b2 ;lib: pricesAtDate: refactor 2019-08-01 18:31:39 +02:00
Simon Michael
c14f22b975 ;lib: depend on timeit
Allows easy benchmarking at ghci prompt and I expect will be used for
reporting timing info later.
2019-08-01 18:31:39 +02:00
Simon Michael
70986769ef ;lib: derive NFData for MultiBalanceReport, PriceGraph for criterion
Allow these to be timed with criterion at ghci prompt.
2019-08-01 18:31:39 +02:00
Simon Michael
d193d757ea ;lib: multiBalanceReport: fix error message typo 2019-08-01 18:22:14 +02:00
Simon Michael
c7f9356fd1 ;doc: edit changelogs
[ci skip]
2019-07-25 12:33:58 +01:00
Simon Michael
02ed4f5d04 ;lib: intervalFromRawOpts: replace undefined with an error message 2019-07-25 10:46:45 +01:00
Simon Michael
030a409dd3 ;doc: update changelogs
[ci skip]
2019-07-25 08:48:01 +01:00
Simon Michael
35799142dd
Merge pull request #914 from simonmichael/rule-tags
tags for matching rule-generated txns and postings
2019-07-17 18:38:14 +01:00
Simon Michael
6e3a264f17 lib: export aliasnamep for hledger-check (#1072) 2019-07-16 23:30:15 +01:00
Simon Michael
e560afccd2 ;lib: package.yaml comment cleanups
[ci skip]
2019-07-15 17:18:28 +01:00
Caleb Maclennan
11d9e5eb6a code: Strip extraneous trailing whitespace from Haskell sources 2019-07-15 16:40:49 +01:00
Caleb Maclennan
7e332fda20 docs: Explain in more detail the parsing of the payee vs. notes fields 2019-07-15 08:22:16 +01:00
Simon Michael
6b61d1e0f1 ;lib: move transactionNote/Payee to Transaction.hs 2019-07-15 08:22:16 +01:00
Simon Michael
a5372168bc ;lib: suppress doctest failures with GHC < 8.2
[ci skip]
2019-07-14 04:40:07 -07:00
Simon Michael
6f2f8d7638 ;deps: a better fix for nubSortBy with ghc 7.10, 8.0
nubSortBy and nub . sortBy are not equivalent, it seems.
I didn't notice the failing valuation func tests.
2019-07-13 00:13:33 -07:00
Simon Michael
503d21ef77 ;lib: also update fgl bounds in cabal file 2019-07-13 08:08:36 +01:00
Simon Michael
40dd5e41cb ;deps: bump fgl lower bound to fix ghc 7, 8.0 builds 2019-07-12 15:25:19 -07: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
ec310aea73 ;lib: avoid nubSortBy which breaks ghc 7, 8.0 builds 2019-07-12 15:21:57 -07:00
Simon Michael
f8cc60d287 ;csv: doc: link to #1051
[ci skip]
2019-07-08 08:02:54 +01:00
Simon Michael
5c3e4de647 ;lib: periodFromRawOpts: clarify doc (#1011)
[ci skip]
2019-07-01 18:33:18 +01:00
Jakob Schöttl
e483faf7f0 Bugfix for #1011: begin/end date options 2019-06-30 10:38:06 +02:00
Simon Michael
014db152d9 add, web: disallow unsafe trailing dot paths on windows (fix #1056)
On Windows, ensureJournalFileExists now rejects file paths
containing any problematic trailing dots, to prevent data loss.
This affects the add command and hledger-web's add form.
2019-06-26 18:19:53 +01:00
Simon Michael
2e4f047fed ;doc: journal: clarify alias docs (#1055)
[ci skip]
2019-06-23 15:56:29 -07:00
Simon Michael
d15f775695 ;doc:journal: document alias application order more clearly (#1055)
[ci skip]
2019-06-21 12:12:35 -07:00
Simon Michael
33d03284c3 ;valuation: more tests; document default amount style issue
[ci skip]
2019-06-17 08:19:23 -07:00
Simon Michael
2da50875ee lib: setNaturalPrecisionUpTo 2019-06-14 19:04:09 -07:00
Simon Michael
5cb334514c ;lib: rename setMinimalPrecision -> setNaturalPrecision 2019-06-14 19:04:09 -07:00
Simon Michael
69defd497f ;lib: refactor: Data.Prices -> Data.Valuation 2019-06-14 19:04:09 -07:00
Simon Michael
83030a09de ;lib: Prices: refactor 2019-06-14 19:04:09 -07:00
Simon Michael
7dd0c5783a ;lib: multibalancereport: refactor 2019-06-14 19:04:09 -07:00
Simon Michael
0a3af8d9ee csv: strip outer whitespace when interpolating CSV values (#1051)
This removes a potential snag in amount field assignments, and
hopefully is harmless and acceptable otherwise.
2019-06-14 16:43:12 -07:00
Simon Michael
d2b3185062 csv: don't show invalid inter-field spaces in CSV error messages
Errors involving a record like:

2000-01-01,a,"1"

displayed the record with extra spaces:

the CSV record is:       "2000-01-01", "a", "1"

which was not accurate or valid RFC-4180.
2019-06-14 16:17:40 -07:00
Simon Michael
baa15d9bea ;lib: rename MultiBalanceReports.hs -> MultiBalanceReport.hs 2019-06-14 11:45:25 -07:00
Simon Michael
e664fab956 lib: try to simplify, use just one price graph (#131) 2019-06-13 15:50:01 -07:00
Simon Michael
dd5afbb6fe ;doc, debug output tweaks (#131) 2019-06-13 15:50:01 -07:00
Simon Michael
6a62bd6437 web, api: update for MarketPrice/PriceDirective change 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
6b6c3385c9 lib: parse optional ,COMM suffix in --value (#131) 2019-06-13 15:50:01 -07:00
Caleb Maclennan
18e19b9ad2 ;tests: normalize tests, examples, and docs using 2spcs before comments 2019-06-13 12:12:21 -07:00
Caleb Maclennan
8f3e5f9d3b ;print: differentiate posting indent (4spc) and pre-comment space (2spc)
Co-authored-by: Simon Michael <simon@joyful.com>
2019-06-13 12:12:21 -07:00
Henning Thielemann
4962b2696a lib: accountTransactionsReportItems: rewrite using catMaybes and mapAccumL
I find the report function less convolved without the integrated recursion.
2019-06-09 18:45:58 -07:00
Simon Michael
88f3f6fc41 print: also canonicalise balance assertions' amount style (fix #1042) 2019-06-09 17:39:46 -07:00
Simon Michael
7ac1bdf8c1 ;csv: document spaces outside quotes issue (#1037)
[ci skip]
2019-06-07 06:34:52 -07:00
Simon Michael
90af360792 csv: fix parse error printing, broken since 1.11 (#1038) 2019-06-06 23:10:31 -07:00
Simon Michael
45198d3faa lib: debug helpers: add ptraceAtWith, dbgNWith 2019-06-02 08:48:41 -07:00
Simon Michael
42ce95aaef ; refactor: centralise valuation logic #131 2019-05-31 15:29:09 -07:00
Simon Michael
ad83919c6a ; lib: drop the Maybe from SummaryPosting 2019-05-31 15:29:09 -07:00
Simon Michael
69d72e8c48 ;refactor amountValue 2019-05-25 05:34:29 -07:00
Simon Michael
bba9c32607 ;doc: journal: clarify commodity directive does not affect parsing
[ci skip]
2019-05-25 05:29:49 -07:00
Simon Michael
34a0ad00b1 ;lib: encapsulate Prices db 2019-05-25 05:29:34 -07:00
Simon Michael
aa99743096 make -V do --value=end in multiperiod reports (#329) 2019-05-24 10:30:35 -07:00
Simon Michael
ea5050963f web: try to fix RegisterR warning 2019-05-23 22:34:31 -07:00
Simon Michael
5e54920160 ;regen embedded manuals 2019-05-23 22:26:43 -07:00
Simon Michael
20bc386b80 restore TransactionsReport
hledger-web's register chart uses it, I didn't see it
because it's called from a hamlet template.
2019-05-23 22:15:40 -07:00
Simon Michael
7212b92079 cleanups (#329) 2019-05-23 22:07:50 -07:00
Simon Michael
54c1529638 lib: drop TransactionsReport, BalanceHistoryReport
They seem unused.
2019-05-23 21:55:19 -07:00
Simon Michael
04a30fa084 lib: TransactionsReport/AccountTransactionsReport cleanup
Split them into separate files, rename journalTransactionsReport to
transactionsReport.
2019-05-23 21:55:19 -07:00
Simon Michael
9977739c76 bal etc.: replace --value=transaction with --value=cost (#329) 2019-05-23 21:55:18 -07:00
Simon Michael
adbce22152 bal: --budget: don't always convert to cost
And don't show a percentage when budgeted and actual amounts are in
different commodities.
2019-05-23 21:55:18 -07:00
Simon Michael
2355da0f93 reg: replace --value=transaction with --value=cost 2019-05-23 21:55:18 -07:00
Simon Michael
ace215f5f3 print: replace --value=transaction with --value=cost 2019-05-23 21:55:18 -07:00
Simon Michael
37c0edb1f9 lib: drop postingValueAtDate 2019-05-23 21:55:18 -07:00
Simon Michael
4a75971c6d lib: postingTransformAmount, postingToCost, postingValue 2019-05-23 21:55:17 -07:00
Simon Michael
e5cb082fb5 lib: amountToCost, mixedAmountToCost 2019-05-23 13:11:34 -07:00
Simon Michael
f999bf78e6 opts: new -B/--cost, -V/--market, --value flags (#329) 2019-05-23 13:11:20 -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
e5339218f7 lib: valueTypeFromOpts helper 2019-05-09 15:36:26 -07:00
Simon Michael
d15869f855 ;doc: typo
[ci skip]
2019-05-09 12:22:48 -07:00
Simon Michael
d77fd5743d bal/bs/cf/is: support --value-at with -H; fix row/col/grand totals
This also includes a big cleanup of multiBalanceReport, which got
accidentally mingled.
2019-05-09 07:58:45 -07:00
Simon Michael
2ffe7914be ;improve valuation code docs 2019-05-07 16:19:49 -07:00
Simon Michael
74e653bfbc ;lib: declare Period exports 2019-05-06 11:52:10 -07:00
Simon Michael
72214a5747 reg: fix --value-at=transaction with -M (#329) 2019-05-06 08:07:16 -07:00
Simon Michael
ad00da244b reg: support --value-at with -H (#329) 2019-05-05 17:47:38 -07:00
Simon Michael
2ba0281335 bal: fix --value-at for old-style single period balance reports (#329) 2019-05-05 10:51:07 -07:00
Simon Michael
629b590de1 ;lib: cleanup 2019-05-05 10:38:13 -07:00
Simon Michael
76542458e6 lib: mapJournalTransactions, mapJournalPostings, mapTransactionPostings 2019-05-05 10:35:49 -07:00
Simon Michael
5a13bc632d ;clarify ledgerFromJournal doc 2019-05-05 10:09:40 -07:00
Simon Michael
1ad82d5b77 ;lib: balanceReport cleanup 2019-05-05 09:57:03 -07:00
Simon Michael
f4b0381043 ;lib: more docs for balanceReport 2019-05-05 09:50:29 -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
74c381cc88 ;lib: more docs for multiBalanceReport 2019-05-04 17:46:52 -07:00
Simon Michael
66b1599058 ;lib: postingsReport cleanup 2019-05-04 17:09:16 -07:00
Simon Michael
cc05f48697 ;lib: multiBalanceReport cleanup 2019-05-04 12:34:59 -07:00
Simon Michael
12c0bfb39b ;lib: brValue 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
696e3098c8 reg: support --value-at in register reports; cleanups, tests 2019-04-26 12:08:46 -07:00
Simon Michael
7306e61646 bal: support --value-at in single column balance reports 2019-04-26 12:08:32 -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
6626778012 lib: amountValue, commodityValue doc cleanups 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
9d3eb8c069 bal, reg, print: -V prefers non-future valuation dates again (#999) 2019-04-24 08:31:21 -07:00
Simon Michael
ef9c4a29c4 lib: save the current date in ReportOpts
We need this for choosing a valuation date, otherwise, report
functions would have to be in IO or we'd have to pass in yet another
argument.

It's optional because it's useful to be able to create report opts
purely (I think ?) This is not ideal but maybe not a problem.
2019-04-24 08:25:55 -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
9ac1d7869b lib: journalStartDate, journalEndDate 2019-04-23 13:58:32 -07:00
Simon Michael
168edb910e lib: try a single filter again to speed up -V; simplify a bit (#999)
There was no speedup, in fact.
2019-04-22 16:38:42 -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
Jakob Schöttl
4444b8bc8f Change unused argument to undefined to make possible bugs more obvious 2019-04-18 22:38:41 +02:00
Jakob Schöttl
593ee39284 Fix behavior of options like -Mp2019
This fixes the issue #1008
2019-04-18 22:38:41 +02:00
Simon Michael
13dc1096a5 reg: test and fix for --average, broken since 1.12 (#1003) 2019-04-06 11:00:38 -07:00
Simon Michael
71f9b74b0e csv: doc: more tweaks (#1000)
[ci skip]
2019-04-06 10:51:18 -07:00
Simon Michael
bd08dd3858 csv: doc: more tweaks (#1000)
[ci skip]
2019-04-03 13:25:50 -07:00
Simon Michael
9f4decb4f6 csv: doc: clarify amount, balance tips (#1000)
[ci skip]
2019-04-03 13:14:59 -07:00
Simon Michael
61e8ccbf88 csv: accept a balance field assignment instead of an amount (#1000) 2019-04-03 10:46:26 -07:00
Simon Michael
c9e16b83ef ; propagate dev version bump 2019-03-20 17:13:59 -07:00
Simon Michael
124aaffd34 ; merge latest changelogs 2019-03-20 16:18:04 -07:00
Simon Michael
3d206ad6bd ; changelogs from 1.14 branch 2019-03-20 16:18:04 -07:00
Simon Michael
fee0e39320 ; lib, cli, ui, web, api: bump to dev version 2019-03-20 16:18:04 -07:00
Dmitry Astapov
5067d0f984 doc: document balance1 and balance2 in csv parser 2019-03-15 16:18:43 -07:00
Dmitry Astapov
3c3200fa66 lib: csv parser support for 'balance2', 'balance' renamed to 'balance1' 2019-03-15 16:18:43 -07:00
Hans-Peter Deifel
489b7fd870 Constrain easytest dependency to fix cabal build
This constraints the easytest dependency to <0.3, because hledger and
hledger-lib currently don't build with 0.3.

Of course the better solution would be to fix the build errors, but easytest-0.3
is not even in stackage nightly yet and I just need it to build right now :-)
2019-03-15 12:33:16 -07:00
Simon Michael
1ae36fe02c ;doc: journal: promote "auto postings" term; clarify scope
[ci skip]
2019-03-08 19:59:45 -08:00
Simon Michael
c5df73910f csv: update some parse errors which weren't in human format
cf
https://www.reddit.com/r/plaintextaccounting/comments/axekse/hledger_how_to_create_curved_brackets_with_rule/
2019-03-05 06:23:11 -08:00
Simon Michael
172dbc7a90 doc: changelogs
[ci skip]
2019-03-01 17:46:37 -08:00
Simon Michael
0cd5545e26 regen cabal files/manuals
[ci skip]
2019-03-01 16:17:25 -08:00
Simon Michael
68e5c41d52 bump version, manual dates
[ci skip]
2019-03-01 16:11:15 -08:00
Simon Michael
9fab3257e8 regen cabal files 2019-03-01 15:44:40 -08:00
Simon Michael
9bb6f75bc8 update tested-with, add ghc 8.6
[ci skip]
2019-03-01 15:10:42 -08:00
Simon Michael
16157bc711 lib, web: tweaks to keep building with GHC 7 2019-03-01 15:07:17 -08:00
Simon Michael
420eef4a40 lib: fix some transaction balancing cases
I needed to be more careful about ordering, as johannesgerer's original
code was, and the tests missed it. I think I have it now.
Found the PR whose code I have been reworking, it was #438.
2019-02-21 16:50:32 -08:00
Simon Michael
ca565795ad lib: transaction, [v]post*, balassert* constructors, for tests etc. 2019-02-21 16:20:04 -08:00
Simon Michael
0bc16d4af6 lib, cli, web: rename porigin -> poriginal 2019-02-20 20:23:54 -08:00
Simon Michael
8620e5414f regen manuals
[ci skip]
2019-02-20 17:37:25 -08:00
Simon Michael
ba850f3871 lib: more transaction balancing/assertions/assignments cleanup 2019-02-20 09:14:30 -08:00
Simon Michael
8789a442a8 lib: inclusive balance assertions (=* and ==*) 2019-02-20 09:14:30 -08:00
Simon Michael
3b47b58aec lib: clarify transaction balancing & balance assertion checking 2019-02-20 09:14:30 -08:00
Simon Michael
b34b262c76 lib: document mapM'
[ci skip]
2019-02-17 08:36:59 -08:00
Simon Michael
bc7a1476ed refactor: lib: hlint cleanups 2019-02-14 05:15:49 -08:00
Simon Michael
03877057fb refactor: cli: commands: hlint clean 2019-02-14 05:15:49 -08:00
Simon Michael
226add41d3 lib: slight cleanup (spelling, hlint)
[ci skip]
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
9e3cdef1e9 lib: balance assertion docs (#290)
[ci skip]
2019-02-13 15:52:07 -08:00
Simon Michael
eed4a996f8 doc: journal: link cookbook, fix typo
[ci skip]
2019-02-12 10:00:25 -08:00
Simon Michael
6ff5d744b7 doc: journal: move details of editor support to cookbook
[ci skip]
2019-02-12 09:50:56 -08:00
Simon Michael
21fac53954 doc: regen manuals
[ci skip]
2019-02-11 14:15:44 -08:00
Jakob Schöttl
161ca660dc Support register --invert option to negate amounts 2019-02-09 15:55:41 -08:00
Simon Michael
94753f1cea bump to dev version 2019-02-08 11:33:44 -08:00
Simon Michael
a18e4e9773 hpack: drop quotes from version: field, apparently not required
[ci skip]
2019-02-05 06:35:40 -08:00
Simon Michael
18ffa65168 tools: move setversion to shake, use PKG/.version, set upper bounds
./Shake setversion will now propagate the version number in each
package's .version file, to all the places in that package where it's
needed (ie the defs.m4 file and multiple places in the package.yaml
file. Also it now updates upper bounds on other hledger packages
to the next major version. (The new lower/upper bounds may not always
be what's desired, manual review required.)

[ci skip]
2019-02-04 18:47:27 -08:00
Simon Michael
bde46f7bd0 doc: move version, release date entirely into per-package macros
[ci skip]
2019-02-04 15:28:23 -08:00
Simon Michael
bf6acf52ef doc: allow per-package m4 defs, to override things like version
[ci skip]
2019-02-04 15:18:51 -08:00