SharePoint Timesheet Solution - Part 1

As a Manager, Director or Project Manager it is vital to track spending to give upper level execs a true ROI for work. This helps justify expenditures presently and forecast more accurate needs both in resources and material in the future. The only true way to gather this type of data is to measure time spent on projects and work. The caveat is, of course, that the data being entered is accurate.

A time tracking tool will allow you to track and cost analyze current work loads and based on that predict future needs. Think Agile methodology and estimation and you get the idea.

Developers are expensive and building solutions is even more expensive. I wanted a solution that was easy (read : cheap) to maintain and required little or no downtime in enhancement deployment. Essentially I didn't want to go through code deployment and feature stapling and so many other things that I wouldn't dare list them all here.

As a developer I see this as a two-sided coin. I have much more control of functionality at the API level and web part development is pretty easy. Kick in some Ajax and other features and it even starts to get robust. Also, I hate XML and XSLT. I think of it as a requirement to learn but not something I truly enjoy.


The Requirements

Let me start by laying out some requirements. If you see that you have some or most of these requirements then by all means read on...
  • Multiple Teams needing to track time on an hourly basis.
  • The ability to track time in multiple categories (Projects, Products, etc)
  • The ability to customize the categories of each type (again see Projects, Products, etc.)
  • The ability to report on the data entered.
  • An easy way to enter data
  • Use SharePoint to gather, store, and report on entered data.
  • Minimal code required (or almost no code required)
I can think of some more but that cover the jist of what I wanted to accomplish.

So here goes:

SharePoint 2010 TimeSheet System

This will take a few entries to get it all in so be patient as it may take me a few days to get it all up. Let me start by showing you the end results.

The following image is essentially the meat and potatoes of the Time Entry system.
Note: I had to remove data and type in some demo data - sorry, yeah it's not pretty!



















If you are anything like me you see that and think, "how am I supposed to tell what any of that does?!?". Well let me break it down for you.

We will start with the Time Entry section first:







Ok, lets dissect this thing and see what makes it zoom. First, it has a series of fields that an employee will need to complete. It has default values (where appropriate) for these fields as well. Lets go over them.

Source: Think Client here - This is a maintainable list of clients that you wish to bill time to.

Employee: Again, this is a list derived from a security group in SharePoint. Easy enough. Add people to the group and they show up on the list. The list will default to to the currently logged in user but you are allowed to enter time for other individuals as needed.

Week: This is the current week you are gathering time against. In this system this is also a list. It uses a work flow and some fancy time math to allow a user to edit the past 2 and next 2 weeks time as well. Additionally you can mark any week as active and it will show up in the drop-down as needed.

Project: This is a nice one. You have a list of projects you maintain. The Project lists has fields like: Project Name, Owner, Project Code, Cost Center, Active, etc, etc. Essentially any active projects show up here. You can safely delete these projects as well without corrupting the reporting data (separate list).

Phase: Think project phases. In the example I have we use Projects to sort out both KLO activity as well as EPO projects. Each of those entries may have different phases. For example: KLO for server maintenance does not need a Development Phase but that 5010 Implementation Project sure will. We solve this by allowing you to associate Projects with distinct phase data. This also allows you to report on specific types of phases. For example: How much Development Phase work has the developer team done in the past quarter? These lists are related (Phase and Project) so as you change the Project the Phase list will change to reflect the data associated with the current project.

Mon-Sun: Suffice it say this one should be easy enough to deduce. It allows for 0-24 hours for each day. If you have found a way to bill beyond a 24 hour period please let me know ASAP. I could use this information as I just sent my daughter to college.

Notes: Because you absolutely positively need to know what in the world they are entering this time for. Well, OK, it is optional.


There are some optional drop downs that are hidden in this version as well. Some folks don't like the idea of dropping everything into a Project list. So we have a fix for those needy folks.

Entry Type: This sits right infront of the Project field. When enabled it has a list that displays entry types that are linked to lists in the TimeSheet system. For example: Projects Entry Type links to the Projects List. There is a Products Entry Type (and a Products List) and an Administration Entry Type (linked to a Admin List for vacations and all that jaz).

If you change Entry Type the form will replace Project drop downs with the appropriate drop down for Products, Admin, etc. lists.

The final step is to hit the Submit Button. Once you hit submit the data is shuffled into a view that is right below the time entry screen. This view keeps a running tally on the current entries you have made. To keep things light it will only display those entries that have been made against the currently active weeks. This avoids lengthy updates and cycling through pages of data.

Here is a quick image of the Data Entry View section of the page. From here you can Edit, Delete and filter your time entry to make sure you are doing it right.









Just like a regular Data View web part this allows you to sort and filter data. It also utilizes AJAX (see the pretty refresh icon in the upper right corner) to keep your page updated periodically if things get lazy.

It provides a top row total based on the current sorts and provides the "Add New Item" button if you need it (you don't).

Tomorrow I will go over this view and how it works with the form we just went over for adding time. Luckily it all does it using the same form and without any pop-ups. Makes everyone happy!

If you have any questions or comments just let me know. If you are ready go on to Part 2.








Comments

Kevin Hart said…
This looks like a great solution to a paper employee timesheet. Our small start up company has been looking for a simple, yet reliable solution to employee timesheets. Thanks for the info!
jwb3d said…
Its just what I have been looking for.Its the code available for this application?
thanks
agathiyan said…
My cousin recommended this blog and she was totally right keep up the fantastic work!

Timesheet System Application
Unknown said…
Time tracking software is highly appreciated, flexible timer and ability to produce detailed invoices.
Timesheet
khanasattar said…
that's great solution I am looking to build for my company. But can you guide me how can I get this solutions and implement this solutions in our new Sharepoint 2013 online site. Please guide me through!
Unknown said…
Great can you guide me on how I can get this on SharePoint 2013 online
Karl said…
Hi Roger

Did you manage to achieve this in 2013?
Unknown said…
Hi

This is a great solution for Time sheet management in sharepoint.
I am also looking to develop this kind of time sheet entry, can you please guide me how to do it using out of box features.
If you have a document for how to prepare Time sheet Management can you please send it to my mail-id :sangani.harikrishnareddy@gmail.com
Unknown said…
Hi,
Great job!
I am also interested in your solution and I have the same request as sangani harikrishnareddy! If you have a document for how to prepare Time sheet Management can you please send it to my mail address: patricia.donnadieu@amersports.com
Thanks for sharing!
Patricia
Unknown said…
Hi, this looks like a great solution! I am also interested and looking to set it up in SharePoint 2013. Is it possible? If so can you share the document as well similar with harikrishnareddy and Patricia to my email address? gen_que@yahoo.com. Thanks for sharing this!

Gen
Bo said…
Hi. Great job and interesting solution to timesheet management. Please am planning similar solution for my company. Can I install sharepoint on my system (window 7) or how is it installed? Please do you have a manual to guide me in building the timesheet? please send to me ....bowakoko@yahoo.com


Bo
Shifting Gears said…
I would also like to set this up in our SharePoint. How would this be possible?

doug.seville@gmail.com
Unknown said…
Is this solution still available?
Ladybug said…
Hi This is fantastic, but I've been waiting along time for the solution.
Has anyone received the solution.
Please let me know.
The way you explained each point in detail is excellent, Thanks for sharing
Online Timesheet

Popular posts from this blog

Well Hello...

Missing Download as a Snapshot, so am I!