Commit Graph

1505 Commits

Author SHA1 Message Date
Simon Michael
bfe12c33de ;doc: cli: balance: fix link to Budgeting page 2022-12-30 10:05:50 -10:00
Simon Michael
5a8e63d24d ;fix: bal: add missing --layout=tidy to help 2022-12-14 12:21:35 -10:00
Simon Michael
e819e02372 ;doc: bal: more balance doc cleanups 2022-12-14 09:03:55 -10:00
Simon Michael
cf607adfcf ;doc: update CLI usage texts 2022-12-14 07:53:03 -10:00
Simon Michael
2ba91b1195 ;doc: bal: clean up/reorder balance command doc 2022-12-14 07:52:53 -10:00
Simon Michael
2902769616 ;doc: cli, bal: cleanups 2022-12-14 06:36:28 -10:00
Simon Michael
985c15f039 ;doc: cli: clean up/rename directives sections 2022-12-11 01:59:26 -10:00
Simon Michael
fc5d1414f9 ;doc: cli: fix comment links, drop old doc 2022-12-11 01:24:10 -10:00
Simon Michael
ace185f7d2 ;doc: update old manual links 2022-12-10 18:56:47 -10:00
Simon Michael
474ad22b94 ;doc: officially rename "transaction prices" to "costs" in docs
(though not in code)
2022-12-10 18:50:45 -10:00
Simon Michael
3698f8cf90 fix: balcmds: the table layout in HTML output with --layout=bare 2022-12-10 10:22:26 -10:00
Simon Michael
2eadd2497b ;doc: codes: improve example
suggested by Rob Nielsen
2022-12-09 07:57:10 -10:00
Simon Michael
a5b4d80e24 ;doc: update CLI usage texts 2022-12-01 12:24:12 -08:00
Simon Michael
dedb331845 imp: --version strings no longer show + for dirty repos as it's buggy 2022-12-01 12:20:23 -08:00
Simon Michael
a929f8ec8a dev: Cli: cleanup 2022-12-01 12:20:19 -08:00
Simon Michael
d5682aa644 imp: print: --match now respects -o and -O 2022-11-24 19:50:47 -05:00
Simon Michael
b67cb97fff ;doc: print: mention "fuzzy" for discoverability 2022-11-09 09:06:38 -10:00
Simon Michael
7997007dcf imp: print: a failed --match now returns a non-zero exit code 2022-11-09 08:56:48 -10:00
Simon Michael
892eb06396 ;dev: ui: replace "curses interface" with TUI 2022-11-07 16:48:54 -10:00
Simon Michael
06bc09a36f dev: comments 2022-11-06 07:59:45 -10:00
Simon Michael
c25c5cef44 fix: make no-argument --debug flag work with ui & web also 2022-11-03 08:13:58 -10:00
Simon Michael
603fae70c0 dev: lib: clean up/simplify debug helpers 2022-10-31 11:26:11 -10:00
Simon Michael
d5fa141176 ;doc: update CLI usage texts 2022-10-08 13:18:29 -10:00
Simon Michael
ca5847fc08 imp: accounts: clarify flag help; prioritise flags in order of help 2022-10-08 13:18:29 -10:00
Simon Michael
4ecc57461a imp: accounts: -u, -d 2022-10-08 08:22:10 -10:00
Simon Michael
b16a02b2e6 imp: accounts: --unused 2022-10-08 08:16:07 -10:00
Simon Michael
360ef833ae ;doc: update CLI usage texts 2022-10-05 08:42:09 -10:00
Simon Michael
3e42851958 feat: accounts: add --undeclared and --find flags 2022-10-05 08:41:37 -10:00
Simon Michael
ae8d297396 ;doc: update CLI usage texts 2022-10-01 16:09:16 -10:00
Simon Michael
7d1b1cadce fix: add: doc: update tutorial link 2022-09-27 13:40:40 -10:00
Simon Michael
d4a1718690 fix: balcmds: fix empty html columns fix (#1933) 2022-09-14 17:25:18 -10:00
Simon Michael
b9d2aa7b54 fix: balcmds: handle an empty totals column in html output (#1933) 2022-09-14 16:56:28 -10:00
Simon Michael
93ce75d756 imp: dev builds with uncommitted changes now show + in --version 2022-09-08 12:23:59 -10:00
Simon Michael
5deda67658 imp: add: update/improve invalid date message 2022-09-01 15:30:36 -07:00
Simon Michael
c80c72d7cd dev: lib, cli, bin: enable/fix name shadowing warnings
And a few other cleanups.
2022-08-23 12:16:15 +01:00
Simon Michael
96db4fe9cc dev: ui: enable/fix name shadowing warnings 2022-08-23 02:57:59 +01:00
Simon Michael
8f65f8a096 ;doc: update CLI usage texts 2022-08-23 02:02:19 +01:00
Simon Michael
efa1879a11 ;doc: cli: help: more updates 2022-08-22 08:26:32 +01:00
Simon Michael
61d2c047e1 ;doc: update CLI usage texts 2022-08-22 08:21:24 +01:00
Simon Michael
9d2c9bd85f ;doc: cli: help: more updates 2022-08-22 08:21:01 +01:00
Simon Michael
2d9b6b91b5 ;doc: update CLI usage texts 2022-08-22 07:58:41 +01:00
Simon Michael
8eb1e0883a ;doc: cli: help, common tasks: update 2022-08-22 07:45:23 +01:00
Stephen Morgan
c966a0f413 fix!: cbr: Remove old account type query code. (#1921)
This replaces the old journal*AccountQuery with the new Type query. This
enables uniform treatment of account type, and fixes a subtle bug
(#1921).

Note that cbcsubreportquery no longer takes Journal as an argument.
2022-08-21 08:27:51 +01:00
Simon Michael
5fd5cd5b85 imp: acc: --declarations -> --positions; add --directives
And tweak the layout of flags in --help.
2022-08-18 05:08:10 +01:00
Simon Michael
8ec31b079c imp: accounts: --declarations shows that info, not --debug (#1909) 2022-08-16 09:13:30 +01:00
Simon Michael
035f2ac4bb imp: accounts: at --debug 2, show account declaration positions (#1909) 2022-08-16 09:13:30 +01:00
Simon Michael
3b34987bdd dev: accounts: clarifications 2022-08-04 19:01:11 +01:00
Charlotte Van Petegem
75fc6767a9 fix: roi: make sure empty cashflows are skipped when determining first cashflow
Empty cashflows are added when the begin date of the report is before the first
transaction.
2022-08-03 18:16:42 +01:00
Simon Michael
910b37abf8 fix: check: recentassertions: drop the cleared requirement (#1899)
It was causing trouble and complicating things too much.
I wanted it as another signal of being "caught up", but YAGNI.
2022-08-03 09:53:55 +01:00
Simon Michael
c025d228a1 doc: check: add more details about recentassertions 2022-08-01 06:53:04 +01:00
Simon Michael
1ed8c20978 feat: check recentassertions disallows assertion lag > 7 days
hledger check recentassertions (or flycheck-hledger if you enable this
check) will complain if any balance-asserted account does not have a
balance assertion within 7 days before its latest posting.  This aims
to prevent the situation where you are regularly updating your
journal, but forgetting to check your balances against the real world,
eventually requiring you to dig back through months of data to find
the error.
2022-08-01 06:53:04 +01:00
Stephen Morgan
c54fb4d514 imp: cost: Allow matching equity conversion equity postings to
transaction prices.

When given --infer-costs, hledger will now separately infer transaction
prices for different prices. Given a pair of adjacent conversion
postings, hledger will check if there is a single posting with a
transaction price which matches both the amounts. If so, it associates
those conversion postings to that priced post.

If it can't find any transaction price postings which match, it will
find the first non-transaction price post which matches one of the two
amounts, and will add a transaction price to that, and associate them.
2022-07-15 12:32:38 +01:00
Stephen Morgan
07d1b01287 imp: cost: Allow inferring cost from conversion equity postings with --infer-costs.
When given --infer-equity, hledger will change transaction prices to balancing equity postings. This introduces the inverse operation, --infer-costs, which will match balancing equity postings and transform them into a transaction price, allowing --cost to work properly with them. This is only a partial inverse as it needs to use some heuristics to match the postings which will not work in complicated cases.

Specifically, when hledger finds exactly two conversion postings in a transaction (by default, subaccounts of equity:conversion or equity:trad(e|ing)), it will find the first posting in the transaction whose amount is negative one of the conversion posting amounts, and inserts the corresponding transaction price.
2022-07-15 12:32:38 +01:00
Simon Michael
9a34145569 ;doc: update CLI usage texts 2022-07-12 16:01:33 +01:00
Simon Michael
82bfd2bebb ;doc: bse: clarify, link to account types 2022-06-07 02:24:53 +01:00
Simon Michael
ecb8023892 ;doc: bs, cf, is: clarify, link to account types 2022-06-07 02:17:26 +01:00
Simon Michael
496b59060f ;doc: bs, cf: add wikipedia link 2022-06-07 02:09:23 +01:00
Stephen Morgan
9155d679fe fix!: Revert "fix!: utf-8: Use with-utf8 to ensure all files are read and written with utf8 encoding. (#1619)"
This reverts commit e233f001c5.

This would break at least some people's workflow. A lighter touch is
probably sufficient.
2022-06-01 09:35:18 +10:00
Simon Michael
2d581d7d4d ;doc: update CLI usage texts 2022-05-23 05:42:27 -10:00
Simon Michael
43c0ca06c5 doc: cf: update cash account inference description for 1.25 2022-05-23 05:28:27 -10:00
Simon Michael
307f723b0a lib: simpler, more consistent names for check functions
API changes:
journalCheckAccountsDeclared
journalCheckCommoditiesDeclared
journalCheckPayeesDeclared
->
journalCheckAccounts
journalCheckCommodities
journalCheckPayees
2022-05-21 18:29:13 -10:00
Stephen Morgan
e233f001c5 fix!: utf-8: Use with-utf8 to ensure all files are read and written with utf8 encoding. (#1619)
May also fix #1154, #1033, #708, #536, #73: testing is needed.

This aims to solve all problems where misconfigured locales lead to
parsers failing on utf8-encoded data. This should hopefully avoid
encoding issues, but since it fundamentally alters how encoding is dealt
with it may lead to unexpected outcomes. Widespread testing on a number
of different platforms would be useful.
2022-05-22 13:12:19 +10:00
Simon Michael
db26456e1c imp: consolidate ordereddates check under Hledger.Read.Checks too
And remove the last vestiges of older more complex behaviour.
ordereddates now always checks all transactions in each file,
unaffected by a query. (But still affected by --date2).
2022-05-09 00:05:39 -10:00
Simon Michael
810a868c88 ref: consolidate most checks under Hledger.Read.Checks
and error message helpers in Hledger.Read.Error.
2022-05-09 00:04:33 -10:00
Simon Michael
a00dc04e0d imp: check: uniqueleafnames: use the standard error format (#1436)
Hledger.Read.Common:
export makePostingErrorExcerpt
2022-04-25 02:56:59 -10:00
Simon Michael
66d0beea5e imp: check: ordereddates: use the standard error format (#1436)
Hledger.Read.Common:
export makeTransactionErrorExcerpt
2022-04-25 02:56:59 -10:00
Simon Michael
0d232ed673 imp: check: exit with error' for consistent output 2022-04-25 02:56:59 -10:00
Simon Michael
5ee1e1d62f ;doc: fixups suggested by afm 2022-04-15 15:07:17 -10:00
Simon Michael
9f8381426c ;doc: update CLI usage texts 2022-04-14 12:39:09 -10:00
Simon Michael
318ec0a701 doc: tags: move most docs after the flags, like some other commands 2022-04-14 12:37:13 -10:00
Simon Michael
5af224d534 fix: tags: also match accounts declared but not used (#1857)
By default, all account declarations and all transactions are searched;
but when there's a query involving transaction fields,
account declarations unrelated to the matched transactions are not searched.

added:
queryIsCode
queryIsTransactionRelated
2022-04-14 12:28:43 -10:00
Simon Michael
b82021e0b6 imp: accounts: demote --debug 1 output to a more appropriate 4 2022-04-14 10:58:31 -10:00
Simon Michael
5858bb7b6d imp: ghc9.2: fix an incomplete-uni-pattern warning 2022-03-25 20:45:06 -10:00
Simon Michael
b3aff7a394 imp: add: avoid deprecated time function 2022-03-25 20:10:18 -10:00
Stephen Morgan
31c7c5d1ca fix: Clean up build failures due to redundant imports and duplicate
function.
2022-03-26 11:37:32 +11:00
Stephen Morgan
603b2e9f09 ref: Use ExceptT String IO a instead of IO (Either String a).
This increases composability and avoids some ugly case handling. We
re-export runExceptT in Hledger.Read.

The final return types of the following functions has been changed from
IO (Either String a) to ExceptT String IO a. If this causes a problem,
you can get the old behaviour by calling runExceptT on the output:
readJournal, readJournalFiles, readJournalFile

Or, you can use the easy functions readJournal', readJournalFiles', and
readJournalFile', which assume default options and return in the IO
monad.
2022-03-25 14:23:27 -10:00
Stephen Morgan
cbdd86f4dc imp: reg: areg: Align to first 1000 postings by default, rather than 100.
This has the same performance characteristics for a big decrease in alignment
issues. 1000 postings seems to still put it under the memory bottleneck.
2022-03-11 13:25:38 -10:00
Simon Michael
129f37cfe6 reg: tweak --align-all help (#1839) 2022-03-11 07:16:55 -10:00
Simon Michael
64d1927384 reg: document --align-all (#1839) 2022-03-11 07:16:33 -10:00
Stephen Morgan
c0cc9e73c1 dev: reg: areg: Be more clever about register and aregister alignment.
When rendering register or aregister reports, calculate the amount /
balance width based on the first 100 items, and start rendering in that
way. If you encounter a longer one, update and continue rendering. This
will result in adjustment of column width for long reports, but allows
us to save a lot more performant/efficient.

This can be disabled with the new --align-all flag.

We also only render each amount once, rather than twice as before, by
storing the rendered amount in a tuple.
2022-03-11 06:47:48 -10:00
Stephen Morgan
cbc985d411 dev: reg: areg: Speed up reg and areg by only aligning to first 1000 items. 2022-03-10 17:42:04 -10:00
Stephen Morgan
4a80551406 fix: price: Make sure inferred market prices have the correct sign with
total prices. (#1813)

Also reduce duplication for inferring market prices (previously it was
done separately in both Hledger.Data.Journal and
Hledger.Cli.Commands.Prices), and remove *TotalPriceToUnitPrice
functions, since unit prices cannot represent all total prices.

Add a helper function numDigitsInt to get the number of digits in an
integer, which has a surprising number of ways to get it wrong.
2022-03-10 17:34:49 -10:00
Stephen Morgan
19ed6d3f00 cln!: sourcepos: Use megaparsec-supplied sourcePosPretty.
Change showSourcePos to sourcePosPretty, and showSourcePosPair to
sourcePosPairPretty.
2022-03-10 16:56:28 -10:00
Stephen Morgan
73925ae965 fix: types: Ensure auto postings can match against and be matched by type: queries.
This requires checking parent accounts for any new accounts introduced by auto postings which do not exist in the original journal.

Also refactor journalFinalise to only call journalPostingsAddAccountTags once, and use fewer intermediate variables.
2022-02-03 15:32:00 -10:00
Simon Michael
807717805a feat: accounts: --types shows account types (#1820) 2022-02-01 18:06:19 -10:00
Simon Michael
336c4a7b33 imp: cleaner error messages when parsing cli (less "user error") 2022-01-31 16:44:13 -10:00
Simon Michael
9c872c2d9c imp: areg: clearer, more consistent error messages 2022-01-31 16:44:13 -10:00
Simon Michael
45127dc5f5 feat: new type: query for easy matching by account type
type:TYPES, where TYPES is any of the (case insensitive) letters
ALERXCV, matches accounts by their declared or inferred type.
(See https://hledger.org/hledger.html#account-types.)
This should work with most commands, eg:

    hledger bal type:al
    hledger reg type:x

API changes:

Journal has a new jaccounttypes map.
The journalAccountType lookup function makes it easy to check an account's type.
The journalTags and journalInheritedTags functions look up an account's tags.
Functions like journalFilterPostings and journalFilterTransactions,
and new matching functions matchesAccountExtra, matchesPostingExtra
and matchesTransactionExtra, use these to allow more powerful matching
that is aware of account types and tags.
2022-01-31 16:44:13 -10:00
Simon Michael
248ddf9378 dev: more thorough Journal anonymisation, and a note (#1817) 2022-01-30 09:47:52 -10:00
Simon Michael
56be63e6f1 feat: queries can now match account tags (#1817)
Accounts, postings, and transactions can now all be filtered by the
tags in an account's declaration. In particular it's now possible to
more reliably select accounts by type, using their type: tag rather
than their name:

    account myasset       ; type:Asset
    account myliability   ; type:Liability

    $ hledger accounts tag:type=^a
    myasset

Accounts inherit tags from their parents.

API changes:
A finalised Journal has a new jdeclaredaccounttags field
for easy lookup of account tags.
Query.matchesTaggedAccount is a tag-aware version of matchesAccount.
2022-01-30 09:47:52 -10:00
Stephen Morgan
1d9be4c2de cln: print, close: Check the show_costs_ option instead of directly
checking the --show-costs flag.
2022-01-26 08:07:11 -10:00
Stephen Morgan
ba0eec9132 ref: Return the interval split in reportSpan, to reduce the number
of different places we call splitSpan and ease refactoring.
2022-01-26 08:05:37 -10:00
Stephen Morgan
2a51b6e9a4 fix: layout: Commodity symbols should be omitted in --layout=bare when
all amounts are zero. (#1789)
2022-01-26 07:58:14 -10:00
Simon Michael
fbf826a813 ;doc: update CLI usage texts 2022-01-21 08:32:29 -10:00
Simon Michael
1716a3e55c ;doc: roi: dear lord fix links again 2022-01-21 08:20:05 -10:00
Simon Michael
209a726e26 ;doc: roi: make links useful in plain text docs
And update how-to url.
2022-01-21 08:17:55 -10:00
Simon Michael
beeb7b157c ;doc: roi: fix link 2022-01-21 08:13:26 -10:00
Simon Michael
bf2ac4f18b ;doc: roi: formatting 2022-01-21 08:13:26 -10:00
Stephen Morgan
57d055b643 fix: cost: Add inferred equity postings during journal finalisation, so
they can be matched by queries.
2022-01-16 18:37:18 -10:00
Simon Michael
6e12be15df ;doc: update CLI usage texts 2022-01-15 08:56:45 -10:00