Commit Graph

333 Commits

Author SHA1 Message Date
Simon Michael
96cbc4697c dev: errors: update tests 2022-07-13 17:58:55 +01:00
Simon Michael
c22e9f6cc8 dev: HLEDGER selects the hledger version when running error tests 2022-07-13 17:43:21 +01:00
Simon Michael
ebec23f614 dev: generate more robust error message tests 2022-07-13 17:43:11 +01:00
Simon Michael
1c67d0860e imp: errors: more error prettification 2022-07-13 03:59:44 +01:00
Simon Michael
84f951e020 imp: errors: assertions, balanced: more consistent format
Move the unique text out of the first line and down to the
explanation.

Also, begin some general punctuation, capitalisation and wording
improvements.
2022-07-12 16:53:08 +01:00
Simon Michael
7068517f2c fix: bal: budget goals were ignoring rule-specified start date 2022-07-12 10:46:29 +01:00
Simon Michael
6b42514dbc fix: errors: doc 2022-07-10 13:39:33 +01:00
Simon Michael
1da7d4b7f7 imp: balanced, balancednoautoconversion: use new error format (#1436) 2022-07-10 12:12:03 +01:00
Simon Michael
b7e6583a72 imp: balance assertions now use new error format (#1436) 2022-07-10 11:39:41 +01:00
Simon Michael
42bcbad2fd imp: bal: budget goals now respect -H (#1879) 2022-07-09 09:59:17 +01:00
Stephen Morgan
3e60e784f3 fix: bal: Allow cumulative gain and valuechange reports
Previously, --cumulative with --gain or --valuechange would produce an
empty report. This fixes this issue to produce a reasonable report.
2022-07-08 16:34: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
65e913b7c5
Merge pull request #1834 from Xitian9/utf8
Use with-utf8 and don't use Data.Text.IO.
2022-05-21 17:50:59 -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
Stephen Morgan
15a5d5d38b
Merge pull request #1814 from Xitian9/csverror
imp: csv: Give an error if unable to substitute csv templates. (#1803)
2022-05-22 11:35:39 +10:00
Simon Michael
d9d8a298ed ;dev: tests: errors: readme 2022-05-01 10:14:55 -10:00
Simon Michael
6f4a5830b2 dev: tests: errors: add missing test journal (#1436) 2022-04-25 02:56:59 -10:00
Simon Michael
a1c9aa4114 dev: tests: errors: update tests/readme (#1436) 2022-04-25 02:56:59 -10:00
Simon Michael
45981832a6 dev: tests: errors: generate more robust tests more robustly (#1436) 2022-04-25 02:56:59 -10:00
Simon Michael
1a08baccc4 doc: update errors status (#1436) 2022-04-25 02:56:59 -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
7e45ab338f imp: check: show column ranges properly (#1436) 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
1ff0f76524 cli: generate/update tests and readme from error test journals 2022-04-25 02:56:59 -10:00
Simon Michael
1130ad1abd doc: errors: update status (#1436) 2022-04-25 02:56:59 -10:00
Simon Michael
6ec0e05c42 imp: check: commodities: use the standard error format (#1436) 2022-04-25 02:56:59 -10:00
Simon Michael
cec1e8e3f1 doc: errors status update (#1436) 2022-04-25 02:56:59 -10:00
Simon Michael
f47d423a67 lib: error' now adds an Error: prefix 2022-04-25 02:56:59 -10:00
Simon Michael
183d8e6ef6 test: comment out failing test as intended
Fixes failing tests in master, which I had managed to merge because
of a ;-prefixed commit message.
2022-04-17 07:46:33 -10:00
Simon Michael
8801ee0085 ;doc: errors: update 2022-04-15 16:03:22 -10:00
Simon Michael
6b7bc064d7 ;doc: errors: update 2022-04-15 15:53:55 -10:00
Simon Michael
33d15df879 ;doc: errors: update 2022-04-15 15:49:03 -10:00
Simon Michael
3123fe873a ;bs: disabled test for an account type detection bug (#1858) 2022-04-15 15:30:24 -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
7b4ab1e37a ref: tags test 2022-04-14 10:58:31 -10:00
Stephen Morgan
8cc59df513 fix: Ensure date2 is used for journal valuation if requested. (#1851) 2022-04-14 07:27:17 -10:00
Stephen Morgan
c48d98c515 imp: csv: Substitute empty string if csv template fails. (#1803) 2022-03-29 18:03:33 +11:00
Simon Michael
7092ef9a89 fix: commented test for #1849 2022-03-25 19:42:49 -10:00
Simon Michael
9a8fb529f3 imp: add a test clarifying periodic txns with forecast (#1845) 2022-03-25 16:30:35 -10: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
Simon Michael
4eeb646912 test: errors: doc updates 2022-03-20 07:21:31 -10:00
Simon Michael
2ed4201e36 test: errors: doc updates 2022-03-18 12:47:12 -10:00
Simon Michael
10160351e9 test: errors: doc updates 2022-03-18 12:32:54 -10:00
Simon Michael
81c7f91202 test: errors: doc updates 2022-03-18 12:31:28 -10:00
Simon Michael
726978d1c5 test: errors: doc updates 2022-03-18 12:22:36 -10:00
Simon Michael
78da46c789 test: errors: doc updates 2022-03-18 12:10:36 -10:00
Simon Michael
d3cabb5494 test: errors: doc updates 2022-03-18 12:01:50 -10:00
Simon Michael
25e706eca0 test: errors: doc updates 2022-03-18 11:03:21 -10:00
Simon Michael
8729fc0c47 test: errors: note versions 2022-03-18 09:02:06 -10:00
Simon Michael
512ebdfd5f test: errors: fix link, update summary 2022-03-18 08:50:20 -10:00
Simon Michael
eaa6e202f3 test: errors: show current errors in doc, generated by showall 2022-03-18 08:25:58 -10:00
Simon Michael
f7625343f6 test: errors: rename tests like check command's checks 2022-03-18 07:16:04 -10:00
Simon Michael
2b2d643333 test: errors: make tests runnable 2022-03-18 06:59:33 -10:00
Simon Michael
3775b97f04 test: errors: document 2022-03-17 19:44:47 -10:00
Simon Michael
6510ba3c95 test: examples for reproducing journal errors 2022-03-17 17:38:26 -10:00
Stephen Morgan
e6bf04fce3 fix: aliases: Make sure we can escape forward slashes in account
aliases, but otherwise the regular expression handler handles escapes.
2022-03-16 19:01:03 -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
a65e64115a fix: alias: Allow escaped characters in regular expression aliases. (#982) 2022-03-10 17:00:03 -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
2f47ae05c6 fix: csv: Allow unicode in field references for csv. (#1809) 2022-02-06 14:16:17 -10:00
Stephen Morgan
31fdcdb8ef !imp: type: Change the default account inference for Cash accounts to only match
^assets?(:.+)?:(cash|bank|che(ck|que?)(ing)?|savings?|current)(:|$)

This should have no effect outside the cash report.

The rule for auto-detecting "Cash" (liquid assets) from account names
has changed in this release - see [Account types]. This is to simplify
how account types are detected and configured. If you use the cashflow
report without explicitly declaring accounts as Cash, you might notice a
change, and might need to add explicit account type: tags.
2022-02-03 15:32:00 -10:00
Stephen Morgan
2e4cfccf1b fix: types: Make sure type: query will correctly match subtypes, so
type:a will also match cash accounts, and type:e will also match
conversion accounts.
2022-02-03 15:32:00 -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
Stephen Morgan
a16c88b1b1 fix: Make sure cash and conversion account types are correctly
determined when there are no explicit declarations.
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
dbbd300aa2 ;dev: accounts: test cleanup 2022-02-01 18:03:46 -10:00
Simon Michael
cb040dbe29 imp: type: forgot the tests 2022-01-31 16:44:13 -10:00
Stephen Morgan
91441bad8f test: Make sure --today is passed to --forecast tests so they keep
working.
2022-01-31 15:12:04 -10:00
Simon Michael
3472c3cb6d ;dev: number anon tests 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
Simon Michael
2f48307c63 dev: query-tag.test -> format 3 2022-01-30 09:47:52 -10:00
Stephen Morgan
df4949ad1a imp!: journal: Remove deprecated account type code syntax from account
directives.

Previously, you declare an account type with the following format:
account assets  A
This has been deprecated since 1.13, and should now be declared with one
of:
account assets  ; type:A
account assets  ; type:asset
2022-01-28 12:38:38 -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
Stephen Morgan
55a022a941 fix: strict: Make sure forecast transactions and auto postings are
checked with --strict. (#1810)
2022-01-26 07:57:13 -10:00
Simon Michael
e16fa51dd5 imp: nicer invalid balance assignment errors (fix tests) 2022-01-21 17:45:23 -10:00
Stephen Morgan
8cd9e81c34 fix: budget: Make sure boring parents of unbudgeted accounts are not
elided if they have a budget. (#1800)

This only affects calls with --budget and -E, but not with --no-elide.
2022-01-21 09:11:04 -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
Stephen Morgan
5006e26995 imp: check: Do not check commodities for zero amounts with empty
commodity. (#1767)
2022-01-16 08:11:02 -10:00
Dmitry Astapov
ce54fb8ae9 ;roi: fixes #1791 (fix TWR when investment=0, several pnls per day) 2021-12-27 08:10:22 -10:00
Simon Michael
9c173bc18b journal: tests/docs for aliases corrupting account names (#1788) 2021-12-22 14:59:13 -10:00
Stephen Morgan
8eedbbbe87 imp: cost: Generate totally balanced conversion postings for amounts with costs.
Introduce --infer-equity option which will generate conversion postings.
--cost will override --infer-equity.

This means there will no longer be unbalanced transactions, but will be
offsetting conversion postings to balance things out. For example.

2000-01-01
  a   1 AAA @@ 2 BBB
  b  -2 BBB

When converting to cost, this is treated the same as before.
When used with --infer-equity, this is now treated as:

2000-01-01
  a                               1 AAA
  equity:conversion:AAA-BBB:AAA  -1 AAA
  equity:conversion:AAA-BBB:BBB   2 BBB
  b                              -2 BBB

There is a new account type, Conversion/V, which is a subtype of Equity/E.
The first account declared with this type, if any, is used as the base account
for inferred equity postings in conversion transactions, overriding the default
"equity:conversion".

API changes:

Costing has been changed to ConversionOp with three options:
NoConversionOp, ToCost, and InferEquity.
The first correspond to the previous NoCost and Cost options, while the
third corresponds to the --infer-equity flag.  This converts transactions with costs
(one or more transaction prices) to transactions with equity:conversion postings.
It is in ConversionOp because converting to cost with -B/--cost and inferring conversion
equity postings with --infer-equity are mutually exclusive.

Correspondingly, the cost_ record of ReportOpts has been changed to
conversionop_.

This also removes show_costs_ option in ReportOpts, as its functionality
has been replaced by the richer cost_ option.
2021-12-21 10:50:13 -10:00
Simon Michael
d1a0d37bd1 fix: bal: --declared now respects not:ACCT (fix #1783) 2021-12-09 12:58:22 -10:00
Simon Michael
08b72ae9f7 dev: bal: note yet another --declared issue 2021-12-08 18:21:32 -10:00
Simon Michael
2e79e53f12 ;dev: bal: note possible --declared issue 2021-12-08 18:14:23 -10:00
Stephen Morgan
c4004fca28 imp: csv: Do not display thousands separators when outputting csv. 2021-12-06 15:17:46 -10:00
Stephen Morgan
29ee0c331f imp: csv: Ignore --row-totals with tidy csv output. 2021-12-06 14:43:43 -10:00
Stephen Morgan
fb0472e0e9 imp: csv: Handle --layout=tidy with the legacy balance report.
Note that this gives output compatible with the multi balance report,
which means it is different from the csv with the legacy balance report.
This means tools only need to be able to handle one tidy csv format.
2021-12-06 13:49:01 -10:00
Stephen Morgan
71646f993c imp: csv: Include the start and end dates of intervals, as well as
string representation of the period, in tidy csv output, and never
include row totals or averages.
2021-12-06 13:49:01 -10:00
Stephen Morgan
e42120da26 ;test: Rename commodity-column.test to layout.test, and replace
--commodity-column with --layout=bare in tests.
2021-12-05 16:06:44 -10:00
Stephen Morgan
7ccf7430d0 imp: csv: Allow for generating tidy csv with --layout=tidy.
This puts every date in a separate row, which is more suitable for
many graphing programs.
2021-12-05 16:06:44 -10:00
Simon Michael
4504c173fb ;cln: clarify #1698 test 2021-11-25 11:55:58 -10:00
Simon Michael
7f320ebfa9 imp: balcmds: support --declared on bs/cf/is also (#1765) 2021-11-25 11:55:58 -10:00
Simon Michael
6319d6148f feat: bal: with --declared, include declared leaf accounts (#1765)
Together with -E, this shows a balance for both used and declared
accounts (excluding empty parent accounts, which are usually not
wanted in list-mode reports).

This is somewhat consistent with --declared in the accounts and payees
commands, except for the leaf account restriction.

The idea of this is to be able to see a useful "complete" balance
report, even when you don't have transactions in all of your declared
accounts yet. I mainly want this for hledger-ui, but there's no harm
in exposing it in the balance CLI as well.
2021-11-23 09:47:04 -10:00
Simon Michael
94d92b9760 Revert "feat: bal: with --declared, include all declared accounts (#1765)"
This reverts commit a5e19b7391.
(It breaks filtering by account.)
2021-11-22 12:06:23 -10:00
Simon Michael
a5e19b7391
feat: bal: with --declared, include all declared accounts (#1765)
Together with -E, this allows showing a balance for all accounts, both
used and declared. I mainly want this for hledger-ui, but there's no
harm in exposing it in the balance command as well. This is somewhat
consistent with the accounts and payees commands.
2021-11-22 11:08:33 -10:00
Simon Michael
45da9bb594 bal: fix bcexample test 2021-11-22 10:14:37 -10:00
Stephen Morgan
186995fc8b fix: balance: Balance reports with --depth=0 should report on true
values, not zero everywhere. (#1761)
2021-11-20 15:47:57 -10:00
Lawrence
fb817ffa55 imp: journal: support decimal-mark directive in journal files
To match csv-rule and override amount-style as described in
https://github.com/simonmichael/hledger/issues/1670
2021-11-18 22:17:07 -10:00
Stephen Morgan
d82416b7b9 imp: balance: Add single-line display with elision back in, this time
with a separate option --layout=wide,WIDTH.
2021-11-18 21:26:02 -10:00
Stephen Morgan
8f1ae08f0a test: balance: Add tests for --layout options. 2021-11-18 21:26:02 -10:00
Stephen Morgan
de2776c996 imp!: balance: Stop eliding long amounts. (#1739)
This feature has caused a lot of confusion, and we now have better ways
of making sure columns don't get too wide.
2021-11-18 21:26:02 -10:00
Stephen Morgan
3dce61ea09 fix: prices: Do not try to generate prices when there would be a zero
denominator.

Also correctly generate reverse prices for zero amounts.
2021-11-18 20:59:52 -10:00
Stephen Morgan
87a7a586d4 fix: csv: Handle multiple zero amounts in postings in csv files. (#1733) 2021-11-18 20:48:55 -10:00
Stephen Morgan
f345fd0b78 imp: balance: Allow --related flag for balance reports. (#1469) 2021-11-08 14:03:50 -10:00
Stephen Morgan
7597e525a3 fix: balance: Balance reports should consider date: queries when calculating
report span with --date2. (#1745)
2021-11-06 08:51:53 -10:00
Stephen Morgan
9d5397deb6 fix: print: auto: The print command should always display inferred
amounts for --auto generated postings. (#1276)
2021-10-31 09:42:58 -10:00
Simon Michael
e4263e69e1 areg: begin respecting --date2: show txns' date2 (#1731) 2021-10-10 10:34:45 -10:00
Stephen Morgan
94d9c28a63 cln: Replace all uses of deprecated !include with include.
Also include a test which makes sure !include is still parsed.
2021-09-27 15:04:35 -10:00
Stephen Morgan
ce4fcfae84 imp!: value: For register reports with no reporting interval and
--value=end, historical reports should be valued at journal/report end
date.
2021-09-24 11:32:41 -10:00
Stephen Morgan
bf3e82f780 imp: pretty: Replace --pretty-tables argument with --pretty=WHEN
argument, which takes yes or no. Default is no for now.
2021-09-21 14:53:52 -10:00
Arjen Langebaerd
c0fd79a40e fix: extend application of commodity style to prices (except precision) and make --commodity-style a general flag 2021-09-20 08:55:55 -10:00
Simon Michael
9dca1dc7b6 imp: prices: use --infer-market-prices instead of --costs
This command now reuses the --infer-market-prices flag, and uses
a new --infer-reverse-prices flag, instead of the old
--costs and --inverted-costs flags, which are now deprecated and hidden.
2021-09-18 12:12:31 -10:00
Simon Michael
daa9fddec9 imp: cli: --infer-market-price renamed to --infer-market-prices
It was too easy to get this wrong, even some of the docs did.
Now either plural or singular spelling works
(since we accept flag prefixes).
2021-09-18 12:12:31 -10:00
Stephen Morgan
62351dd329 fix: bal: Make sure boring parent accounts in compound balance reports
include historical postings when account declarations have undeclared
parents. (#1698)
2021-09-17 15:24:19 -10:00
Stephen Morgan
50f73b7434 fix: balance: Show all empty accounts in flat balance reports. (#1688)
Previously we only showed empty leaves.
2021-09-08 18:17:27 -10:00
Simon Michael
db45b13249 test: more detailed commodity directive tests 2021-09-07 10:19:01 -10:00
Simon Michael
cea8bc0558 test: split/rename directive tests 2021-09-07 09:51:49 -10:00
Simon Michael
344c421a3b test: update shelltest format 2021-09-07 09:47:31 -10:00
Stephen Morgan
c07ad29a87 imp!: forecast: Implements more intuitive logic for the forecast interval. (#1648)
The forecast period begins on:
- the start date supplied to the `--forecast` argument, if present
- otherwise, the later of
  - the report start date if specified with -b/-p/date:
  - the day after the latest normal (non-periodic) transaction in the journal, if any
- otherwise today.
It ends on:
- the end date supplied to the `--forecast` argument, if present
- otherwise the report end date if specified with -e/-p/date:
- otherwise 180 days (6 months) from today.

Note that the previous behaviour did not quite match the documentation,
so this also acts as a bug fix for #1665.
2021-08-26 20:32:30 -10:00
Stephen Morgan
65e10aebd2 dev: test: Convert forecast.test to shelltestrunner format 3
We'll soon implement some tests that have the same input, so this will
reduce duplication.
2021-08-26 20:32:30 -10:00
Stephen Morgan
59b89947eb fix: aregister: Make multicommodity amounts are properly aligned in
aregister. (#1656)

This also switches to the renderTable interface for laying out
aregister, just as in postingsReport.
2021-08-22 18:55:37 -10:00
Stephen Morgan
06312c353a fix!: register: Tighten up spacing around the date in register reports. (#1655)
As a side effect, this changes the Json representation of the
PostingsReport. The maybe report end date is now replaced with a maybe
period.
2021-08-22 08:15:22 -10:00
Lawrence
8a5addfb02 lib: implement periodic expressions for weekday et al
Implementation lifts DayOfWeek (renamed to DaysOfWeek) to a list of
days. This should match the previous behavior for single-element lists
2021-08-20 20:30:18 -05:00
Simon Michael
c135c1a3fc ;cln: slight typos cleanup (#1654) 2021-08-19 17:43:45 -10:00
Lawrence
0982e3343a test: bal: add functests for transpose and compound commands (#1654) 2021-08-19 17:37:33 -10:00
Lawrence
d7a56a9830 test: give descriptions to commodity-column functests (#1654)
Also renames the file for consistent naming with the flag
2021-08-19 17:37:32 -10:00
Stephen Morgan
ddba9f6ce4 imp: lib,cli: Implement gain report for balance reports.
A gain report will report on unrealised gains by looking at the
difference between the valuation of an amount (by default, --value=end),
and the valuation of the cost of the amount.
2021-08-18 21:44:30 -10:00
Arjen Langebaerd
3426030a91 feat: added commodity style commandline option 2021-08-17 22:05:29 -10:00
Lawrence
234caae557 doc: test: update for commodity-column
Add documentation and sample output for `--commodity-column` behavior
and functional tests e.g single-period balance, yearly balance, and
yearly budget
2021-08-08 09:19:25 -10:00
Stephen Morgan
720fde3187 test: Add forecast transactions to aregister ordering test. 2021-08-07 14:15:19 -10:00
Stephen Morgan
918c243fa9 fix: forecast: Generate forecast transactions at journal finalisation,
rather than as a postprocessing step. (#1638)

This allows us to have a uniform procedure for balancing transactions,
whether they are normal transactions or forecast transactions, including
dealing with balance assignments, balance assertions, and auto postings.
2021-08-05 21:10:47 -10:00
Stephen Morgan
23b0cad6ef fix: areg: Make sure aregister sorts first by transaction register date,
then by parse order to break any ties. (#1642)
2021-08-05 20:49:25 -10:00
Simon Michael
3270a4f0d7 ;areg: commented test for #1642 2021-08-05 19:08:21 -10:00
Stephen Morgan
ae3c7e8756 fix: areg: Make sure the true original transaction is made available in
AccountTransactionsReport.

Only a limited number of journal transformations are allowed in
accountTransactionReports due to the need to include the original
transaction. Document these.

Make sure to remove currency and amount queries from the reportq, so
they do not cause problems after valuation.

Avoid confusion by calculating transaction date at one point, and
passing that down with the transaction.
2021-08-02 22:47:50 -10:00
Stephen Morgan
4e0dcec096 fix: areg: Explicitly avoid filtering by depth queries, perform
valuation after all reportq filtering is done (in both the historical
and recent postings), and make sure filtering is done at the correct
point based on whether --txn-dates is set. (#1634)
2021-08-02 22:47:50 -10:00
Stephen Morgan
1d278993bc fix: forecast: Make sure forecast transactions are generated up to the day before the provided query end date. (#1633) 2021-08-02 20:47:20 -10:00
Simon Michael
d07d0de2d6 test: areg: disable failing tests for now (#1634) 2021-07-31 18:28:32 -10:00
Simon Michael
396b1eb515 test: areg: add more tests (#1634) 2021-07-31 18:27:23 -10:00
Stephen Morgan
2da0e67141 fix: Add balancing amounts in periodic transactions before applying auto-postings. (#1412) 2021-07-30 13:52:35 -10:00
Stephen Morgan
9df574b3c0 fix: reg: register --related should not create duplicate postings when
more than one posting in a transaction matches. (#1629)
2021-07-30 09:06:27 -10:00
Stephen Morgan
6528f25593 fix: lib: Filter postings before performing valuation and costing in
MultiBalanceReport, PostingsReport, EntriesReport, and
AccountTransactionsReport. (#1625, #1630)
2021-07-30 09:06:27 -10:00
Simon Michael
d2b799a717 feat: bal: select budget( transaction)s by name (#1612)
This makes it possible to keep multiple named budgets in one journal,
and select the one you want with --budget's argument.

More precisely, you can select the subset of periodic transactions
rules which contain a certain fixed, case-insensitive substring.

Only one such --budget argument is supported, the last one on the
command line takes precedence.
2021-07-23 10:38:20 -10:00
Stephen Morgan
7ed2a0aa9b lib!: lib: Remove aismultiplier from Amount.
In Amount, aismultiplier is a boolean flag that will always be False,
except for in TMPostingRules, where it indicates whether the posting
rule is a multiplier. It is therefore unnecessary in the vast majority
of cases. This posting pulls this flag out of Amount and puts it into
TMPostingRule, so it is only kept around when necessary.

This changes the parsing of journals somewhat. Previously you could
include an * before an amount anywhere in a Journal, and it would
happily parse and set the aismultiplier flag true. This will now fail
with a parse error: * is now only acceptable before an amount within an
auto posting rule.

Any usage of the library in which the aismultiplier field is read or set
should be removed. If you truly need its functionality, you should
switch to using TMPostingRule.

This changes the JSON output of Amount, as it will no longer include
aismultiplier.
2021-07-22 19:06:33 -10:00
Stephen Morgan
58516eea77 imp: json: Decrease indentation in JSON output. 2021-07-20 23:28:18 -10:00
Stephen Morgan
c606f874fb imp: json: The keys of JSON objects are now displayed in alphabetical order, making it stable across different systems and compilers. 2021-07-20 20:37:33 -10:00
Stephen Morgan
cf25d7d56d
imp: bal: more predictable sort order with multiple commodities (#1563, #1564)
This change provides more predictable and intuitive behaviour when 
using -S/--sort-amount with multiple commodities. 
It implements a custom Ord (and Eq) instance for MixedAmount 
which substitutes zero for any missing commodities.

As a consequence, all the ways of representing zero with a MixedAmount ([],
[A 0], [A 0, B 0, ...]) are now Eq-ual (==), whereas before they were
not. We have not been able to find anything broken by this change.

* imp: lib: Compare MixedAmounts by substituting zero for any missing commodities. (#1563)
* ;doc: Update docs for new multicommodity sort by amount rules.
2021-07-12 21:11:50 -10:00
Simon Michael
0a66068ad1 imp: close: clarify date logic, use journal last day if later (#1604) 2021-07-12 18:50:06 -10:00
Stephen Morgan
e2198ff1ee lib: Auto-postings with Amount queries should filter only those commodities which match the query.
Also corrects a regression introduced in
8ab29f84b32288a34ae7627a2204081fae31900f where transaction modifier
postings without multipliers would incorrectly be filtered by commodity.
2021-07-01 09:35:56 -10:00
Stephen Morgan
2a9d358627 lib: Make sure automatic postings generated from postings with more than one commodity match on commodity symbol (#1582). 2021-06-30 17:35:43 -10:00
Stephen Morgan
0df3a4714f lib: When performing a summary posting report without depth limiting,
report exclusive balances rather than inclusive balances (#1568).
2021-06-11 16:53:39 -10:00