Everyone has payments that need to go out weekly, fortnightly etc. Schedules would work with these payments and in combination with buckets, to ensure they that amounts needed are met on time by indicating via green/orange/red current values for scheduled events, and to automatically create expenses that have occurred since your last login. The reverse where money is expected on a regular basis would in turn add deposits that occurred since your last login. This makes management of bills/automatic payments easier to keep track of. It would also be constructed so that if a expense/deposit is created, you'll get alerts on the dashboard to review the payments made, with the ability to delete that payment, amend etc.
User has many schedules
Bucket has many actions, has many schedules through actions
Schedule model that belongs to account, has user through account, has many actions, has many buckets through actions. Has the fields:
Action model that belongs to schedule, belongs to bucket. Has the fields:
Dashboard, Buckets show, and accounts show would get new widget "Upcoming Schedules" listing name and when. Clicking will take them to schedule show page, listing the actions that schedule has in details (what type, what bucket, how much) and showing how much in in there at present in the buckets it'll be taking action in. Depending on the pages visited, schedules will be constrained to that area (dash = all, account = only in account, bucket = only in bucket).
Dashboard would get new widget "Recent Alerts" listing events that took place since the last login, with links to each transaction that took place for review.
Any place where buckets are listed (account buckets, dashboard etc) get modified to include amounts of transactions coming within 7 days of today. The label will be colored according to time remaining and money available.
Schedule show/destroy don't need any specific stuff, however add will need the following:
Schedules should be able to be skipped. On the schedule show page, you should be able to "Skip the next occurrence", which would then make scheduled_time on the model == (scheduled_time + recurrence.weeks), effectively skipping it till next time.
I think think this feature would be quite useful. If you have any questions about its implementation, let me know.
Sounds like you've about got it done. :) It's on my plate to implement, as this is a feature I've wanted, too, but I suspect my solution will be much simpler than what you've described here. If you'd rather implement this to your own specification, let me know and I'll hold off on mine until a patch is ready.
I'd love to help but if I can't get it done sometime tomorrow, I probably won't have time for another week or two :-( If I find some time to implement it, and it's not already done, I'll give a shot and let you know.
Took a crack at implementing this. Code at
Adding, editing, deleting and upcoming schedules are implemented. Still got to implement code to execute the actions along with other things (see commit message).
Feel free to take and continue with it. Sorry for the lack of tests.
That's all the time I'll have till next weekend. Hope this has helped.