Stephen Morgan
ecca7f4e0c
lib: Distinguish between an Amount having quantity (or rounded quantity 0), and having both quantity and totalprice 0 (or rounded to 0).
2021-02-23 14:54:39 -08:00
Stephen Morgan
81b778a389
lib: Make fields of Amount, AmountPrice, AmountStyle, and DigitGroupStyle strict.
2021-02-23 14:54:39 -08:00
Stephen Morgan
2ada289e28
lib: Include sign in TotalPrice in Amount, rather than relying on the sign of
...
aquantity.
Journal entries still require a positive @@ price, but now the sign is
set after parsing, rather than when converting in amountToCost.
The reason for this change is that, if we're going to perform arithmetic
on Amount with TotalCost, then the presence of aquantity=0 means that
amountToCost would render the total cost as 0, because signum 0 == 0.
This makes journal entries like the following impossible to balance:
2000-01-01
a 0 @@ 10 A
b -10 A
2021-02-23 14:54:39 -08:00
Stephen Morgan
a65ef7cd19
lib: Consume list immediately in commodityStylesFromAmounts.
...
This reduced the maximum heap size per thread from ~850K to ~430K in a
real-world register test.
2021-02-23 14:54:39 -08:00
Simon Michael
5e7c4fc7bc
add, print --match: prioritise infix matches
...
If the search description occurs in full within the other description,
that match gets a +0.5 score boost.
2021-02-20 14:08:47 -08:00
Simon Michael
44508f58c8
add, lib: debug output, refactor similar transactions lookup
...
add --debug=1 shows the top hits for similar past transactions.
added:
Hledger.Cli.Utils.journalSimilarTransaction
provides --debug=1 output
changed:
Hledger.Cli.Commands.Add.transactionsSimilarTo -> Hledger.Data.Journal.journalTransactionsSimilarTo
now takes an extra number-of-results argument
2021-02-20 13:41:37 -08:00
Simon Michael
f7bbb39a77
;regenerate cabal files with the hpack version in current stack
...
To minimise warnings. They got regenerated by a commit for #1471 .
2021-02-18 13:42:40 -08:00
Arnout Engelen
ad2ab3c823
Make sure to round up for the 'to' date
2021-02-17 09:05:13 -08:00
Simon Michael
b31e40ceca
lib: avoid shady Not (Or []) in account type queries
2021-02-13 14:58:06 -08:00
Simon Michael
6c392e9f43
bs: don't let just a Cash declaration hide Asset accounts
...
Clarify the account type queries a bit, and don't let a
declaration of account as Cash cause the fallback regex
for Asset accounts to be ignored.
2021-02-13 14:54:04 -08:00
Simon Michael
b9d33a4294
bs: just declaring a Cash account no longer hides Asset accounts
...
Since Cash is also an Asset, declaring an account as Cash also disabled the fallback regexp for Asset accounts.
2021-02-13 08:09:45 -08:00
Simon Michael
50bfc26ca7
;lib: commentAddTagNextLine was broken
...
It would not add the tag when a comment already existed.
This affected hledger-print-location.hs and probably
the generated-transaction: tag in periodic transactions.
2021-02-12 13:56:02 -08:00
Simon Michael
d865ec5d65
lib: refactor: more consistent amount precision helpers
...
Hledger.Data.Amount:
renamed:
setAmountPrecision -> amountSetPrecision
setFullPrecision -> amountSetFullPrecision
setMixedAmountPrecision -> mixedAmountSetPrecision
added:
mixedAmountSetFullPrecision
2021-02-05 16:09:49 -08:00
Simon Michael
d5ed8090fa
;lib: document AmountPrecision
2021-02-05 16:09:49 -08:00
Simon Michael
37e49ada70
cli: rename --infer-value to --infer-market-price
...
For clarity; infer-value was too vague. The old spelling remains
supported for compatibility, but is now deprecated.
When typing, --infer-market or even --infer (for now) is sufficient.
2021-02-05 15:16:39 -08:00
Simon Michael
2a4170dd3b
ui: transaction: show all decimal places (like print, cf #931 )
...
On the accounts screen and register screen we round amounts according
to commodity styles, but when you drill down to a transaction you
probably want to see the unrounded amounts.
2021-02-04 08:13:55 -08:00
Simon Michael
f52117120b
lib: refactor: rename journal/transaction mapping helpers
...
Hledger.Data.Journal:
changed:
mapJournalTransactions -> journalMapTransactions
mapJournalPostings -> journalMapPostings
removed:
mapTransactionPostings
Hledger.Data.Transaction:
added:
transactionMapPostings
2021-02-04 08:13:55 -08:00
Simon Michael
6101368954
print: always show all decimal places ( #931 )
...
Ensures parseable and more sensible-looking output in more cases, and behaves more like Ledger's print.
There is still an issue with adding trailing zeroes, which would be nice to prevent.
2021-02-04 08:13:55 -08:00
Simon Michael
0274b30742
print: don't add decimal places in assertion/assignment amounts either ( #1465 )
2021-02-04 06:46:09 -08:00
Simon Michael
201f967411
print: show all decimal places in assertion/assignment amounts ( #1465 )
...
Overriding the commodity style, per https://hledger.org/hledger.html#commodity-display-style .
2021-02-03 18:11:44 -08:00
Stephen Morgan
b619b68f71
doc: Remove references to --value=cost, replacing them with --cost.
...
Since this is option is now just an alias for -B/--cost, and since it
may be removed soon, we make it undocumented, though it will still
behave as before. --value=cost,COMM is unsupported as well.
2021-01-28 13:57:48 -08:00
Stephen Morgan
c9eb7d1bcf
lib,cli,ui: Separate costing from valuation; each can now be specified
...
independently.
You can now combine costing and valuation, for example "--cost
--value=then" will first convert to costs, and then value according to
the "--value=then" strategy. Any valuation strategy can be used with or
without costing.
If multiple valuation and costing strategies are specified on the
command line, then if any of them include costing
(-B/--cost/--value=cost) then amounts will be converted to cost, and for
valuation strategy the rightmost will be used.
--value=cost is deprecated, but still supported and is equivalent to
--cost/-B. --value=cost,COMM is no longer supported, but this behaviour can be
achieved with "--cost --value=then,COMM".
2021-01-28 13:57:48 -08:00
Stephen Morgan
130739e3ef
lib,cli,ui: Introduce *ApplyCostValuation functions, which perform both
...
costing and valuation.
This currently is given a dummy NoCost argument and is equivalent to
"maybe id (*ApplyValuation ...)", but provides a constant interface so
that internal behaviour can be changed freely.
2021-01-28 13:57:48 -08:00
Stephen Morgan
9881ec9652
lib: Use mapMixedAmount more, decreasing reliance on internal representation of Mixed.
2021-01-28 13:57:48 -08:00
Stephen Morgan
9cf5015958
lib: bal --value=end without --historical should not report on fluctuation in value of historical postings.
2021-01-28 13:57:48 -08:00
Simon Michael
bf328e4e3c
lib: matchesDescription, matchesPayeeWIP
2021-01-17 16:37:38 -08:00
Simon Michael
422329fbfa
lib: journalPayeesUsed, journalPayeesDeclaredOrUsed
2021-01-17 16:37:38 -08:00
Simon Michael
db9b034037
lib: Journal: avoid a build failure if monad-extras is installed
2021-01-17 16:37:38 -08:00
Stephen Morgan
5d664fc528
lib: Expose textConcatBottomPadded.
2021-01-15 12:56:48 -08:00
Stephen Morgan
217bfc5e74
lib: Rename alignCell to textCell, minor cleanups.
2021-01-15 12:56:48 -08:00
Stephen Morgan
9ad0eef69b
lib: Update textConcatTopPadded to use Tabular.AsciiWide, same as concatTopPadded.
2021-01-15 12:56:48 -08:00
Stephen Morgan
2c2bd8b27e
lib: Refactor unlinesB to be cleaner and more efficient.
2021-01-15 12:56:48 -08:00
Simon Michael
e1e97f977e
;journal: hints for possible future work related to #1461
2021-01-13 18:15:10 -08:00
Simon Michael
034c317496
journal: allow commodity directive to set style of no-symbol commodity ( #1461 )
...
(cherry picked from commit c5571f6468ab11ffe3cd3f86a86f0b3253be10d1)
2021-01-13 17:57:18 -08:00
Simon Michael
70bcd0a249
;update cabal files ( #1457 , #1458 )
2021-01-13 10:01:55 -08:00
Stephen Morgan
2b545caae5
lib: Calculate value at posting date for register --value=then -M.
2021-01-12 18:20:21 -08:00
Stephen Morgan
b203822cd1
lib: Make sure to add a newline to the end of aregister report.
2021-01-10 20:50:46 -08:00
Simon Michael
c21b666130
csv: handle more sign variations, eg a sign by itself
...
simplifySign now covers a few more sign combinations that might arise.
And in particular, it strips a standalone sign with no number,
which simplifies sign flipping with amount-in/amount-out.
2021-01-07 10:06:38 -08:00
Simon Michael
4952ac22a1
;lib: valuation: improve --debug=2 output
2021-01-07 08:59:04 -08:00
Simon Michael
1ad919bc6d
lib: add level argument to fix traceAtWith
2021-01-07 08:57:25 -08:00
Stephen Morgan
c40db2b1eb
lib: Make sure AtEnd valuation behaviour is consistent between single- and multi-period reports ( #1424 ).
2021-01-05 14:42:09 -08:00
Stephen Morgan
83110e8820
lib,cli: Extend AtThen valuation to all report types.
...
Also adds a postingDate argument to amountApplyValuation, and re-orders
the ValuationType and (Transaction/Posting) arguments to
(transaction/posting)ApplyValuation, to be consistent with
amountApplyValuation.
2021-01-05 14:42:09 -08:00
Simon Michael
3d7d5c0db7
new price search that really finds the shortest path ( #1443 )
...
This one should also reliably prevent runaway searches in the event of more bugs, giving up after 1000 iterations.
2021-01-04 18:42:51 -08:00
Simon Michael
7c9303a15c
lib: valuation: simplify price search code
...
This version tries counting recursions instead of path length, but I
think they are the same.
2021-01-03 09:49:00 -08:00
Simon Michael
73678393b1
lib: valuation: don't hang when finding prices ( fixes #1439 )
...
Searching for prices during valuation no longer now properly excludes
price loops, avoiding near infinite looping with certain
configurations of market prices. Also we now always use a direct price
when available, rather than searching unnecessarily.
Price searching progress info, useful for troubleshooting, is now
displayed with --debug=2.
There could still be some corner cases we don't handle correctly. We
now give up with an error message if the searched price chains get too
long (> 1000). More importantly, we should also give up if the search
iterates too many times, but this is not done yet.
2021-01-02 07:13:07 -08:00
Stephen Morgan
7d3cf1747a
lib: Make consistent naming scheme for showMixedAmount* functions,
...
add conversion between old API and new API in the documentation.
2021-01-02 15:08:09 +11:00
Stephen Morgan
1f891a4145
doc: Fix some outdated documentation.
2021-01-02 15:08:09 +11:00
Stephen Morgan
e63138ef7d
lib,cli: Assorted fixes for older GHC.
2021-01-02 15:08:09 +11:00
Stephen Morgan
e4e533eb9f
lib,cli,ui: Replace some uses of String with Text, get rid of some unpacks, clean up showMixed options.
2021-01-02 15:08:09 +11:00
Stephen Morgan
07a7c3d3a8
lib: Use Text and Text builder only in postingAsLines.
2021-01-02 15:08:09 +11:00
Stephen Morgan
13c111da73
lib,cli,ui: Use WideBuilder for Tabular.AsciiWide.
...
Move WideBuilder to Text.WideString.
2021-01-02 15:08:09 +11:00
Stephen Morgan
b9c00dce61
lib,cli,ui: Implement all showMixed* functions in terms of DisplayAmountOpts and WideBuilder.
2021-01-02 15:08:09 +11:00
Stephen Morgan
0a686e220e
lib: Use AmountDisplayOpts for showAmount*, reducing need for many different named functions.
2021-01-02 15:08:09 +11:00
Stephen Morgan
c86e8a9794
lib: Implement showAmountHelper using AmountBuilder.
2021-01-02 15:08:09 +11:00
Stephen Morgan
5dedec83da
lib: showamountquantity shows directly, rather than parsing string output of show instance for Quantity.
2021-01-02 15:08:09 +11:00
Stephen Morgan
f998a791cf
lib: Remove unused optional width argument for StringFormat.
2021-01-02 15:08:09 +11:00
Stephen Morgan
462a13cad7
lib,cli: Use Text Builder for Balance commands.
2021-01-02 15:08:09 +11:00
Stephen Morgan
089564b04b
lib,cli: Use Text for CompoundPeriodicReport titles.
2021-01-02 15:08:09 +11:00
Stephen Morgan
541c4fc18c
lib,cli: Use Text for CSV values.
2021-01-02 15:08:09 +11:00
Stephen Morgan
e3ec01c3c6
lib,cli,ui: Use Text for showDate and related.
2021-01-02 15:08:09 +11:00
Stephen Morgan
74b296f865
lib,cli: Make showTransaction return Text rather than String.
2021-01-02 15:08:09 +11:00
Stephen Morgan
7e44b89bb4
lib: Remove unused label on TranspactionReport and AccountTransactionsReport.
2021-01-02 15:08:09 +11:00
Stephen Morgan
5752f1c5cb
lib,cli: Use Text Builder for Account Transaction Reports.
2021-01-02 15:08:09 +11:00
Stephen Morgan
12a6435c51
lib: Add wrap convenience function.
2021-01-02 15:08:09 +11:00
Stephen Morgan
646ee0bce5
cli: Using Text Builder for posting reports.
2021-01-02 15:08:09 +11:00
aragaer
2084b845e0
journal: Ignore AUTO commodity when strict checking
...
AUTO commodity is a placeholder for postings with missing amounts. It
should be ignored when doing a strict commodity check.
Fixes #1419
2020-12-31 09:54:23 -08:00
Simon Michael
8306420b61
check: also check "accounts"/"commodities" on demand
...
(cherry picked from commit 0c2bf54f2955e3a25fd0282acc42608f957abaea)
2020-12-31 08:33:36 -08:00
Simon Michael
31ea37a785
;check: accounts, commodities, payees, ordereddates: improve errors
...
Error messages for these four are now a bit fancier and more
consistent. But not yet optimised for machine readability.
Cf #1436 .
Added to hledger-lib: chomp1, linesPrepend[2].
2020-12-30 18:13:34 -08:00
Simon Michael
e59603a04a
;check errors: drop unwanted newline & "strict mode" prefix
2020-12-30 18:08:31 -08:00
Damien Cassou
b47d582583
;check: fixes
2020-12-30 18:08:31 -08:00
Simon Michael
3c232fbd7d
check: add "payees" check requiring payee declarations
2020-12-30 18:08:30 -08:00
Damien Cassou
e092b38631
;lib: add 'payee' directive
2020-12-30 18:08:30 -08:00
Stephen Morgan
a64d1aa6d0
bin: Update bin scripts for current hledger-lib.
...
(cherry picked from commit bc4aef17b7fa13ec0754b93325e1c5e5ee04f1e7)
2020-12-30 08:59:03 -08:00
Simon Michael
6f08631be3
;doc: changelog updates
2020-12-29 10:21:27 -08:00
Simon Michael
4a48e5f8aa
;doc: changelogs
...
(cherry picked from commit 3031c0e7b9
)
2020-12-29 09:39:35 -08:00
Simon Michael
4ce681348d
;update changelogs
...
(cherry picked from commit 1b38996158
)
2020-12-29 09:38:58 -08:00
Simon Michael
f2d2272737
;update changelogs
...
(cherry picked from commit 15e290955f
)
2020-12-29 09:37:54 -08:00
Simon Michael
12447ffab7
;lib: restore list of hledger debug levels
2020-12-26 17:27:28 -08:00
Simon Michael
62660577c3
;update cabal files
2020-12-24 10:22:16 -08:00
Simon Michael
a7e9e9ac0e
doc: merge file format manuals into the hledger manual
...
Also flatten the journal manual topics a bit.
There are pros and cons to this, but I believe the pros outweigh the
cons.
2020-12-24 10:22:05 -08:00
Simon Michael
0a36823094
;update manuals
2020-12-23 10:29:57 -08:00
Simon Michael
2d6ccd616e
;journal: doc: commodity display style examples
2020-12-22 15:38:13 -08:00
Simon Michael
324dfaee49
;update manuals
2020-12-20 20:11:35 -08:00
Simon Michael
3d6dab7683
journal: doc: raise all headings, improving info structure
2020-12-20 20:08:35 -08:00
Simon Michael
0ff65456fa
;doc: info: tweak first/top heading again to improve structure
2020-12-20 20:08:35 -08:00
Simon Michael
9daaabeda2
;doc: simplify manuals' title metadata to fit man/info better
2020-12-20 20:08:35 -08:00
Simon Michael
c92c27d565
doc: tweak manuals' top heading to improve info structure
2020-12-20 20:08:35 -08:00
Stephen Morgan
e406cebcce
lib: Remove unused AtDefault constructor for ValuationType.
2020-12-19 11:59:44 -08:00
Stephen Morgan
46093b8de7
lib,ui: For hledger-ui, do valuation for all valuation types, not just
...
AtCost and AtDefault.
Remove unused valuationTypeIs* functions.
2020-12-19 11:59:44 -08:00
Stephen Morgan
cdec0f9382
lib: Remove special handling of now-inaccessible AtDefault valuation constructor.
...
This simplifies all the *ApplyValuation functions, as they no longer
need mreportdate or multiperiod arguments.
2020-12-19 11:59:44 -08:00
Stephen Morgan
0c23619ae7
lib: Valuation has changed; and -V now acts like --value=end.
2020-12-19 11:59:44 -08:00
Stephen Morgan
8981b3e196
lib: Include empty columns in MultiBalanceReports.
...
This was previously done for CompoundBalanceReport and when --empty was
called; this makes the behaviour consistent.
2020-12-18 20:54:08 -08:00
Stephen Morgan
439eddc8b9
lib: Include price directives when calculating journal end date.
2020-12-16 19:04:33 -08:00
Simon Michael
4d3a9b0a21
;changelogs: whitespace
...
(cherry picked from commit 679e90eb60
)
2020-12-15 20:57:18 -08:00
Simon Michael
47ab7a50a3
;update changelogs
...
(cherry picked from commit 452149dfc8
)
2020-12-15 20:57:09 -08:00
Simon Michael
8db8992cb5
;update changelogs
...
(cherry picked from commit 03f9b756b3
)
2020-12-15 20:56:44 -08:00
Simon Michael
105f7d2944
;tools: split defs.m4 to minimise manual rebuilding
2020-12-15 09:39:29 -08:00
Simon Michael
e5a12683d7
;update manuals
2020-12-15 09:03:38 -08:00
Simon Michael
df5c755d96
;lib, cli: remove old unused parsec dependency
2020-12-15 08:33:05 -08:00
Simon Michael
9afccde16f
;update cabal files
2020-12-14 12:31:01 -08:00