Commit Graph

1768 Commits

Author SHA1 Message Date
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
Simon Michael
78a66594ed lib, cli: changelogs 2019-02-02 20:23:30 -08:00
Simon Michael
6553353bc5 lib, cli: bump version to 1.13.1 2019-02-02 20:21:35 -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
f9b85a1d4c update embedded docs 2019-02-01 17:23:12 -08:00
Simon Michael
40d1572359 bump version to 1.13 2019-02-01 17:19:19 -08:00
Simon Michael
ca0d0b0d81 doc: changelogs 2019-02-01 17:13:16 -08:00
Simon Michael
022dc09f11 doc: journal: mention "auto postings"; explain the #893 situation
[ci skip]
2019-02-01 16:06:09 -08:00
Simon Michael
d1f122f15e refactor: clarify, note issues (#893) 2019-02-01 15:35:33 -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
9955f53b9b doc: changelogs cleanup
[ci skip]
2019-01-31 15:43:08 -08:00
Simon Michael
9fe3212940 changelogs
[ci skip]
2019-01-28 10:45:25 -08:00
Simon Michael
2df8a6c4de doc: regen manuals 2019-01-26 15:56:43 -08:00
Simon Michael
550aa408eb lib: refactor, add embedFileRelative 2019-01-26 15:52:58 -08:00
Simon Michael
17cd5b2254 doc: update changelogs
[ci skip]
2019-01-26 11:35:08 -08:00
Simon Michael
0a31ef848f doc: update changelogs
[ci skip]
2019-01-26 11:31:39 -08:00
Simon Michael
1e5e30ae87 regen cabal files
[ci skip]
2019-01-25 18:33:39 -08:00
Simon Michael
d517aef702 doc: changelogs: drop unnecessary backslashes before #*_<>$
sed commands:
 s/\\#/#/g;
 s/\\\*/*/g;
 s/\\_/_/g;
 s/\\</</g;
 s/\\>/>/g;
 s/\\\$/$/g;

[ci skip]
2019-01-25 18:30:09 -08:00
Simon Michael
7b67876a80 doc: changelogs: convert to clean pandoc markdown
pandoc options:
  -f markdown-auto_identifiers
  -t markdown-header_attributes-fenced_code_attributes --atx-headers --wrap=preserve

[ci skip]
2019-01-25 18:23:36 -08:00
Simon Michael
01c6f3e665 doc: changelogs: rename to CHANGES.md
These have been an adhoc mixture of plain text, markdown and org, and
used in each mode at different times. They will now have a definite
format, which for now is markdown. Org was another contender.

[ci skip]
2019-01-25 18:12:33 -08:00
Simon Michael
49a6e5715d doc: changelogs: some fixes to markdown markup
[ci skip]
2019-01-25 18:08:24 -08:00
Dmitry Astapov
f2aaaf3310 lib, cli: merge --show-unbudgeted into --empty 2019-01-25 12:53:09 -08:00
Simon Michael
550e33a558 journal: fix balance assertions/assignments & prices (#824)
Hopefully this is will do it. This restores the past behaviour:

- parsing prices in balance assertions/assignments
- ignoring them in assertions
- using them in assignments
- and printing them

and clarifies tests and docs.
2019-01-25 12:41:10 -08:00
Simon Michael
94d5c6f111 journal: allow prices in balance assertions, but ignore (#824, #958) 2019-01-25 08:59:37 -08:00
Simon Michael
b02f81572c lib: comment
[ci skip]
2019-01-25 08:51:45 -08:00
Simon Michael
67dde9d4ae doc: regenerate manuals, removing some smart typography
[ci skip]
2019-01-24 15:37:40 -08:00
Dmitry Astapov
5711cdf9ba cli: added --transpose to "balance" command 2019-01-24 15:06:35 -08:00
Dmitry Astapov
f3366c7256 lib: fix behavior of nested budgets and --show-unbudgeted 2019-01-24 14:56:22 -08:00
Dmitry Astapov
92e7370f1f lib: fix alignment in budget report 2019-01-24 14:56:22 -08:00
Simon Michael
a29b70c93f update generated manuals
[ci skip]
2019-01-22 13:36:11 -08:00
Simon Michael
d4fa546d27 update generated journal, csv manuals
[ci skip]
2019-01-19 15:31:22 -08:00
Simon Michael
7130c75a97 doc: update account comments/tags/types 2019-01-18 16:40:35 -08:00
Simon Michael
a61216ac3c journal: allow account types to be set with a type: tag 2019-01-18 16:40:35 -08:00
Simon Michael
573a13fc27 lib: expectParseStateOn helper 2019-01-18 16:40:35 -08:00
Simon Michael
763903ebda journal: save account directives' comments, tags, declaration order 2019-01-18 16:40:35 -08:00
Simon Michael
90bf354566 lib: allow more account directive info in Account records 2019-01-18 16:40:35 -08:00
Simon Michael
899946f270 journal: account directive: stop supporting account sort codes
Eg "account   1000". (Introduced in 1.9, deprecated in 1.11, removed in 1.13.)
2019-01-18 16:40:35 -08:00
Dmitry Astapov
faa5b0fba7 lib: fix parsing of status/code/desc/comments in period txn 2019-01-16 17:17:18 -08:00
Simon Michael
9e4b302af7 lib: setFullPrecision, setMinimalPrecision (#941) 2019-01-16 14:45:50 -08:00
Simon Michael
c5ae8e6891 comments 2019-01-16 13:58:04 -08:00
Simon Michael
5ee79797e1 better fix for #949, don't reverse same-day assertions with --auto 2019-01-16 09:10:58 -08:00
Simon Michael
274b1c12a1 whitespace 2019-01-15 12:58:05 -08:00
Simon Michael
f1441be404 lib: basic unit test for parseAndFinaliseJournal 2019-01-15 12:57:51 -08:00
Simon Michael
944554557a tweak readJournalFiles type signature 2019-01-15 06:18:56 -08:00
Simon Michael
228fc9eb3c preserve correct file order when using --auto (fixes #949)
And clarify parseAndFinaliseJournal a bit.
2019-01-15 06:14:47 -08:00
Simon Michael
40dc9b1db5 doc: make periodic txn example more robust; motivate 2 space rule 2019-01-14 15:36:22 -08:00
Simon Michael
e99f80d374 lib: try to clarify periodic transaction double-space error 2019-01-14 15:33:13 -08:00
Simon Michael
70b11ed0a4 journal: make balance assertions exact again (#941)
Going with option 1b from the issue: calculated and asserted amounts
are compared exactly, disregarding display precision.
But now balance assertion failure messages show those exact amounts at
full precision, avoiding confusion.
2019-01-08 16:51:11 +00:00
Simon Michael
9acce249bb journal: balance assertion/precision doc tweaks (#941) 2019-01-07 08:33:01 +00:00
Simon Michael
c331be7f23 journal: clarify balance assertion/display precision more (#941) 2019-01-06 22:17:20 +00:00
Simon Michael
187fcf75ed journal: clarify balance assertion/display precision interaction
Surprisingly, balance assertions were checking to maximum precision,
which meant it was possible, with a display-precision-limiting
commodity directive, to have a failing assertion with the error
message showing asserted and actual amounts that looked the same.

Now we round the calculated account balance (but not the asserted
balance) to display precision before comparing. This should ensure
assertions always behave as you would expect from visual inspection.
2019-01-06 08:30:54 +00:00