Archive for the ‘bridge application’ Category

Reaching the point of diminishing returns on a project

Friday, September 21st, 2007


Over the past month, I have been working on a project to automate payroll entry for a client that has close to 300 employees and is growing. Naturally, it is the company’s best interest to get this payroll automated as much as possible.

To do this I’ve been developing an application to bridge the payroll info to Microsoft Great Plains Integration Manager.

One of the criteria I’ve used to evaluate a client’s payroll is a consistent layout in a good format, so that I can tell the program where to map regular hours, overtime, cash reimbursements, etc. In some cases I’m able to tweak the payroll to make it into a layout that is consistent enough for me to automate.

This particular client is a construction company, and the only electronic version of the payroll is a text file that is not delimited. The file is basically a report from the client’s system, and it has page headers and department footers, as well has breakdowns of withholding, etc. Most of that I can ignore in the program.

My colleague was able to import it into Microsoft Excel, using spaces as the delimiter. From there I saved the file as tab-delimited text, the format used in the other bridge applications I’ve developed.

The big problem is the inconsistent layout, which has come from using spaces to delimit the text, depending largely on how much detail is on a particular line of text. Look at the following 3 lines of text:

  • E 22 Per Diem – C AZ 3 99
  • E 22 Per Diem – C AZ 3 XYZ111 99
  • E 22 Per Diem – C 99

In each of these lines, the payroll item is Per Deim, and the amount is 99. When you space-delimit the lines the amounts are in different columns.

This is just one major aspect of complexity that has come from my attempt to automate the payroll. After talking it over with my boss, we realize that we’ve come to the point of diminishing returns.

I’m off this project until there is another way to parse the payroll information and am able to move on to another project that’s in the queue.

Related tags:

Knowing where to fix a problem pays off in quick response

Monday, July 9th, 2007

I was on the phone with a Payroll Specialist about 30 minutes ago. One of the company’s biggest clients is a trucking company. We set them up back in January with a bridge application to facilitate payroll entry. The client emails their payroll in a spreadsheet with a consistent layout that I and my coworker mapped with the program, and their payroll needs to be done early Monday morning for a Tuesday check date.

Last week, the client left the first column blank for one of their employees, and the payroll specialist didn’t find out he wasn’t paid until the day after the payroll went out. She called me this morning to have me check to see if the program would do that again. In less than 10 minutes, I was able to diagnose and fix the problem so that it won’t happen again.

The code looked for something in that first column before mapping the columns into specific payroll items. In this case, the data in the first column isn’t as important as that in, say, the third column. I changed the code that does the test to check the third column instead.

I’m pleased that my knowledge of how this program works lets me respond so quickly and adeptly to a problem like this.

Microsoft Great Plains – Integration Manager in action

Monday, June 18th, 2007

The company uses a version of Microsoft Great Plains (GP) that’s been customized for the PEO industry. One piece of that is Integration Manager (IM). I’ve talked about the bridge application a number of times before. With an Excel file from a client and, with some sophisticated programming, we create a tab-delimited text transaction file for Integration Manager. We’ve set up some profiles in Integration Manager to upload payroll transactions into a batch in the Great Plains system, saving a lot of time and money. In some cases we’ve seen a 91% drop in the amount of time it takes to run a payroll.

Over the next few weeks or so, I’ll be running Integration Manager for the Payroll department. Here are some numbers for today:

Industry Transactions Emps
Trucking 149 51
Trucking 168 90
Restaurant 86 43
Restaurant 94 48
Restaurant 72 39
Restaurant 82 34
Restaurant 94 40
Restaurant 97 40
Restaurant 87 47
Manufacturing 173 98


1002 transactions, for 530 employees of 10 clients.

Migrating Existing Access Applications to Access 2007

Wednesday, April 25th, 2007

This post is one of the more esoteric ones where I delve into the geeky details of some of my programming work. I know – it’s really sexy, isn’t it?

I have mentioned the bridge application I developed that helps make payrolls run faster, helping client employees get paid faster, and so forth, using Microsoft Access 2003 with VBA, ADO, Excel, Office, etc.

Some members of the company are starting to migrate to Office 2007, and we can see the entire organization moving there soon. A few weeks ago, I tried opening and running one of the bridge applications in Access 2007, and it bombed horribly, specifically in how I’ve written it to use the Office 11 FileSearch object.

I just found a couple of few documents on MSDN and TechNet that I hope will help understand what is involved in the migration:

Okay, to be honest, I picked that last item because it sounds interesting.

Handling errors in the payroll bridge application

Friday, March 16th, 2007

Clients email the company their payroll files, and the columns on the payroll indicate Regular Hours, Overtime, Vacation, and so forth. To make the bridge application work, I and the other developer map the program that assigns payroll items based on this layout. It only works, however, when the layout is consistent. Whenever a client changes it by adding or deleting a column, the program generates an error.

One thing I have found so helpful in resolving errors is the Error Handler function. I use the Err object in Visual Basic, but I also add additional information such as the module name and procedure name where the error occurred. The user gets a message box, which is helpful for them, but I also wrote the program to create a log file with the same information so that I can go back and see errors that have occurred.

Bad Behavior has blocked 556 access attempts in the last 7 days.