For example, in period reports null transactions are only generated for
empty periods if --empty is used. Otherwise, the presence of such
transactions can get confusing.
Previously, account-wise reports used a subset of the total number of
transaction filters, but this could cause confusing results, and made
some reports immpossible (such as account-wise monthly averages).
Now one does:
parent->HANDLER(display_total_).set_expr("total");
Rather than what was required previously:
parent->HANDLER(display_total_).on("total");
parent->HANDLER(display_total_).expr = "total";
This allows reports to access the "whicheth" index of the reported
transaction. It's used mainly by the --average report, which divides
the running total by this count to get the arithmetic mean.
For example, if one uses -M to generate a monthly report for an entire
year, and there are no transaction in the month of February, ordinarily
Ledger would report nothing for that month, even if -E were used. Now
"null transactions" are generated for periods without any activity, in
order to make certain reports -- such as running monthly averages --
more accurate.
For example, instead of -MA being just a monthly running average of
months with activity, it is now a true average among all months during
the reported period.
That is, if a metadata tag cannot be found in a transaction, look in the
parent entry to see if it was set there. Transactions "inherit"
notational details from their entries.
The prices report now uses the following scheme:
PAYEE -> name of commodity of price
ACCOUNT -> name of commodity of item
AMOUNT -> price
DATE -> date of pricing
However, the report does not show the payee. The only reason the payee
is set is to enable clever querying. For example:
ledger prices gold # show all known prices for GOLD
ledger prices @gold # show all known prices *in* GOLD
These files are used to creat ea Git pre-commit hook which verifies each
proposed change by running "make check". Otherwise, I only know if my
working tree is sane, and not if each commit is sane before it goes into
the repository.