The (cashflow-barchart-calc-money-in-out) function was copied verbatim
from cash-flow.scm (apart from the returned list being shorter). reuse
function from cash-flow.scm.
Test already exists in test-cashflow-barchart.scm
old code was confusing; returns non-#f if either of following is true:
- elts is null list
- elts is 1-element list
and report-commodity is a member of this 1-element list
change to much more intelligible code
allows it to compare numbers with +/-inf.0 -- 10E9 is an arbitrary
number to compare numbers.
(< N +inf.0) is guaranteed to be #t for all numbers N whereby N is not
also +inf.0.
(Release Note - developer section)
Modification to gnc:account-get-balances-at-dates.
formerly it would accept an optional #:ignore-closing? boolean to skip
closing transactions.
it would be more general to accept a #:split->amount function whose
default is xaccSplitGetAmount. calling (split->amount split) should
return amount from the split. if the function returns #f, it
effectively skips the split. this will allow a more general
account-balance list accumulator, allowing novel balance strategies
e.g. split->amount may test split void status and return the split
xaccSplitVoidFormerAmount, test description/memo and return an amount
depending on description contents, or test the split and return 1 or 0
which will return a tally of splits.
the direct equivalence for the previous #:ignore-closing? keyword
argument is #:split->amount (lambda (s) (and (not (xaccTransGetIsClosingTxn
(xaccSplitGetParent s))) (xaccSplitGetAmount s)))
NOTE: the modifications to category-barchart.scm and net-charts.scm
will use the #:split->amount kwarg as well.
This function is extensively tested in the commit
53cab269f4
the option lookup mechanism will dynamically translate option
names. warn the user if this takes place so that the report writer may
use new option names.
Use the Scheme rationalize method to convert the decimal numbers
from Finance::Quote to ratinal numbers. This avoids rediculous
precision like 8515625000000001/3906250000000000 for 2.18.
If a saved-report with e.g. relative date, multichoice option is
unknown, the report would crash, and the Report-Options would
segfault. This commit fixes both: report-date defaults to 'today',
multichoice-options defaults to default-value.
Following this commit, if a report loads a saved-report or .gcm from a
future version, a gnc:warn will be emitted and the report will not
crash; it will use relative-date today. Multichoice will remain the
default value. Report Options will not segfault.
The user will be notified via a gnc:gui-warn dialog
gnc:gui-[warn|error|msg] are new global functions.
By default they mirror gnc:warn/error/msg. However then gnome is
available, they will display appropriate warn/error/info dialog in
addition to outputting to console.
Use the Scheme rationalize method to convert the decimal numbers
from Finance::Quote to ratinal numbers. This avoids rediculous
precision like 8515625000000001/3906250000000000 for 2.18.
Instead of recursing the date, we calculate the next month using an
index-based multiplier, and apply modulo/remainder as appropriate to
determine the next month/year.
Then we attempt to create new mktime, and if the resulting mktime's
month is not as expected, reduce the mday by 1 until resulting month
is correct. This fixes monthly intervals for end-of-month days.
Test via monthly/quarterly deltas, and also includes leapyear
calculation.
Indenting checkbox was erroneously disabled when: sortkey = date,
date-subtotal = not 'none.
This commit will allow indenting option in the above case.
Running trep-options-generator directly from transaction.scm seems to
set the report title properly. The previous code aimed to create a new
options object using transaction report's uuid and reportname, and I
do not anticipate any material change to the report output.
Remove old (non-SEPA) online transaction code, because now in 2019
the banks will only offer SEPA transactions and no others. This
in turn means we don't need the old ktoblzcheck checking functions
at all, hence I remove this dependency completely.
exiting "Loan Repayment Options" page.
Because libstdc++ on Windows doesn't support any C++ locales besides
"C" and throws an exception if you try.
To work around this use GetNumberFormatW (not GetCurrencyFormatW,
that includes the currency symbol) to create a formatted number string
with the right separators, grouping, and precision.
Date format selection on Windows relies on Windows National Language
functions and those are unaffected by the POSIX setlocale(). We have
in the past relied upon gtk initialization to handle this but it has
not been reliable since the move to Gtk3. Note that this applies only
when the locale is set via a Unix-style environment variable (typically
LANG) or in the environment file; it's unnecessary and ignored when
using the localization settings in Region & Language.
There's no way to change the environment locale on Windows so calling
setlocale(LC_ALL, ""), as guile does in its init routine, reads the
user's Language and Region settings instead of the environment
variables. We save the discovered environment locale and call setlocale
with it again after Guile has initialized.
Revert using boost::locale to generate std::locales as boost::locale-
generated locales don't implement std::locale::facet and there was
a bug in the boost::locale ICU wrapper code that caused the wrong year
to be output for the last 3 days of December.
GCC's libstdc++ supports only the "C" locale on Windows and throws if
one attempts to create any other kind. For dates we work around this
by using wstrftime() to format according to locale and then convert
the UTF16 string to UTF8. wstrftime() interprets the time zone flags
%z, %Z, and %ZP differently so we process those first before calling
strftime. This will have the unfortunate effect of not localizing
timezone names but it's as close as we can get.