Originally Posted by
Zealot
I've got make a Timecard app that:
A) lets people enter their hours (simple enough, I just made an App called "timecard" and a new Timecard object with a field for hours and the date)
Think about what other data elements you might want to also capture. Consider things like, are there different time codes they need to enter? Are they all working on the same project, or are there are multiple projects they all need to bill to separately? Depending on what other information you need to capture, you may end up needing another object or two to tie into your original object/app.
Also consider adding in a validation rule or two. For instance, are the contractors limited to a specific number of hours they can work per day? What about days of the week? Let's say if they can log up to 12 hours per weekday, but only 4 on weekends, then validation rules should cover you here.
B) Has 4 users - 1 management, 1 upper management, and 2 outside contractors (pretty sure this is just handled by the heirarchy field and licensing permissions)
Be sure to edit the profile permissions for each distinct profile across your userbase. You'll need to provide access to not only the app itself, but also the tabs within it, the object(s), and field-level security. If they all share the same profile, then this is cake, but you'll need to repeat it for every profile if their are multiple ones.
Also, depending on how many OTHER users are in those profiles, it may be better to open up access to the app via a permission set. For example, if a contractor has the same profile as a regular employee, and you don't want the regular employees to see the timecard app, then use a permission set to open access to the app and assign the permission set to just the contractors.
C) Lets the contractors see their own timecard submissions but not anyone elses (For this I just set the OWD for the object to Private, I think that's all that needs to happen)
That'll work, just make sure that the contractors and managers are assigned roles that fit within the hierarchy. If your role hierarchy is setup as something like...
Code:
Upper Management
-> Management
-> Contractor
...then you'll be all set
D) Gets sent for approval to one manager, and when they approve it it then goes on to upper management for a second approval.
E) Each Timecard needs a "Saved" "Submitted" "Approved" and "Rejected" status.
I haven't worked a whole lot with approval processes, but I believe that you should be able to automate them entirely here. For instance, you can add a Status picklist field to the Timecard object with your four statuses, and have the default be set to "Saved". Then, when your approval process is fired, have the Status set to be "Submitted". Finally, upon approval/rejection via the approval process, have it update the Status field accordingly.