gnucash maint: Multiple changes pushed

Christopher Lam clam at
Thu Mar 14 04:32:56 EDT 2019

Updated	 via (commit)
	 via (commit)
	 via (commit)
	 via (commit)
	 via (commit)
	 via (commit)
	 via (commit)
	 via (commit)
	 via (commit)
	 via (commit)
	 via (commit)
	 via (commit)
	from (commit)

commit 12a46e62de250c24501d310151c7866757e545ee
Author: Christopher Lam <christopher.lck at>
Date:   Mon Mar 11 22:45:01 2019 +0800

    [balance-forecast] use gnc:case-exchange-time-fn
    The gnc:case-exchange-fn seems to be designed for single-date reports,
    whereas gnc:case-exchange-time-fn for multi-date reports. It may be
    faster to have a single exchange-fn definition.
    The main reason for this change is to harmonize - all multidate charts
    are using case-exchange-time-fn.

commit 29c0e192830307eb7be5039b1924d0407e215400
Author: Christopher Lam <christopher.lck at>
Date:   Sun Mar 10 13:38:51 2019 +0800

    [balance-forecast] reuse i18n strings
    this commit will modify to reuse some strings which are already
    translated, and also add help strings for the various options.

commit 784b34a0488535d9f94ce13573dbf897a8686f51
Author: Christopher Lam <christopher.lck at>
Date:   Wed Mar 6 20:29:22 2019 +0800

    [balance-forecast] add null-account and zero-amounts handling

commit 6e76cb3d3be7efab0ce0ec29c3b0fdd502db3e86
Author: Christopher Lam <christopher.lck at>
Date:   Tue Mar 5 20:40:59 2019 +0800

    [balance-forecast] refactor to avoid xaccAccountGetBalanceAsOfDate
    previous will call gnc:account-get-comm-balance-at-date which calls
    xaccAccountGetBalanceAsOfDate for every account at every date
    point. The xaccAccountGetBalanceAsOfDate is an expensive function
    because it scans the account's whole splitlist from the start every
    time. use gnc:account-get-balances-at-dates instead which scans an
    account only once to generate a balancelist.
    this should be a much faster chart.

commit 1ade6fe6b44ca59d472d65bf200d9db2953c92d4
Author: Christopher Lam <christopher.lck at>
Date:   Tue Mar 5 17:46:11 2019 +0800

    [balance-forecast] adjust sx accumulator until report from-date
    this commit will initialize the sx accumulator by adding all
    instantiated sx amounts, from the earliest split posted-date among the
    selected accounts, until the report start-date.

commit a4d76177fbf33b5458ceacf4c74d920603be7880
Author: Christopher Lam <christopher.lck at>
Date:   Tue Mar 5 13:08:25 2019 +0800

    [balance-forecast] modify boolean option to effect number box
    1. convert simple boolean to complex boolean to toggle amounts
    2. convert list processing functions to scheme conventions

commit d0deda92525a8959f0518b2e59966f41c964ebba
Author: Ryan Turner <zdbiohazard2 at>
Date:   Thu Feb 28 21:52:21 2019 -0800

    [balance-forecast] More clean-up.
     * Draw the "balance" line over the "minimum" line.
     * X axis labels should be for the end of the period,
       as that's when all the balance samples are taken.

commit 0cf973c1234179b8a4b514e312fedbe4b4b03fa6
Author: Ryan Turner <zdbiohazard2 at>
Date:   Thu Feb 28 20:29:31 2019 -0800

    [balance-forecast] Clean-up
    * Fix dates display to ISO format
    * Use make-list properly to create a list with identical elements

commit 55583829b01b9a6c2bcae741011b6d0c0dbf3427
Author: Ryan Turner <zdbiohazard2 at>
Date:   Wed Feb 27 21:08:25 2019 -0800

    Report: Balance Forecast
    This report forecasts the combined balances of the selected accounts
    based on the scheduled transactions and plots them on a line graph.
    You can set a "reserve" amount, which will draw a red line on the
    graph, so you can easily see if your forecast dips below a given value.
    There is also a "future minimum" line which shows what the lowest future
    balance will be at a given point. I find this useful in conjunction with
    the "target" line for planning.

commit b6a708196ee614796bcc80db72e5a6109d332269
Author: Christopher Lam <christopher.lck at>
Date:   Thu Mar 14 09:42:08 2019 +0800

    [commodity-utilities] rewrite gnc:exchange-by-pricealist-nearest
    this function made clearer. first we can remove sanity-check:
    pricealist will always be sent as a list, and doesn't need to be
    confirmed it is a pair? because assoc-ref can handle an empty list
    returning #f.
    then the conversion routine is reordered to be clearer.

commit 274897fb8c59ec202c02e4dcc6d25a1c10c3d3c2
Author: Christopher Lam <christopher.lck at>
Date:   Thu Mar 14 09:06:22 2019 +0800

    [commodity-utilities] inline gnc:pricealist-lookup-nearest-in-time
    this is an unexported single-use function. we can safely inline.

commit 0e60c77577b57fdae5e4363c43d13af10a99f23d
Author: Christopher Lam <christopher.lck at>
Date:   Thu Mar 14 09:02:30 2019 +0800

    [commodity-utilities] deprecate gnc:exchange-by-pricevalue-helper
    This function is only used once, internally, and performs a sanity
    check (if price-value ... ...) which is, never needed because the
    price-value received has been sanitized to return a price, or 0 and
    will never be #f. Inlining this function means we can skip this sanity

Summary of changes:
 .../report/report-system/commodity-utilities.scm   |  26 +-
 gnucash/report/report-system/report-system.scm     |   2 +-
 gnucash/report/standard-reports/CMakeLists.txt     |   1 +
 .../report/standard-reports/balance-forecast.scm   | 288 +++++++++++++++++++++
 4 files changed, 301 insertions(+), 16 deletions(-)
 create mode 100644 gnucash/report/standard-reports/balance-forecast.scm

More information about the gnucash-patches mailing list