Tuesday, February 4, 2014

Tracking Actual Hours Worked in Payroll

There is no good excuse for my absence from blog land in the past few months.  It seems like I came out of Technical Airlift and GPUG in to a whirlwind of holidays, projects, and January 1st go lives.  So in all of that, the rhythm of posting to the blog just sort of faded.  But with a new year comes renewed commitment!  I know Steve managed to post last week, so I don't want to be outdone! Especially by a developer! :)

So, here I go.  A common theme lately among our payroll implementations is the need to track actual hours worked, not just what a person was paid for.

You: "But wait, why would someone work more or less hours than what they are paid for? "
Me: "Well, if someone gets paid a day rate for a certain job, or sometimes salaried people"
You: "Oh, well, wouldn't a timeclock track that?"
Me: "Sure, but a lot of times these folks aren't part of the timekeeping system."

Well, maybe "stunned silence" is a bit melodramatic.  But we have seen an uptick in the need to track the hours worked, sometimes for reporting and analysis purposes, or for communicating to employees.

Fortunately, this is easy enough to do in Dynamics GP.  Simply set up a piecework pay code, Setup-Payroll-Pay Code:

We pick piecework so the hours don't interfere/add to the existing hours that are being calculated based on the salary (and hourly if applicable) pay codes.  If you have an instance where employees are not using salary or hourly pay codes for their base pay, you could technically use an hourly pay code to do this.  The two key fields, in any case are the Pay Type (in this case, Piecework) and the Pay Rate (which should always be zero).

You can then assign the pay code to the employee using Cards-Payroll-Pay Code.  Make sure that the rate is still zero, because we are not using this code to pay the employees- only to record their hours worked.  Then you can record the hours worked (or import them) using Transactions-Payroll-Transaction Entry.

A simple thing to do, but then the hours are available for reporting out of the payroll module, and will appear on employee's pay stubs.  You can use this same process also to record miles driven (use a different pay code, of course).  When reimbursing mileage, you will want to use a Business Expense type pay code so that the reimbursement does not add to gross wages.  But you can record the actual miles driven using a Piecework type pay code, to show employees the miles recorded.

Christina Phillips is a Microsoft Certified Trainer and Dynamics GP Certified Professional. She is a senior managing consultant with BKD Technologies, providing training, support, and project management services to new and existing Microsoft Dynamics customers. This blog represents her views only, not those of her employer.


MikePeck said...

I am trying to find a means of tracking YTD Hours Worked for Part Time employees. When these employees' accumulated hours approach 1,000 YTD, they must be setup in Payroll for some benefits they become eligible for at that point. I want to provide the Payroll administrator's with an alert that the threshold is approaching, in time for them to complete the required setup.
I don't want anything to appear on the employees paystubs that would cause them oncern.

MikePeck said...

I am trying to track Hours worked YTD for Part Time Employees, so that an alert can be sent to Payroll Administrators, as they approach 1,000 hours and therefore become eligible for certain benefits. This should be timely enough to allow the setup for those benefits to be completed as the employees reach eligibility.

I do not want the mechanics of tracking the hours to appear on the employees check stubs.

At Year end, the accumulation of hours must be reset to -0- for the new year.

Tyler Mac said...

Here is one way to track Salary hours to make sure they don't get paid for more than 80. This however will pay them less than their base salary amount if you pay them less than the base period hours. (Ex. 72hrs under 80 etc.)

Create a pay code based on Hourly. Then when you set it up on the employee card, put their salary amount in the Maximum Field on the pay code card. Again I know this will only work for not paying them more than their base salary amount and allow you to track hours over their base hours per pay period.