[Kmymoney-devel] Patch for HolidayRegion and Working Week
iann_bugzilla at blueyonder.co.uk
Thu Jan 7 23:02:18 CET 2010
> On Wednesday January 6 2010 08:32 pm Ian Neal wrote:
>> Hi all,
>> Find attached a patch (gzipped due to size) for the current kmymoney svn
>> which makes the following changes:
>> * Switch from MoveFriday/MoveMonday to MoveBefore/MoveAfter for use with
>> scheduled transactions;
>> * Strings with Friday / Monday now use previous / next working day;
>> * Strings with Weekend now use non-working days;
>> * Removed duplicate code from kenterscheduledlg.cpp and got it to use
>> the code from mymoneyscheduled.cpp;
>> * Added UI to scheduled transactions settings page to be able to select
>> relevant holiday calendar that the OS knows about as well as a (None)
>> * Added routine to calculate working week from KGlobal::locale() to
>> * Added methods to mymoneyscheduled.cpp to read/write holiday region and
>> working week for scheduled transactions;
>> * Added defaults for holiday region (gb) and working week
>> (Monday-Friday) to mymoneyscheduled.cpp;
>> * In mymoneyscheduled.cpp split some of the code out of
>> adjustedNextDueDate to create adjustedDate so that kenterscheduledlg.cpp
>> could use it instead of duplicating code;
>> * Rewrote the code in adjustedDate to it reflects the locale's working
>> week and the selected holiday region;
>> * Added a new test that makes sure the working week is set correctly and
>> working/non-working days are identified correctly;
>> * Added further tests to testAdjustedNextDueDate to make sure that the
>> adjusted date is correct for non-working days not just weekends;
>> * Corrected it's vs its in various comments throughout code.
>> KHoliday assumes that any day marked as red or weekend is a holiday and
>> at the moment it has no concept of financial holidays so I've worked
>> with what it has provided.
>> Any constructive comments/feedback/review are welcome,
> My comments:
> * Not tested it, but it looks great, Ian. I've been wanting to see calendar
> support for some time.
> * I'd default Schedule working works and holidays using the settings instead
> of hard-coding to British. If you must hard-code I'd default to USA for
> consistency: I know it can be wearing but defaulting to US make particular
> sense given the tighter integration with KDE.
Which settings are you referring to that I should be using? The reason I
used British for the default (which is used for testing) is that I know
exactly which days holidays are on and can adapt the tests round those,
I'd not have the same certainty with the USA ones. Is holiday_us
currently correct, are there 10 days when banks don't open? (Actually I
am waiting for a correction to holiday_gb as it is). If someone can
confirm some federal days when banks do not open (that match the
holiday_us) then I am happy to change the testing default to USA.
> * I'd prefer to have a separate Calendar class with work weeks and holidays.
> * You'd be able to assign the same Calendar to multiple Schedules.
> * You could have Working Day date math in the class: then we add "Every n
> Working Days" Occurrence
> * It would be easier to expand the Calendar functionality later to support
> user-defined Calendars to allow Schedules to deal with the variability of US
> public holidays and school holidays.
As far as I am concerned we have to rely on the facilities provided by
KHolidays as/when that gets rewritten / enhanced we can take advantage
of those new features.
To answer your suggestions:
* At the moment you do use the same calendar for all
schedules/accounts/institutions - perhaps it could be enhanced so
that you can override that calendar for some accounts/institutions
though not sure the reasons for doing it for schedules. A usage
case for schedules might help explain. Either way that is a future
enhancement not in the scope of this work (at the moment).
* Again a usage case for "Every n Working Days" would be useful (I
can think of one for n=1, bus/tram fair, but that could possibly
be covered by a 4th option for the weekendOption of "Skip Payment"
or something like that). A future enhancement anyway.
* As far as I am aware you can already create user defined calendars
(~/.holiday) but I've not tested that, but I would again say that
was part of KHolidays.
More information about the KMyMoney-devel