Simon Michael
16973ce296
;lib: fix journalInferCommodityStyles debug message
2019-09-27 18:51:37 -07:00
Simon Michael
58a313165c
;journal: infer amount styles more carefully, fix wrong output ( #1091 )
...
Certain journal entries could trigger a bug where we displayed amounts
with the same character for digit group mark and decimal mark. Now if
a comma or period digit group mark is detected, that forces the
decimal mark to be the other character.
2019-09-27 15:40:36 -10:00
Simon Michael
9967ead4c5
;lib: let commodityStylesFromAmounts & co. return an error ( #793 , #1091 )
...
And if they did, the stats command would now throw an error.
Changed:
journalApplyCommodityStyles
journalInferCommodityStyles
commodityStylesFromAmounts
2019-09-27 15:09:39 -10:00
Simon Michael
64f49a8c02
;doc: journal: rewrite Amounts; switch to "digit group mark" term ( #1091 )
2019-09-27 14:25:32 -10:00
Simon Michael
b754abc36b
;lib: commodityStylesFromAmounts: simplify, disable #1091 test
2019-09-26 18:06:22 -10:00
Simon Michael
4884213a3e
;lib: commodityStylesFromAmounts: a failing unit test for #1091
2019-09-25 23:08:00 -10:00
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
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
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
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
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
095badd7f9
;fix doctests
2019-08-31 17:15:48 -07:00
Simon Michael
5925808108
lib, web: unhide exports, fix build
2019-08-19 12:30: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
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
02ed4f5d04
;lib: intervalFromRawOpts: replace undefined with an error message
2019-07-25 10:46:45 +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
Caleb Maclennan
11d9e5eb6a
code: Strip extraneous trailing whitespace from Haskell sources
2019-07-15 16:40:49 +01:00
Simon Michael
6b61d1e0f1
;lib: move transactionNote/Payee to Transaction.hs
2019-07-15 08:22:16 +01: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
ec310aea73
;lib: avoid nubSortBy which breaks ghc 7, 8.0 builds
2019-07-12 15:21:57 -07: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
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
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
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
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