OK, this is the third rewriting of this post. I keep changing my mind on how to best deal with this. I think you have two ways to deal with this. One is the managed route where you have to keep up with holidays for different locations/institutions (bank vs credit unions comes to mind). That makes it easy on the users, but still may require tweaking and fidling to fit each user. The other is a completely custom solution created by each user that they have to generate. This is easier on you but requires a bit more work for the user.
The thing is, either way you have to create some type of entry or structure that holds off automated entries when they are carried forward into the future. You also have to account for future entries being adjusted after creation for the future years when a holiday changes the day it falls on. Thats also going to be a factor right out of the gate with anyone who already has entries set up before the holiday entries are available(all the beta testers).
I would go with the completely user setup banking schedule. I would also go with a new “Bank Closed” entry type made available to the user as a fourth radio button below Deposit/Withdrawal/Transfer on the entry creation screen. The sub-options could be changed just as you did for the Transfer type. Use the nice Repeat setup you have for monthly repeating entries but adapt to years to allow users to set up both dates (Dec 25) or sliding dates (4th thursday in Nov). Users could also have a choice of a specific day of the week to declare as always a “Bank Closed” day. That would cover any countries that might have open banks on saturday but closed on mondays or something like that. Creating one of these BC (Bank Closed) entries should push any preexisting entries backwards in time to the first non-BC day. I would actually suggest always shoving a withdrawal entry backwards and a deposit entry forwards when encountering a BC day. As users, we are always checking our account (we have to be or they aren’t that useful for us). We can manually move entries that might get shoved the wrong way. This default movement would give a user the worst case cashflow position by default, so things would only get better as they made any changes that were needed.
I think this is your best solution. 2009 only has 10 bank holidays for the US. Thats not too onerous to enter by hand. Entering the weekends would be a one time deal for each day since it would always be the same day. You might could pop up a reminder for users right after the first of the year to check their holidays. I would also be sure that a user could force an entry onto a BC day to keep total flexibility.
Well there’s another book of my blathering. Hope some of it’s useful