Paycheck view under Self-Service

 19 Replies
 0 Subscribed to this topic
 68 Subscribed to this forum
Sort:
Author
Messages
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
OK, here’s one to baffle the best of you. I sure hope you can help me find a solution.

I have one employee who is unable to view his paychecks under Employee Self-Service (ESS). Whenever he clicks on the “Pay Checks” link to see a list of his paychecks, he gets a “Invalid Parameter: CHECK_DATE>” error. He is also unable to view “Year to Date” info. He gets these errors regardless of what PC he tries to log into the Portal with.

I have over 2,000 employees in the same security class and no one else gets this error. That rules out a problem with the “paytyear.htm” file on my web server (var FUTUREPAYMTS = TRUE). I believe I’ve ruled out his PC because I can view my paychecks from his browser (Internet Explorer 7) without error. I’ve also modified my RD30 record to reflect his employee number, logged in to ESS on his machine, and was able to view his paychecks without error.

I’ve gone as far as deleting his user ID from the environment on my application server and recreating it, along with deleting and recreating his RD30 record. An IOS cache refresh along with a reboot of both my application server and web server had no effect. I’ve tried testing with Lawson security turned completely off and yet the error remains.

I had the user log into our backup environment. He was able to view his paychecks without any error. I think that narrows the issue down to something on either our production application server or the production web server.

I am able to run DME queries directly from his browser on his machine, hitting the PRTIME and PAYMASTR tables without a problem, bringing back paycheck data in raw XML.

Lawson GSC is at a loss to explain the error.

Any suggestions from the gurus here on the forum? I’m at my wits end.
_________________ John - Wichita, KS
Sam Simpson
Veteran Member Send Private Message
Posts: 239
Veteran Member
Try this.

1. Let the user login to Lawson.
2. call the refresh profile servlet - http://:/servlet/Profile?_REFRESH=True
3. resfresh ios cache.

hope this helps.
John Henley
Send Private Message
Posts: 3351
What platform / version of IOS and ESS are you running?
Thanks for using the LawsonGuru.com forums!
John
John Henley
Send Private Message
Posts: 3351
Check versions between production and backup server of DME.
Do a compare/diff of paytyear.htm between the two servers.
Between those two you should find the problem.
If that doesn't uncover it, try with security off to rule out a security bug or perhaps orphaned data security rule,etc.
Thanks for using the LawsonGuru.com forums!
John
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
We are on version 8.0.3, service pack 3 of IOS. ESS is version 8.1.0.50 (Yes, I know, very out of date, we're working on it...) Refreshing the user profile followed by an IOS cache refresh had no effect, the error remains.
_________________ John - Wichita, KS
Ragu Raghavan
Veteran Member Send Private Message
Posts: 477
Veteran Member
A while back, I was customizing some ESS/MSS code and I got a similar message:

"Invalid Paraamter B-COR".

Truned out that the Supervisor was defined as "B-COR&HR".

The "&" in the process-level threw a DME call off. I had to do some ESCAPE/UNESCAPE in the code to take care of this. You could check and see if the Supervisor, process_level, department etc for the employee are the same in production/backup and if the production one has any special characters.
Deleted User
New Member Send Private Message
Posts: 0
New Member

What is the code that you have for function GetPayment() in file paytyear.htm?

For the "Pay Checks" link you said you were getting an error of "Invalid Parameter: Check_date>:" Are you getting the same error on “Year to Date”?
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
Thanks so much for your prompt responses thus far. I sincerely appreciate the effort.

I'll have to spend some time looking at the Supervisor, Process_Level, Department etc. to see if there's any special characters. Since I am able to bring up this employee's data under my modified RD30 record, I'm not sure if this would be the cause but I'll certainly take a look. Besides, the backup system database is a mirror of the production database, so the data contained within them is virtually idnetical. The backup database was restored from production backup taken this past Sunday.

Here is the code from the GetPayment() function:

function GetPayment()
{
var dmeObj = new DMEObject(authUser.prodline,"paymastr");
dmeObj.out = "JAVASCRIPT";
dmeObj.index = "pymset4";
dmeObj.field = "check-nbr;check-type,xlt;check-date;per-end-date;"
+ "gross-pay;check-net;net-pay-amt;check-id;employee.full-name;"
+ "employee.last-name;employee.first-name;employee.middle-init;"
+ "employee.fica-nbr;employee.process-level;employee.department;"
+ "employee.addr1;employee.addr2;employee.addr3;employee.addr4;"
+ "employee.city;employee.state;employee.zip;country-code;"
+ "employee.label-name-1;currency-code;cucodes.forms-exp";
dmeObj.select = "status=9";
dmeObj.key = authUser.company+"="+authUser.employee+"=";
// If this is the first call and the flag is set, look for future dated payments.
if (FUTUREPAYMTS) {
dmeObj.select += "&check-date>="+YYYYMMDD1;
}
else {
dmeObj.key += YYYYMMDD1+"->"+YYYYMMDD2;
}

dmeObj.max = "600";
dmeObj.sortdesc = "check-date";
dmeObj.func = "ProcessThisPayment()";
dmeObj.debug = false;
DME(dmeObj,"dmedata");
}

_________________ John - Wichita, KS
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
When the employee clicks on the 'Year to Date' link, the blue ribbon at the top of frame starts animating but nothing ever gets returned. Normally, I should see a drop-down appear listing years (2004 thru 2007).
_________________ John - Wichita, KS
Deleted User
New Member Send Private Message
Posts: 0
New Member
I don't know how much time you want to spend on this. This is a possiblity although I don't know if you really want to do this unless you can figure out a way to recreate the problem in a test environment.

You can make a custom copy of paychecks.htm possibly called xxPayChecks.htm
and also paytyear.htm to say xxPaytYear.htm. You would then modify xxPayChecks to point to xxPayTYear.htm. Then you can then add an alert near the bottom of GetPayment().

Something like

GetPayment()
{
.
.
.
alert('The dmeobj.select is ' + dmeObj.select);
.
.
}

I am guess that variable YYYYMMDD1 is not set correctly. If you confirm that it is not being set correctly then you can step back through say GetDateRange() and hopefully at some point finding out why.

John Henley
Send Private Message
Posts: 3351
John, let's do what Jay is recommending, but instead of putting the alert in to show the dmeObj.select, I want you to change
dmeObj.debug = false;
to
dmeObj.debug = true;

This will give you a pop-up dialog when it does the DME call. Take a screen shot and look closely at the call.
DO NOT post the screenshot since it contains the SSN.
Type that call manually into a browser window, using that employees login and see what happens.
I agree with Ragu that you may have a stray ampersand in the call...or the result.
or perhaps the SELECT part of the DME call is getting messed up.
Thanks for using the LawsonGuru.com forums!
John
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
Thanks for the help folks. I checked the employee's record in both EMPLOYEE and PAEMPLOYEE. I could see nothing there out of the ordinary (no use of funky characters or anything). I'll try and modify the GetPayment() function to see if I can capture the DME query. It might be tough to do it today since I will be upgrading our backup system to ESP7/MSP6.
_________________ John - Wichita, KS
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
Attached is the DME query resulting from changing the debug flag in the GetPayment() function from "false" to "true". I didn't see a SSN in the screenshot so it looked OK to post here. Anything look strange? (I've erased the server name for security purposes.)
Attachments
_________________ John - Wichita, KS
John Henley
Send Private Message
Posts: 3351
I think this is an issue with the URL encoding, which changed with IE7. If I do a DME query without encoding that select, I get the same error you're reporting. If I encode it, it works fine. So, did you post this screen shot from that user's PC/browser? I'm guessing you didn't, based on the fact that the function code that you posted doesn't match the &SELECT part of the DME query in your screen shot. So, try this:

In paytyear.htm on the server where you are having this problem, change:

dmeObj.select = "status=9";
to
dmeObj.select = "status%3D9";

and change:

dmeObj.select += "&check-date>="+YYYYMMDD1;
to
dmeObj.select += "%26check-date%3E%3D"+YYYYMMDD1;

Then stop/restart that web server. From that user's computer, make sure they have the IE cache = everytime setting, and clear the cache.
Have them login and try that page.
Thanks for using the LawsonGuru.com forums!
John
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
I went ahead and made the changes you suggested, updated the DME select statements as you suggested. After I restarted the TomCat service, the issue on the user's PC was RESOLVED! But, and this is a big one, now no one else can view their paychecks or Year-to-Date info. The following error is received: SELECT Option: Field Name Must Preceed Value. COMPANY=1
(I've attached a screen shot below).

Since the needs of the many outweigh the needs of the few (or the one), I restored the original paytyear.htm file.

Where to from here?
Attachments
_________________ John - Wichita, KS
John Henley
Send Private Message
Posts: 3351
Well, I'll take it this is good news, since it shows we're on the right path.
OK, where to go from here. I would copy the paytyear.htm to paytyear_test.htm and change the "dmeObj.debug = true" so you can see the DME call in its entirety...

Are all your users on IE7??

BTW, while you're testing this, you can always copy paytyear.htm to a different file name, e.g. paytyear_test.htm and execute it directly, i.e. http://myserver/lawson/hrnet/paytyear_test.htm
Thanks for using the LawsonGuru.com forums!
John
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
Thanks, John, I appreciate your efforts. Regarding Internet Explorer, we have a mixture of folks using IE7 as well as IE6. I wish it was standardized across the domain, but unfortunately that's not within my realm of control.

For your info, I got the SELECT option error on two machines when trying to view my paychecks, one using IE7 and the other using IE6.

Here's the resulting DME:

Attachments
_________________ John - Wichita, KS
John Henley
Send Private Message
Posts: 3351
It looks like you have some stray encoding-related characters in the &SELECT. For example:
&SELECT=status%253D9%2526check-date
should be:
&SELECT=status%3D9%26check-date

In other words, it's "double-encoding" the percent sign!
Thanks for using the LawsonGuru.com forums!
John
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
Would there be a setting on my web server that controls this, such as something in IIS or IOSRE? This is a strange one since everyone is able to log into my backup system without error. We are right in the middle of upgrading our backup system to service pack 7 and we are shooting for October 13th to upgrade our production system. I'm beginning to think we won't find a resolution to this and that it will magically resolve itself once the upgrade is complete. I know, wishful thinking....
_________________ John - Wichita, KS
John Costa
Veteran Member Send Private Message
Posts: 154
Veteran Member
Would the user's PC be doing the double-encoding somehow?
_________________ John - Wichita, KS