Patch : editing "Posted" time of transactions.
John Ralls
jralls at ceridwen.us
Thu Jan 28 13:54:58 EST 2016
> On Jan 28, 2016, at 9:43 AM, gLETTERyYuMEANSj LETTERyOt <gletteryyumeansjletteryot at gmail.com> wrote:
>
> 2015-05-28 17:15 UTC+02:00, John Ralls <jralls at ceridwen.us>:
>> Please don't submit patches to the mailing list. Open a bug in
>> Bugzilla.gnome.org or fork our repo on Github, create a branch with your
>> patch, and make a pull request. Patches should be written against HEAD in
>> the branch you're working on -- which should be master for a feature request,
>> especially one that changes the database or the way it's interpreted.
>
> I have finally found some spare time to submit a patch this way. It is on
>
> https://github.com/gijut/gnucash
>
> It compiles without more warning than current version on x86_64, I have tested
> it for one hour.
>
> It does no more prints any debugging line (so that the patch is easier to
> read).
BTW your https://github.com/gijut/gnucash/commit/885314788855f74d920e0637ea41b3289f5b55b4 incorrectly copies a GCC bug: https://sourceware.org/bugzilla/show_bug.cgi?id=15366 *and* overrides a #define that belongs to the libc/libc++ headers.
(The bug was the result of the GCC folks following an effort by the ISO C committee to tell the ISO C++ committee what to do. The ISO C++ committee ignored them, but the GCC folks didn't. The ISO C committee fixed their overstep in C11. See http://en.cppreference.com/w/Talk:cpp/types/integer.
Please remove that commit.
Don't change ChangeLog. It's automatically generated from the git log at each release.
You removed the code for the auto-read-only threshold.
Don't use Timespec in new code, use time64.
Don't remove function description comments; do make them Doxygen markup.
Don't use magic numbers. Create static const variables (not #defines!) with descriptive names.
>
> The limits I quote again below still apply:
>
>>> - The default timezone used for display *should* be specified in the
>>> environment variable TZ in the form "[^-+]*+HHMM$", HH and MM being hours
>>> and minutes to add to UTC times to get the local time (including the
>>> possible daylight saving time correction).
>>>
>>> - These patches cannot be disabled by configuration (a patch to
>>> preferences.glade is lacking).
>
>> What's the reason for using an environment variable for determining
>> timezone? TZ seems not commonly used and it would be trivially easy to add a
>> function to get the UTC offset in gnc-date.cpp.
>
> This is still work to be done.
>
>> Entry date handling has long been a matter of controversy in GnuCash, and
>> switching the nominal time to 11:00 UTC from 00:00 UTC is the simplest
>> option to resolve most of it. 11:00 instead of 12:00 because New Zealand's
>> summer time offset is +13 hours and the total population of the -12 timezone
>> is only a few thousand people. That change is already planned for GnuCash
>> 2.8 unless we decide to go in either of the directions Geert mentioned.
>
> I have now adopted 1100Z as the default time on transaction creation. Time of
> loaded transaction are not changed (and they were midnight for gnucash-2.4*).
>
>> My understanding is that it's unusual for accountants to care much about
>> exact transaction times,
>
> This has been refered to in the thread "Rounding in the price db." about
> conversion rates, e.g., in the mail dated Wed, Aug 12, 2015 at 3:27 PM
> shown by gnucash.1415818.n4.nabble.com/Rounding-in-the-price-db-td4679860.html
>
> I can provide references to other recent threads if it helps.
>
> 2015-05-29 0:28 UTC+02:00, John Ralls <jralls at ceridwen.us>:
>>> I think that the coding and debugging style, the TZ environment variable
>>> and
>>> the lack of patch to preferences.glade are better reasons to disqualify
>>> it.
>>
>> Those are all fixable. Once they're fixed, the patch can be considered for
>> master, though as Geert pointed out there's pressure in the other direction
>> to remove times entirely from Entered Date. We have to decide which way to
>> go.
>
> The coding style is still problematic; and I did not use the recent
> Gnc_Date_Time class, short of time to test it.
>
> * the one character string ":". In that case, it is replaced by
> the current time and date.
>
> * Any entered date string starting by ":" and longer that ":" will crash
> * gnucash.
>
> * if TZ is not defined, gnucash crashes immediately.
The crashes alone make this patch incomplete and unacceptable as-written.
That's all I have time for now, and I won't have more for a couple of weeks. In that time, please rewrite your submission taking the above into account and complying with http://wiki.gnucash.org/wiki/CodingStandard. Put it in a feature branch and squash out irrelevant commits. I'll do a deeper review then.
But we still haven't decided whether to drop times altogether from date_posted, and this change, even if otherwise perfect, can't merge until we do.
Regards,
John Ralls
More information about the gnucash-devel
mailing list