We don't use floats in GnuCash, we use doubles (and those as little as
possible), but dbd-sqlite3 is broken in that it stores only floats.
Simply casting floats to doubles introduces bogus additional digits
that can cause round-trip tests to fail. Instead convert floats to
doubles by multiplying by 10E6, rounding, then dividing by 10E6.
If you need to delete the layout for a register in the settings file,
the only thing identifying it is the account guid. To make it easier
for humans, add the full account name also.
When register pages are restored, the account is found from the full
name so if the separator changes it will fail. Instead, also save the
account guid and use that as default to find the account falling back
to the full name.
Closing Gnucash on Windows when minimized causes the window position to
be saved as -32000,-32000 and on restart the window can not be seen. To
fix this the previous retrieved position is saved and used if on exit
the window is minimized.
Removes a public function, GncDbiSqlConnection::table_manage_backup that
should have been private in the first place.
Better encapsulates table renames and drops with private functions and
handles cases where there exist some primary tables and some backup tables.
Totals column width is based on the larger of header title or column
content so with a header of "Total" and a column value of 700.00 there
is not much space between the previous column and the totals column so
set a minimum width based on the previous column header.
In the original configuration, if you start with a wide account column
and drag it smaller and then make entry it pings back. The reason for
this is that the space is added to the total column to compensate as
the table width can not shrink. This can be fixed by removing the
viewport and stacking two scroll windows in a vbox and linking the
horizontal scrollbars.
acctchrt_common:
there is a gratituous "i"
acctchrt_full (ja):
the Retirement and Spouse's retirement accounts have two parents
(Investment as well as ROOT), removed ROOT.
uk-vat:
the root account was pasted a line too high 7y ago. all other files have
the header block continuous
SQLite backend.
Release Note: This bug caused data loss if you saved your SQLite3
database to a different file or database.
The problem is that in SQLite3 (though not in MySQL or PgSQL) the
subquery ((SELECT DISTINCT guid FROM transactions)) (note the double
parentheses) returns only the first guid in the subquery's results.
Some transactions are loaded by special queries and those queries are
also used to retrieve the transaction's slots so they weren't affected.
First change is to ensure gncEntry rounding is consistent. Internally
calculated values in the entry are never rounded. Consumers of
gncEntry's calculated values can request them either rounded or not.
Next use a pragmatical approach for calculating values on invoices based on
the entry values: do the rounding such that we never
create an unbalanced transaction while posting
That means
- round each entry's net value before summing them in net total
- accumulate all tax totals on invoice level per tax account before rounding
and round before before summing them in a global tax total
Hopefully this will catch a few more rounding issues in this area.
A complete solution can only offered if we allow users to manually correct
tax entries. This requires changes to user interface and data format
so that's not going to happen in gnucash 3.x.
strptime/strftime supports various modifiers to their parameters.
'E' and 'O': alternate locale-specific formats
(used in default format for Persian, Oriya, Azerbaijani)
'-': padding
(used in default format for Czech)
GnuCash passes dates as integer y/m/d without using locale-specific
formats, so we need to strip out 'E' and 'O' from the format when
scanning dates or determining separators in gnc-date.
None of '-', 'E', or 'O' are supported by boost (and '-' causes
errors), so strip them out from formatters in gnc-datetime as well.
See https://bugzilla.gnome.org/show_bug.cgi?id=795247.
This will probably need more refinement because the multiplications
are still missing rounding methods, but the changes in this commit
will already allow guile code to correctly create entries.
The transfer dialog was set up as a child of the reconciliation dialog.
However as the latter is closed it's child dialogs are closed as well.
At least that's the behaviour on Windows. This didn't happen on Fedora 27.
Regardless it's fixed by making the account register the parent of the transfer
dialog.
When the reconcile column was moved, the default sort order was not
altered for the change so fixed it. Also added enum so model columns
can be referenced by name which hopefully will make it easier to read.
This is used in conjunction with (gnc:options->sxml) to extract
html table cells.
From SXML tree, retrieve, from a <table>, the th/tr/td cells as a list
of string.
Clearer syntax helped find flawed test - while set-tm:mday directly
accepts 1-31, set-tm:mon accepts 0-11 to represent 1-12, therefore
must minus 1. set-tm:year accepts 92 to represent 1992, therefore must
minus 1900.